您的位置:首页 > 其它

antlr-hibernate

2009-12-02 14:24 99 查看
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.定义TreeParser类,根据Parser类分析出来的AST(抽象语法树)进行动作。
用Parser把AST抽取出来,再用TreeParser进行动作的Double Pass Builder模式,
解耦了Parser和Generation,再配合Template,是Antlr推荐的最佳模式。

log4j.logger.org.hibernate=debug
#log4j.logger.org.hibernate.hql=debug
#log4j.logger.org.hibernate.hql.ast.AST=debug
#log4j.logger.org.hibernate.SQL=debug
#log4j.logger.org.hibernate.type=debug
#log4j.logger.org.hibernate.tool.hbm2ddl=debug
#log4j.logger.org.hibernate.cache=debug
#log4j.logger.org.hibernate.transaction=debug
#log4j.logger.org.hibernate.jdbc=debug
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=debug
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐