Antlr系列:一 安装和HelloParser

ANTLR是一个支持多语言的自动生成解析器的框架,在软件开发很多领域内都有很好的应用。本文从入门开始介绍ANTLR的使用。

ANTLR的安装步骤

1)        ANTLR需要java的支持,首先安装jdk

下载地址:http://java.sun.com/javase/downloads/index.jsp

安装完毕JDK后需要设置好系统的环境变量,如下:

a)      新建环境变量 JAVA_HOME=D:/Java/jdk 1.6.0 _03

b)      Path环境变量添加 %JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;

c)      环境变量 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 distributionANTLR也提供了工具 ANTLRWorks 可以编辑语法文件。

a)      解压压缩包后的文件目录可以作为安装目录。

b)      安装完毕后就需要设置环境变量。为CLASSPATH 添加:D:antlr- 3.0.1 /lib/antlr-3.0.1.jar;D:antlr-3.0.1/lib/antlr-runtime-3.0.1.jar;Cb/stringtemplate-3.1b1.jar;D:/antlr-3.0.1/lib/antlr-2.7.7.jar; 其中 D:antlr- 3.0.1 ANTLR的目录。因为 ANTLR v3是使用v2stringtemplate写的,所以这两个jar都得加入CLASSPATH

Hello Parser

1)        定义语法文件文件T.g

 

grammar T;

/** Match things like "call foo;" */

r : 'call' ID ';' {System.out.println("invoke "+$ID.text);} ;

ID: 'a'..'z' + ;

WS: (' ' |'/n' |'/r' )+ {$channel=HIDDEN;} ;

 

 

2)        使用Antlr的编译语法文件

会生成Tlexer.java Tparser.java两个文件可以使用。

 $ java org.antlr.Tool T.g
ANTLR Parser Generator Version 3.0 1989-2007
$ ls
T.g TLexer.java T__.g
T.tokens TParser.java
$

3)        定义测试程序类

 

import org.antlr.runtime.*;

public class Test {

public static void main(String[] args) throws Exception

{

// create a CharStream that reads from standard input

ANTLRInputStream input = new ANTLRInputStream(System.in);

// create a lexer that feeds off of input CharStream

TLexer lexer = new TLexer(input);

// create a buffer of tokens pulled from the lexer

CommonTokenStream tokens = new CommonTokenStream(lexer);

// create a parser that feeds off the tokens buffer

TParser parser = new TParser(tokens);

// begin parsing at rule r

parser.r();

}

}

 

 

4)        编译执行

需要注意的是输入结束符是^Z

$ javac TLexer.java TParser.java Test.java
$ java Test
 call foo;
 ^Z
 invoke foo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值