使用Antlr的C接口(3.4版)

昨天听同事介绍了Antlr 4,它是一个非常强大的词法、语法分析器辅助生成工具,比之前用Flex + Bison强太多倍。

遗憾的是,当前的v4只支持Java,暂不支持C、C++,于是降级了一把,尝试了一下在3.4版上使用Antlr C。

要说明的是,这不是一篇原创文章,我参考了两篇文章,如下:

《用ANTLR3实现规则解析—-1-安装》 http://blog.csdn.net/wfp458113181wfp/article/details/9148577

《ANTLR Example in C》 http://contrapunctus.net/blog/2012/antlr-c

并针对实际情况,对一些步骤做出了修改、补充,于是有了本文。

一、编译安装 antlr c library

二、下载 antlr 3.4 jar包

尽管我们安装了c library,但是从.g文件,到各种.h .c文件的过程,还是要依赖antlr java的。

特别注意:必须要用3.4的jar包,我试了3.5.1,果断不行……

三、编写语法文件(.g)

后续的语法,驱动程序,都是直接照搬开头提到的两篇参考文献,仅做了必要的修改。

四、生成c中间文件 (Antlr Target C)

五、编写驱动文件

这里同样照搬的,main.cpp

六、编译,测试

生成的可执行文件是test

测试数据为:

测试结果:

 

Leave a Reply

Your email address will not be published.