neděle 8. března 2015

Antlr - vygenerování potřebných souborů

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