A Gentle Introduction to ANTLR Syntax,在《程序员》2004年3月有中文的版本。
ExprLexer lexer = new ExprLexer(System.in); ExprParser parser = new ExprParser(lexer); parser.expr(); AST ast = parser.getAST(); ExprTreeParser treeParser = new ExprTreeParser(); int x = treeParser.expr(ast);
1.定义Lexer类,在类中定义各种Token如 From , Where,=,<>.......
Lexer负责把读入的普通文本识别成Token串。2.定义Parser类,在类中使用BNF语法,递归定义各种句子,如whereStatement、FromStatement、Select Statement。
Pattern负责把读入的Token串匹配成句子,翻译出AST(抽象语法树)
有些简单的应用,也可以在本层现炒现卖,完成所有动作,属于Single Pass Builder。3.定义