jjTree和javaCC学习笔记
来源:互联网 发布:mac地址含有非法字符 编辑:程序博客网 时间:2024/05/22 15:40
jjTree和javaCC学习笔记
我们通过一个例子来研究jjtree。下面的例子是javacc自带的eg2.jjt例子的改进版本。
-------------------SimpleNode.java---------------------
protected Token first_token;
protected Token last_token;
public void jjtOpen() {
first_token = parser.getToken(1);
}
public void jjtClose() {
last_token = parser.getToken(0);
}
--------------------eg2.jjt------------------------------
options {
MULTI=true;
}
PARSER_BEGIN(eg2)
package test;
public class Eg2 {
/** Main entry point. */
public static void main(String args[]) {
System.out.println("Reading from standard input...");
Eg2 t = new Eg2(System.in);
try {
ASTStart n = t.Start();
for (int i = 0; i < n.jjtGetNumChildren(); i++) {
Node node = n.jjtGetChild(i); //取得一个child,应该对应一个Expression
Token t1;
for (t1 = ((SimpleNode)node).first_token; t1 != ((SimpleNode)node).last_token; t1 = t1.next) {
System.out.print(t1.image); // 输出这个token对应的文本
}
System.out.println(t1.image); //输出node的最后一个token,并换行
}
n.dump("");
System.out.println("Thank you.");
} catch (Exception e) {
System.out.println("Oops.");
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
// token部分略去,没什么意思
ASTStart Start() : {}
{
Expression() ";"
{ return jjtThis; } //注意这里要写一句return,还有Start的返回值不能是void。
}
void Expression() : {}
{
AdditiveExpression()
}
void AdditiveExpression() #void : {}
// 这里可以设置#void,说明不必为此非终结符生成对象,也不会生成ASTAdditiveExpression类。
// 因此,Expression的child会包含MultiplicativeExpression
{
(
MultiplicativeExpression() ( ( "+" | "-" ) MultiplicativeExpression() )*
)
}
...
// 后面的很多细节都略去了,请参考自带例子,总之只要会BNF就可以了。
--------------------eg2.jjt------------------------------
- jjTree和javaCC学习笔记
- JJTree笔记
- javaCC学习笔记
- 学习JavaCC笔记
- JavaCC学习笔记(2)
- JavaCC学习笔记(1)
- javacc学习笔记
- JavaCC 学习笔记
- JavaCC学习笔记
- JavaCC学习笔记
- JavaCC技术手册之JJTree参考文档
- 实验一:javacc学习笔记
- javacc jjtree 写法 以及 jj写法 基本语法 以及应用
- JJTree
- javacc笔记
- JavaCC简介 语法分析生成器 自顶向下 JJTree JJDoc工具 LL语法分析
- javacc笔记2
- javacc笔记3
- 2011年7月第2周-1 又是周一
- 除了Logcat还有什么查看调试结果
- 【记录】在Windows Server AppFabric中设置WCF
- POJ 1279 Art Gallery
- 管理小心得
- jjTree和javaCC学习笔记
- 单例模式2(C++)
- 公司面试题
- POJ 1819 Disks
- source insight 使用技巧
- 汗!小学生答卷
- POJ 2676 Sudoku
- 如何分析和研究Log文件 ,如何看日志信息
- activity生命周期