antlr学习 - wnh5/myStudy GitHub Wiki

http://www.antlr.org/download.html https://www.ibm.com/developerworks/cn/java/j-lo-antlr/ https://github.com/antlr/antlr4/blob/4.6/doc/index.md http://blog.csdn.net/dc_726/article/details/45399371 --一定要CLASSPATH设置,下面的调用不需要设置cp,否则会出现"Can’t load Hello as lexer or parser" SET CLASSPATH=.;D:/study/antlr/antlr-4.7-complete.jar;%CLASSPATH% doskey antlr4=java org.antlr.v4.Tool $* doskey grun =java org.antlr.v4.gui.TestRig $* cd D:/study/antlr/hello ` -----------------Hello.g4---------------------- **

  • Define a grammar called Hello */ grammar Hello; 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 -----------------Hello.g4---------------------- ` java org.antlr.v4.Tool Hello.g4 javac Hello*.java --ctrol+z之后回车,第一个参数是grammar Hello ,第二个参数rule名 java org.antlr.v4.gui.TestRig Hello r -tree java org.antlr.v4.gui.TestRig Hello r -gui

cd D:/study/antlr/expr java org.antlr.v4.Tool Expr.g4 javac Expr*.java java org.antlr.v4.gui.TestRig Expr prog -tree java org.antlr.v4.gui.TestRig Expr prog -gui java org.antlr.v4.gui.TestRig Expr multExpr -gui

Antlr 的抽象语法树语法--语法和处理 ` ------------------------------Count----------------------------- grammar Count;

@header { package foo; }

@members { int count = 0; }

list @after {System.out.println(count+" ints");} : INT {count++;} (',' INT {count++;} )* ;

INT : [0-9]+ ; WS : [ \r\t\n]+ -> skip ; ------------------------------Count----------------------------- ` cd D:\study\antlr\countint java org.antlr.v4.Tool Count.g4 javac Count*.java rm -fr foo mkdir foo mv *.class foo/ --ctrl+z 结束输入 java org.antlr.v4.gui.TestRig foo.Count list java org.antlr.v4.gui.TestRig foo.Count list -tree java org.antlr.v4.gui.TestRig foo.Count list -gui