Prerekvizity
Za prvé je potřeba mít vytvořený soubor s gramatikou, která bude mít koncovku .g nebo .g4. V našem příadě to bude soubor ASTquery.g. Pro začátek bude mít soubor následující obsah (obsah jenom pro otestování vygenerování):grammar ASTquery;
r : 'hello' ID ;// match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip; // skip spaces, tabs, newlines
Další nezbytnou součástí je samozřejmě antlr, který je možné stáhnout z na adrese http://www.antlr.org/download.html (Complete ANTLR 4.5 Java binaries jar).
Vytvoření potřebných tříd z gramatiky.
Jestliže máme soubor s gramatikou (ASTquery.g) a antlr (antlr-4.5-complete.jar) v jedné složce můžeme spustit následující příkaz pro vygenerovánní tříd zpracovávající gramatiku:java -classpath antlr-4.5-complete.jar org.antlr.v4.Tool ASTquery.g
budou vygenerovány soubory:
ASTqueryParser.java
ASTqueryLexer.java
ASTquery.tokens
ASTqueryBaseListener.java
ASTqueryLexer.tokens
ASTqueryListener.java
Testování gramatiky
1) Kompilace souborůjavac -cp antlr-4.5-complete.jar *.java
2) Spuštění
java -cp antlr-4.5-complete.jar:. org.antlr.v4.runtime.misc.TestRig ASTquery -r -tree
po tomto příkazu bude terminál očekávat zápis v zadané gramatice. Ukončení vstupu provedeme stiskem Ctrl+D a výstupem získáme syntaktický strom.
Spuštěním bez parametrů získáme nápovědu testovacího programu
$ java -cp antlr-4.5-complete.jar:. org.antlr.v4.runtime.misc.TestRig ASTquery
java org.antlr.v4.runtime.misc.TestRig GrammarName startRuleName
[-tokens] [-tree] [-gui] [-ps file.ps] [-encoding encodingname]
[-trace] [-diagnostics] [-SLL]
[input-filename(s)]
Use startRuleName='tokens' if GrammarName is a lexer grammar.
Omitting input-filename makes rig read from stdin.
Zdroje:
https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Getting+Started+with+ANTLR+v4
http://www.antlr.org/download.html
Žádné komentáře:
Okomentovat