antlr-hibernate

本文介绍ANTLR解析器的基础知识,包括Lexer、Parser及TreeParser的工作原理。通过ANTLR可以将输入文本转换为Token序列,并进一步构建抽象语法树(AST),最终通过TreeParser对AST进行遍历并执行相应操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值