您的位置:首页 > 其它

语法分析 词法识别 工具 ANTLR3.x 的安装(windows)与使用

2007-11-05 16:41 976 查看
最近,项目中需要用到做一个小的编译系统。

熟悉编译原理的人一定知道lex和yacc。他们就是俗称的编译器的编译器。
如果需要做词法分析和语法分析,可以使用这两个工具。
但是lex和yacc都是基于c语言的,而且自动生成的语言有很多宏定义十分难懂。

(lex的开源实现有flex,yacc的开源实现有bison).
我使用flex和bison自动生成了一下,生成的代码在vc中使用有很多问题,需要修正。
(网上有些兄弟介绍了修正的方法)。

后来发现了ANTLR这个工具。ANTLR是开源的工具。
ANTLR具有面向对象的特点,自动生成的代码易于读懂,而且能生成c# ,java,c++等很多代码。我个人认为是一个比较好的,可以取代lex和yacc的工具。

下面介绍ANTLR的安装步骤,然后用一个小的例子来结束:
1。ANTLR需要java的支持,首先安装jdk。
下载地址:]http://java.sun.com/javase/downloads/index.jsp
安装完毕JDK后需要设置好系统的环境变量,(熟悉java的哥们可以估计很熟悉下面)
如下:
(1)新建一个环境变量 JAVA_HOME=D:\Java\jdk1.6.0_03
(2)为Path环境变量添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(3)新建环境变量 CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

2。开始安装ANTLR,我使用时的最新版本为3.0.1
下载地址:http://www.antlr.org/download.html
我下载的为 ANTLR 3.0.1 source distribution
ANTLR也提供了工具 ANTLRWorks 可以编辑语法文件。
安装完毕后就需要设置环境变量
为 CLASSPATH 添加:D:antlr-3.0.1\lib\antlr-3.0.1.jar;D:antlr-3.0.1\lib\antlr-runtime-3.0.1.jar;D:\antlr-3.0.1\lib\stringtemplate-3.1b1.jar;D:\antlr-3.0.1\lib\antlr-2.7.7.jar;
其中 D:antlr-3.0.1为我安装ANTLR的目录。你要修改为你的安装目录。
因为 ANTLR v3是使用v2和stringtemplate写的,所以这两个jar都得加入CLASSPATH。

3。可以开始编辑语法文件了。编辑语法文件的过程在后面介绍。
这里介绍生成的命令:
java org.antlr.Tool SimpleC.g
其中 SimpleC.g为你的语法文件的名称。

ANTLR v3的语法与v2有所不同。我也研究了好久。
你也可以直接下载ANTLR v3的例子,自己研究,
下载连接:http://www.antlr.org/download/examples-v3.tar.gz
如果你有V2的语法文件,ANTLR的网站上也有v2到v3的转换程序可以使用。

有一点需要注意的是,当你使用ANTLRWorks时,将x.g文件放在中文目录下,
如果x.g中定义了一个grammar,他会自动生成一个词法x__.g的文件。中间会有
文件注释,ANTLRWorks会报错。

下面介绍一个简单的加法计算的语法文件:(V3)

grammar Caculator;
options
{
language = CSharp;
output=AST;
ASTLabelType=CommonTree;
}
@header
{
}
expr : INT PLUS INT;
PLUS : '+'
;
INT : ('0'..'9')+
;

切记文件名称也要为 Caculator.g
自动会生成两个文件,分别是两个类 CaculatorLexer和CaculatorParser

更复杂的应用,我正在研究。
最后推荐一个资料:

附件:http://down.51cto.com/data/2348726
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息