JavaCC学习进阶(一) 通过JavaCC实现HelloWorld
? ? ? 以前接触过JavaCC,但没怎么深入.周末花了点时间大概学习了下.至于概念性的东西,网上一搜一大把,这里还是实战为主.一步步的深入.毕竟这东西不常用,哪天突然要用了,回过来看下,或许就能想起.由于我也是初学,博客顶多充其量是个笔记.希望对自己有用的同时,对大家也有用.
? ? ? JavaCC也算得上是一门语言了,不过比较特殊.以前看Lucene源码的时候接触过,但由于Lucene的搜索语法并不复杂,所以大概看了下便能看懂.最近开始看Pig源码,其中Pig Latin也是通过JavaCC解析.由于Pig Latin相对复杂.可能Lucene只是实现SQL中的like,而Pig则是所有.所以Pig Latin相对就要复杂多了.如此,JavaCC也不得不去熟悉下.
? ? ? ?这里先贴代码,通过JavaCC实现HelloWorld.
?
?
? ?看起来很简单,我这里取名为HelloWorld.jj.然后通过JavaCC生成,JavaC编译,以及运行.如下步骤:
? ?1)JavaCC编译
? ? ? javacc HelloWorld.jj
? ? ? 会有如下提示,则表示编译成功:
? ? 然后可以在你的HelloWorld.jj文件所在的目录下,发现会生成如下文件:
? ??HelloWorld.java ?HelloWorldConstants.java ?HelloWorldTokenManager.java?ParseException.java?
? ??SimpleCharStream.java ?Token.java?TokenMgrError.java
? ?
? ?2)编译java文件
? ? ? javac *.java
? ?3) 运行HelloWorld
? ? ? java HelloWorld
?
? 如果控制台看到Hello World就标明这个JavaCC HelloWorld之旅成功!