1. JAVA环境
2. Antler 工具包:
antlr-3.5.1-complete-no-st3.jar
路径加入classpath
3. cmd命令行:
java org.antlr.Tool XXXXX.g
(此命令可生成.java或.cs文件等,因.g文件中内容而异)
1).g (转成.cs) 实例:
grammar SimpleCalc; options { language=CSharp2; } tokens { PLUS = '+' ; MINUS = '-' ; MULT = '*' ; DIV = '/' ; } @members { static void Main(string[] args) { string source = Console.ReadLine(); SimpleCalcLexer lex = new SimpleCalcLexer(new ANTLRStringStream(source)); CommonTokenStream tokens = new CommonTokenStream(lex); SimpleCalcParser parser = new SimpleCalcParser(tokens); try { Console.WriteLine(parser.expr()); } catch (RecognitionException e) { Console.Error.WriteLine(e.StackTrace); } Console.ReadLine(); } } //PARSER RULES expr returns [int value] : e=term { $value=$e.value; } ( PLUS e=term { $value += $e.value; } | MINUS e=term { $value -= $e.value; } )*; term returns [int value] : e=factor { $value = $e.value; } ( MULT e=factor { $value *= $e.value; } | DIV e=factor { $value /= $e.value; } )* ; factor returns [int value] : NUMBER { $value = int.Parse($NUMBER.text); }; //LEXER RULES NUMBER : (DIGIT)+ ; WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ { $channel = HIDDEN; } ; fragment DIGIT : '0'..'9' ;