`

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

 

分享到:
评论

相关推荐

    antlr4-runtime-4.2-API文档-中文版.zip

    赠送jar包:antlr4-runtime-4.2.jar; 赠送原API文档:antlr4-runtime-4.2-javadoc.jar; 赠送源代码:antlr4-runtime-4.2-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.2.pom; 包含翻译后的API文档:...

    antlr4-runtime-4.7-API文档-中文版.zip

    赠送jar包:antlr4-runtime-4.7.jar; 赠送原API文档:antlr4-runtime-4.7-javadoc.jar; 赠送源代码:antlr4-runtime-4.7-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.7.pom; 包含翻译后的API文档:...

    antlr4-runtime-4.7-API文档-中英对照版.zip

    赠送jar包:antlr4-runtime-4.7.jar; 赠送原API文档:antlr4-runtime-4.7-javadoc.jar; 赠送源代码:antlr4-runtime-4.7-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.7.pom; 包含翻译后的API文档:...

    antlr4-maven-plugin-4.0.jar

    官方版本,亲测可用

    antlr-runtime-3.4-API文档-中文版.zip

    赠送jar包:antlr-runtime-3.4.jar; 赠送原API文档:antlr-runtime-3.4-javadoc.jar; 赠送源代码:antlr-runtime-3.4-sources.jar; 赠送Maven依赖信息文件:antlr-runtime-3.4.pom; 包含翻译后的API文档:antlr-...

    JavaEE源代码 antlr-2.7.6rc1

    JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源代码 antlr-2.7.6rc1JavaEE源...

    antlr4-runtime-4.8.jar

    antlr4-runtime-4.8

    antlr-runtime-3.5-API文档-中文版.zip

    赠送jar包:antlr-runtime-3.5.jar; 赠送原API文档:antlr-runtime-3.5-javadoc.jar; 赠送源代码:antlr-runtime-3.5-sources.jar; 赠送Maven依赖信息文件:antlr-runtime-3.5.pom; 包含翻译后的API文档:antlr-...

    antlr-runtime-3.5.2-API文档-中英对照版.zip

    赠送jar包:antlr-runtime-3.5.2.jar; 赠送原API文档:antlr-runtime-3.5.2-javadoc.jar; 赠送源代码:antlr-runtime-3.5.2-sources.jar; 赠送Maven依赖信息文件:antlr-runtime-3.5.2.pom; 包含翻译后的API文档...

    antlr-runtime-3.2.jar

    antlr-runtime-3.2.jar

    antlr-2.7.7.jar和antlr-2.7.6.jar

    总之,ANTLR是构建解析器的强大工具,而antlr-2.7.7.jar和antlr-2.7.6.jar是ANTLR的不同版本,它们以JAR文件的形式提供,用于Java项目中解析和处理结构化文本。选择使用哪个版本应根据项目的需求、兼容性和稳定性来...

    antlr-python-runtime-3.1.3.zip

    标题“antlr-python-runtime-3.1.3.zip”表明这是一个包含ANTLR Python运行时库的压缩文件,版本为3.1.3。这个版本可能相对较旧,但仍然对理解ANTLR如何与Python集成具有参考价值。 描述中的“antlr-python-runtime...

    antlr-intellij-plugin-v4-1.14.zip

    对于下载的"antlr-intellij-plugin-v4-1.14.zip"文件,它是2020年版本的ANTLR Intellij Plugin v4.14的备份。这意味着它可以安装到IntelliJ IDEA中,为用户提供ANTLR 4的支持。安装步骤通常包括解压缩文件,将解压后...

    antlr-4.8-complete.jar

    antlr-4.8-complete.jar

    antlr4-cpp-runtime-4.7.2-source_antlrruntimesrc_ANTLRvscode_slip

    这为不打算从源代码编译的开发者提供了一个快速入门的选项。 7. **runtime**: 可能是一个包含ANTLR C++运行时库的目录,包含了库文件和其他相关资源。 8. **demo**: 可能包含示例或演示项目,用于展示如何在...

    antlr-3.5.2-complete.jar

    antlr-3.5.2-complete.jar

    sclo-cassandra3-antlr3-C-devel-3.4-3.5.2.14.el7.x86_64.rpm

    官方离线安装包,亲测可用

    sclo-cassandra3-antlr3-C-3.4-3.5.2.14.el7.x86_64.rpm

    官方离线安装包,亲测可用

    antlr4-4.5

    2. **词法分析**:ANTLR4首先将输入文本分割成一系列的词法单元(也称为标记),这一过程由词法分析器完成。词法分析器是根据词法规则生成的,每个规则对应一种特定的字符串模式。 3. **语法分析**:生成的解析器...

    antlr-4.0-complete.jar

    官方版本,亲测可用

Global site tag (gtag.js) - Google Analytics