- 浏览: 91294 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
assasszt:
写的很透彻,厉害!能不能问个 问题:cookie 应该是浏览器 ...
Tomcat之Session和Cookie大揭密 -
赵武艺:
有时间把全部代码贴出来看看,只看这个看不懂?
Ajax请求,利用JFreeChart,页面无刷新画带“map”的图 -
e_soft:
解决办法:
拔了网线就好了,具体什么原因正在查找.
我也在 ...
MyEclipse开发JSP页面假死问题解决办法
一、 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:\>
发表评论
-
版本管理
2010-07-27 11:08 0几个分布式vcs比较 http://blog.csdn.ne ... -
UML工具
2010-07-14 15:51 0Enterprise Architect,java编程思想作者 ... -
设计模式
2010-07-13 13:47 0代理模式 可以在不改变接口的前提下 ... -
java
2010-07-13 13:45 847我们为什么一直选择Java http://blog.cs ... -
eclipse
2010-07-12 18:14 1128eclipse 分屏 http://www.coderanc ... -
在java中利用动态编译实现eval
2008-12-24 04:49 1000我们知道,在很多脚本语言中都有eval涵数,它可以把字符串转换 ... -
Java入门--认识理解Java中native方法
2008-12-25 01:18 1232Java不是完美的,Java的不足除了体现在运行速度上要比传统 ... -
Java的数据类型
2008-12-25 21:36 1100Java的简单数据类型 数据类型 数据类型就 ... -
解读JAVA内存优化编程的三个方法
2008-12-25 21:43 1118一.代码优化 内存会溢出肯定和代码逃不了关系,99 ... -
MemoryMXBean
2008-12-25 21:47 1241本文来源:jdk1.6中文文档 java.lan ... -
JDK1.5新特性介绍
2008-12-26 03:36 851JDK1.5新特性介绍 2004-09-11 00: ... -
java源代码分析----jvm.dll装载过程
2008-12-27 02:37 1289本文来源:http://www.matri ... -
Java 泛型的理解与实现
2008-12-27 04:04 41很多人不知道Java 泛型 ... -
selectmethod=cursor的含义及其使用
2008-11-01 02:49 862连接字符串中碰到的SelectMethod=cursor ... -
数字格式化
2008-11-02 23:48 729Double sum = 78342 .0d; ... -
JAVA命令说明
2008-12-06 23:04 1861一、运行class文件 执行 ... -
主题:-jar参数运行应用时classpath的设置方法
2008-12-07 04:11 729当用java -jar yourJarExe.jar来运行一个 ... -
SDK、JDK、JRE和JVM的关系
2008-12-14 15:43 1034摘自: http://hi.baidu.com/lxcry ... -
Dom4j的使用(全而好的文章)
2008-12-15 12:23 616Dom4j 使用简介 作者:冰云 iceclo ... -
深入浅出CGlib-打造无入侵的类代理
2008-12-18 20:38 548CGlib是什么? CGlib是一个强大的,高性能,高质量的 ...
相关推荐
ANTLR入门详细教程定稿.pdf
Antlr入门介绍小demo
ANTLR入门 中英文 Terence Parr 程序员 2004 马维达 译 原文: An Introduction To ANTLR
2004年第3期 程序员 中的文章,教你从头到尾实现一个计算器。ANTLR实现计算器 ANTLR入门
antlr入门,用于在学习编译原理课程和做词法分析,语法分析时有用。
Antlr入门详细教程.doc 利用ANTLR生成C 描述的分析程序.htm 使用 Antlr 处理文本.htm 使用 Antlr 开发领域语言.htm 强悍的ANTLR Lexer.htm a little madness » Blog Archive » ANTLR By Example Part 1 The ...
ANTLR 4简明教程.epub
Antlr入门详解 中国知网论文:ANRLR安装、使用、文法详解
antlr4 hello world。antlr4 hello world。antlr4 hello world。antlr4 hello world
ANTLR3.0简单编译入门.pdf,学习antlr很好的资源
教程定位为帮助零基础的初学者入门到掌握编译前端,为熟悉antlr的人,提供一些问题备忘录,以及共享一些对antlr本身设计的看法。希望能对您有所帮助。产品的开发需要,对词法语法解析工具选型,选了几个工具,javacc...
ANTLR是ANother Tool for Language Recognition的缩写“又一个语言识别工具”。从名字上可以看出在ANTLR出现之前已经存在其它语言识别工具了(如LEX [1],YACC [2])。ANTLR的官方定义为:根据一种可以嵌入如Java, ...
Antlr4指南 权威介绍 学习教程
NULL 博文链接:https://xinglijun1973.iteye.com/blog/1906811
The definitive antlr reference是一本经典的antlr教程,对antlr的Grammar,构造AST和以及编译技术,LL分析法都有深入的剖析,在antlr教程匮乏的时代,此书无疑是一个最好的补充。
antlr3最好的学习文档 antlr3详细说明手册
ANTLR之"Hello World",是ANTLR的入门。
ANTLR 4有哪些神奇之处ANTLR 4引入了一些新功能,降低了入门门槛,使得语法和语言类应用程序的开发更加容易。最重要的新特性在于,ANTLR 4几乎能够处理任何语法(除了间接左递归,稍后会提到)。在ANTLR将你的语法...