Antlr系列-入门篇

Antlr版本:3.4

Antlr下载地址:http://www.antlr.org/download.html

Antlr字节码包在lib下。

 

 

实例:

1、创建L.g文件,内容如下:

 

class SimpleParser extends Parser;

entry : (d:DOB n:NAME a:AGE(SEMI)
      { 
        System.out.println(
          "Name: "    + 
          n.getText() +
          ", Age: "   +
          a.getText() + 
          ", DOB: "   +
          d.getText()
        );
      })*
      ;

class SimpleLexer extends Lexer;

NAME : ('a'..'z'|'A'..'Z')+;

DOB  : ('0'..'9' '0'..'9' '/')=> 
       (('0'..'9')('0'..'9')'/')(('0'..'9')('0'..'9')'/')('0'..'9')('0'..'9') //{ $setType(DOB); }
     | ('0'..'9')+  { $setType(AGE); } ;

WS     :
    (' ' 
    | '\t' 
    | '\r' '\n' { newline(); } 
    | '\n'      { newline(); }
    ) 
    { $setType(Token.SKIP); } 
  ;

SEMI : ';' ;

 该文件内容通过文法分析器解析后(Lexer)生成Java文件

具体命令:

 

java -cp /home/xfc/antlr/antlr3.4/lib/antlr-3.4-complete.jar antlr.Tool L.g

 2、结束后生成3个Java文件:

LLexer.java

LParser.java

LParserTokenTypes.java

3、写一个test测试:

 

import java.io.*;
public class Main {
    public static void main(String args[]) {
        FileInputStream f = null;
        try {
            f = new FileInputStream("/home/xfc/antlr/s_antlr/src/test.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        DataInputStream input = new DataInputStream(f);
        LLexer lexer = new LLexer(input);
        LParser parser = new LParser(lexer);
        try {
            parser.entry();
        } catch(Exception e) {}
    }
}
 

4、新建特定目录下的test.txt

 

06/06/82 Peter 20;
03/04/83 Rosie 19;
04/05/81 Mikey 21;

 5、执行后结果显示:

 

 写道
Name: Peter, Age: 20, DOB: 06/06/82
Name: Rosie, Age: 19, DOB: 03/04/83
Name: Mikey, Age: 21, DOB: 04/05/81
 

 

参考资料:http://zbw.iteye.com/blog/25860

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值