ANTLR
Wprowadzenie do ANTLR v3
Szukaj…
Instalacja i konfiguracja
Jak zainstalować ANTLR w Eclipse
(Ostatnie testy na Indigo i ANTLR IDE 2.1.2)
- Zainstaluj Eclipse.
- Pobierz pełny słoik binarny ANTLR zawierający ANTLR v2. Wypakuj do katalogu tymczasowego. Skopiuj folder antlr-nn do odpowiedniej stałej lokalizacji, na przykład do tego samego folderu, w którym zainstalowano Eclipse.
- Dodaj witrynę aktualizacji IDE ANTLR do środowiska Eclipse.
- W Eclipse kliknij Pomoc i wybierz Zainstaluj nowe oprogramowanie.
- Kliknij przycisk Dodaj…
- W oknie Dodaj repozytorium, w polu Lokalizacja wpisz http://antlrv3ide.sourceforge.net/updates i wpisz w polu Nazwa coś takiego jak ANTLR IDE, a następnie kliknij przycisk OK, aby wrócić do okna Dostępne oprogramowanie.
- Zaznacz pole ANTLR IDE vn.nn i klikaj, aż zostanie zainstalowany. Zaćmienie prawdopodobnie ponownie się uruchomi.
- Skonfiguruj IDE ANTLR.
- W głównym oknie Eclipse kliknij Okno, a następnie Preferencje.
- W lewym okienku rozwiń ANTLR i wybierz Konstruktor.
- W prawym okienku kliknij przycisk Dodaj…
- W oknie Dodaj pakiet ANTLR kliknij opcję Katalog… i przejdź do lokalizacji folderu antlr-nn, a następnie kliknij przycisk OK.
- Kliknij przycisk OK, aby zamknąć okno Dodaj pakiet ANTLR.
- Wybierz Code Generator w lewym panelu i kliknij folder względny Projektu w prawym panelu. Wpisz nazwę folderu. Przykłady: antlr-java lub antlr-generated.
- Wybierz inne parametry konfiguracji, ale NIE sprawdzaj –nfa lub –dfa w części Ogólne w oknie budynku. Jeśli zaznaczone, spowodują błędy ANTLR uniemożliwiające wygenerowanie plików Java w folderze wyjściowym.
- Kliknij przycisk OK, aby zamknąć okno Preferencje.
- Utwórz nowy projekt Java i włącz obsługę ANTLR.
- W głównym oknie Eclipse przejdź do Plik, Nowy, Projekt Java. Kliknij przycisk Dalej, wpisz nazwę projektu i kliknij przycisk Zakończ.
- Aby włączyć obsługę ANTLR dla projektu, w oknie Eksploratora pakietów (lewy panel) kliknij prawym przyciskiem myszy właśnie utworzony projekt i wybierz Konfiguruj, Konwertuj na projekt ANTLR.
- Dodaj pełny plik jar ANTLR do projektu: kliknij prawym przyciskiem myszy projekt i wybierz Właściwości, Ścieżka kompilacji Java, kliknij Dodaj zewnętrzne pliki JAR…, przejdź do pliku jar ANTLR, wybierz go i kliknij OK. Kliknij przycisk OK, aby zamknąć okno właściwości projektu.
- Utwórz gramatykę ANTLR.
- Utwórz nową gramatykę ANTLR: kliknij prawym przyciskiem myszy folder src projektu, a następnie Plik, Nowy, Inny, rozwiń ANTLR i wybierz Połączoną gramatykę. Kliknij Dalej, wpisz nazwę gramatyki, wybierz opcję Język i kliknij Zakończ.
- Plik „.g” jest tworzony z wybranymi opcjami i pustą regułą. Dodaj opcje język = Java, @header, @lexer :: header i @members instrukcje u góry (patrz przykład). Automatyczne uzupełnianie to najprostszy sposób na ich dodanie (naciśnij klawisz CTRL-spacja, aby wyświetlić listę autouzupełniania).
- Uratuj gramatykę.
- Po zapisaniu folder zawierający wygenerowany kod Java dla gramatyki powinien pojawić się w Eksploratorze projektów. Jeśli nie, upewnij się, że opcje –nfa lub –dfa nie są zaznaczone w Preferencjach ANTLR w obszarze Ogólne w oknie Budowanie (krok 4g). [Potwierdź, jeśli są potrzebne: sprawdź, czy zmienna środowiskowa CLASSPATH wskazuje Java7, która odpowiada instalacji Eclipse (32 lub 64 bity), a zmienna środowiskowa Ścieżka Windows miała SDK Java7.]
- Aby uniknąć błędów Java „nie można rozwiązać z typem”, kliknij prawym przyciskiem myszy folder zawierający wygenerowany kod Java, a następnie Utwórz ścieżkę, użyj jako folderu źródłowego.
PRZYKŁADOWA GRAMATYKA KOMBINOWANA
grammar test; //must match filename.g
options {
language = Java;
}
@header { //parser
package pkgName; //optional
import java.<whatever you need>.*;
}
@members { //parser
// java code here
}
@lexer::header { //lexer
package pkgName; //optional
import java.<whatever you need>.*;
}
@lexer::members {
// java code here
}
/*------------------------------------------------------------------
* PARSER RULES (convention is all lowercase)
*------------------------------------------------------------------*/
parserule: LEXRULE;
/*------------------------------------------------------------------
* LEXER RULES (convention is all uppercase)
*------------------------------------------------------------------*/
LEXRULE: 'a'..'z';
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow