Stworzyć translator skryptów napisanych w Bash-u (plik .bs) na ich ekwiwalenty napisane w Windows Power Shell (plik .ps1).
- Java 17 - Link do strony kompilartora którego użyliśmy.
- Maven - jako narzędzie do budowy projektu.
- ANTLR4 - generator lexerów i perserów, w implementacji użyliśmy Listener -a.
- Openjfx - GUI projektu.
- SceneBuilder - Aplikacja pomagająca w tworzeniu interfejsów graficznych
- Junit - do testów aplikacji.
- Inne pomniejsze dependencies np. do parsowania plików .json lub .csv.
Aplikację można użytkować na dwa sposoby:
- Jako zwykły program do szybkiej translacji z wiersza poleceń.
- Jako pełny edytor skryptów z bierzącą translacją.
Głównym determinantem, który z tyrybów będziemy użytkować jest to, czy został podany argument odpowiedzialny za start GUI programu.
Nie podano [-g | -G | --GUI]
jako argument aplikacji.
Lista dostępnych argumentów do podania w lini komend:
[-i | -I | --Input] <Dane>
Dane to ścieżka do pliku
- tylko ten jeden skrypt zostanie przetworzony.Dane to ścieżka do folderu
- wówczas wszystkie pliki w nim zostaną potraktowane jako pliki do translacji.- W obu przypadkach pliki nie muszą mieć rozszerzenia
.bs
.
[-o | -O | --Output] <Dane>
Dane to ścieżka do folderu
- w danym folderze zostaną utworzone pliki o adekwatnej nazwie i rozszerzeniu.ps1
.
[--NoComments]
- Flaga ta spowoduje, że komentarze z pliku wejściowego nie są umieszczane w pliku wynikowym.
[--NoWarnings]
- Flaga ta powoduje nie wyświetlanie się ostrzeżeń translatora o niedokładnościach translacji.
[--CustomSuffix]
Dane to string
- Jest to sufix nazwy wygenerowanego pliku umieszczany:<Nazwa pliku wejściowego bez rozszerzenia><Sufix pliku>.ps1
- Domyślna wartość to
_out
.
[-g | -G | --GUI]
- Flaga ta sprawia włączenie się GUI oraz neguje wszystekie funckje aplikacji dotyczące lini poleceń.
[-h | -H | --Help]
- Wypisuje informacje o wszystkich możliwych argumentach programu.
[-v | -V | --Version]
- Wypisuje informacje o wersji prograu prosto z pliku .pom mavena.
Uwagi:
- Flagi i argumenty oczywiście podajemy bez nawiasów kwadratowych.
- Kolejność podanych argumentów nie ma znaczenia, jeżeli tylko dane do poszczególnych argumentów są prawidłowo ułożone.
Podano [-g | -G | --GUI]
jako argument aplikacji.
-
W tym oknie wyświetla się wybrany skrypt w Bashu (.sh)
-
W tym oknie pojawi się skrypt przetłumaczony do Powershell (.ps1)
-
To pole tekstowe przeznaczone jest na ścieżkę do skryptu Basha, który chcesz przetłumaczyć. Można ją wpisać ręcznie, albo wcisnąć przycisk "Choose", wtedy pojawi się okno wyboru pliku
-
Tutaj należy podać katalog wyjściowy w którym znaleźć ma się tłumaczenie. Można go podać ręcznie, albo wcisnąć przycisk "Choose", wtedy pojawi się okno wyboru katalogu
-
W tym polu tekstowym znajduje się suffix doklejany do nazwy pliku wejściowego, aby utworzyć nazwę pliku wyjściowego
-
Jeżeli to pole wyboru zostanie zaznaczone, translator pominie tłumaczenie/przepisywanie komentarzy z pliku wejściowego
-
Jeśli naciśnie się ten przycisk, to plik wejściowy zostanie przetłumaczony, a w dużym polu tekstowym pop prawej (2.) pojawi się przytłumaczony kod
- Potrzebana jest wspomniana wcześniej JAVA 17 z linku na początku pliku.
- Wejdź w sekcję
Releases
w repozytorium projektu. - Pobierz plik
.jar
z dostępnych asetów. - Zmień katalog na ten, gdzie pobrałeś plik.
- Użyj komendy:
java -jar .\Kompilatory2023-Translator-Bash-na-Windows-PowerShell.jar
- Wszystkie wyrazy oddzielone spacjami są traktowane jako kolejne argumenty z lini poleceń dla programu.
- Całość dokumentacji znajduje się w: [Link]
- Gramatyka w oparciu o którą wygenerowano parser i lexer: [Link]
- Zbiór tokenów w oparciu o który wygenerowano parser i lexer: [Link]
- Przykładowe pliki wyjściowe wygenerowane przez program znajdują się w: [Link]
- Przykładowe skrypty w bashu w oparciu o które stworzono powyżej zamieszczone pliki: [Link]
Jeżeli wykryłeś jakikolwiek błąd, nieprawidłowość w działaniu programu lub też nieścisłość w dokumentacji stwórz Github Issue
i przypisz jednego z autorów podanych poniżej.
- Dominik Breksa -
dominikbreksa@student.agh.edu.pl
- [Link do githuba] - Szymon Jurecki -
sdjurecki@student.agh.edu.pl
- [Link do githuba]