读hibernate源码:解决org.hibernate.hql.antlr包为空

一直想学习下hibernate的源码,但是一直杂事不断,总是忘记,今天忽然想起来,拖了好几个月了,于是把hibernate的src目录下的内容导入eclipse的新项目中,准备空了学习下。
导入源码,配置好build path,却发现还有好多错误,竟然是org.hibernate.hql.antlr包里没有类,只有一个package.html文件,打开,里面写着:
[color=blue]NOTE: The classes in this package are generated from the ANTLR grammar files,
do not register them into version control.[/color]
大略意思是这个包的类是由ANTLR语法文件产生的,不包含在版本控制中。
疑惑,ANTLR语法是什么,不包含在这里又放在哪里了?
于是查看hibernate的其他目录,看到了一个\grammar目录,其中有三个.g文件,用editplus打开,是包含header,options,tokens...之类的结构,有点像一个文法定义的形式,看到里面定义的类,就是缺失的类,那么,应该是由这个目录产生源码了,那怎么产生呢?
又翻了翻,最外面有几个build.*的文件,build.bat,build.sh,build.xml,.bat是在windows下的,.sh是linux下的,都打开看了看:java -cp "lib/ant-launcher-1.6.5.jar" ...,看不明白,再打开build.xml,好长,看看里面有没有grammar,于是搜索关键字'grammar',竟然真有,那或许就是从这里产生吧,那么就执行下build.bat试一下。
执行完build.bat,在 该目录下产生了一个build子目录,打开,是gensrc子目录,一级级打开,最里面就是缺失的包,太好了,拷到对应的目录下,刷新,eclipse不包错了,ok

然而,还不知道什么是antlr,google了一下,找到一个定义:
[color=blue]ANTLR(ANother Tool for Language Recognition)[/color]它是这样的一种工具,它可以接受词文法语言描述,并能产生识别这些语言的语句的程序。作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,语言包括Java,C++,C#.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值