一、 Antlr 的主要类:
Antlr 中有主要类有两种(其实还有一种 TreeLexer )
Lexer: 文法分析器类。主要用于把读入的字节流根据规则分段。既把长面条根据你要的尺寸切成一段一段:)并不对其作任何修改。
Parser: 解析器类。主要用于处理经过 Lexer 处理后的各段。一些具体的操作都在这里。
二、 Antlr 文法文件形式:
Antlr 文件是 *.g 形式,即以 g 为后缀名。
例如: t.g
class P extends Parser;
startRule
: n:NAME
{System.out.println("Hi there, "+n.getText());}
;
class L extends Lexer;
// one-or-more letters followed by a newline
NAME: ( 'a'..'z'|'A'..'Z' )+ NEWLINE
;
NEWLINE
: '\r' '\n' // DOS
| '\n' // UNIX
;
具体成分分析:
1 、总体结构
Class P extends Parser
Class L extends Lexer
两行同 JAVA 继承一样, P 继承 Parser 类; L 继承 Lexer 类。每个 .g 文件只能各有一个。
2 、 Lexer 类分析
一般按照
类型名:匹配的具体规则;
的形式构成。是分隔字节流的依据。同时可以看到里面可以互相引用。如本例中的类型名 NEWLINE 出现在 NEW 的匹配规则中。
3 、 Parser 类分析
一般按照
起始规则名:
规则实例名:类型名或规则名
{Java 语句……; }
;
……
的形式构成。
起始规则名:任意。
规则实例名:就象 Java 中“ String s ;”的 s 一样。规则实例名用于在之后的 JAVA 语句中调用。
类型名或规则名:可以是在 Lexer 中定义的类型名,也可以是 Parser 中定义的规则名。感觉就像是 int 与 Integer 的区别。
Java 语句:指当满足当前规则时所执行的语句。 Antlr 会自动嵌入生成的 java 类中。
三、生成 Java 类
1 、从 www.antlr.org 上下载 antlr-x.x.x.jar
2 、配置环境变量: classpath=.;x:\jdk\lib\tools.jar;x:\antlr-x.x.x.jar
3 、在 t.g 所在目录下执行:
java antlr.Tool t.g
会在当前目录下生成如下文件:
L.java : Lexer 文法分析器 java 类。
P.java : Parser 解析器 java 类。
PTokenTypes.java : Lexer 中定义的类型具体化,供 Parser 解析器调用。
PTokenTypes.txt :当外部的(如 t2.g )要调用当前的类型或规则时要用到本文件。
四、执行
1 、编写 Main 类
import java.io.*;
class Main {
public static void main(String[] args) {
try {
L lexer = new L(new DataInputStream(System.in));
P parser = new P(lexer);
parser.startRule();
} catch(Exception e) {
System.err.println("exception: "+e);
}
}
}
2 、执行
c:\> javac *.java
c:\> java Main
Terence
^Z
Hi there, Terence
c:\>
分享到:
相关推荐
ANTLR入门详细教程定稿.pdf
Antlr入门详细教程.doc 利用ANTLR生成C 描述的分析程序.htm 使用 Antlr 处理文本.htm 使用 Antlr 开发领域语言.htm 强悍的ANTLR Lexer.htm a little madness » Blog Archive » ANTLR By Example Part 1 The ...
通过这个五分钟的入门教程,初学者可以快速了解ANTLR的基本用法,为更深入的学习打下基础。对于想在实际项目中使用ANTLR的人来说,这是一篇很好的起点。不过,真正掌握ANTLR并能灵活运用,还需要对编译原理有一定...
ANTLRWorks是ANTLR的一个集成开发环境,特别适合新手入门。你可以通过ANTLRWorks: 1. 创建语法文件:在ANTLRWorks中,你可以直观地定义语法规则,生成相应的词法和解析器代码。 2. 调试语法文件:ANTLRWorks提供了...
"antlr4_getting-started.md at master · antlr_antlr4 · GitHub_files" 这个文件名看起来是一个链接到GitHub上的目录,通常包含与ANTLR 4入门教程相关的其他资源,如示例代码、图片或其他辅助文件。访问这个链接...
入门 步骤1:安装Java(推荐) :warning: 从4.5.0-alpha003版本开始,不再需要用户安装Java运行时才能使用ANTLR 4编译.NET应用程序。但是,安装Java将大大提高代码生成过程的性能。 强烈建议使用此功能,尤其是在...
描述中提到的“ANTLR 编译器入门范例”表明这个资源是针对新手的教程材料,它包括了超过20个不同的示例,覆盖了大约200个文件。这些样本通常会涵盖ANTLR的基础用法,如定义语法规则、生成解析器、处理输入、构建抽象...
有许多在线教程和书籍可以帮助初学者入门。 9. **版本升级**:尽管ANTLR 2.7.6是一个较旧的版本,但理解它的工作原理对于理解ANTLR的更新版本仍然是有益的。随着版本的迭代,ANTLR增加了许多新的特性和优化,如树...
2. **ANTLR使用教程**:详细讲解ANTLR的基本使用方法,包括如何定义文法、生成解析器代码等。 3. **高级主题**:涉及ANTLR的高级特性,如错误处理、树解析等。 4. **案例研究**:通过具体实例展示ANTLR的应用场景和...
`ANTLR2 Introduction.url`和`jGuru ANTLR FAQ Index By Topic.url`是两个链接,分别指向ANTLR_v2的入门介绍和jGuru网站上的ANTLR FAQ索引,这些都是在线资源,用户可以通过这些链接获取更多实时更新的信息和支持。...
在第1章“Hibernate入门”中,作者首先介绍了本章的目标,即为Hibernate初学者提供一个基础教程。教程从一个简单的命令行应用开始,使用驻留内存数据库HSQL DB,以便在不安装额外数据库服务器的情况下进行学习。这个...
Struts是一种基于MVC(模型-视图-控制器)模式设计的Web应用框架,它是Apache软件基金会...通过本入门教程的学习,初学者应该能够掌握搭建Struts开发环境的基本步骤,并通过示例程序了解Struts框架的基本使用方法。
这份“Pck-Code-Roundup-and-Quick-Start-Guide.pdf”很可能包含详细教程和实例,帮助新手快速上手PCK。同时,“下载链接.txt”可能是获取更多资源的指引,而“pck.zip”可能包含了PCK库的源代码或预编译的库文件,...
ANTLR 4简明教程.epub Book on TypeScript.epub Markdown 入门参考.epub Node.js 调试指南.epub PyQt5 中文教程.epub Python One to Million.epub Rangle's Angular 2 Training Book 中文版.epub 安卓校招面试指南....
MHT文件是一种单个文件的网页存档,可能包含关于Antlr 3.0的教程或介绍。 4. TTworkbench_1stSteps.pdf:TTWorkbench可能是一个测试工具或环境,这个PDF文件可能是它的入门指南,指导用户如何开始使用。 5. 10.1....
如果遇到问题,建议参照描述中提到的博客文章《JSHOP2的环境配置——详细教程(原创)》,该教程将详细指导用户完成整个配置过程。 **ANTLR.jar与Makefile** `antlr.jar`是ANTLR(ANother Tool for Language ...