资源简介
使用javacc自动生成cmm语法分析器,使用jjt文件生成语法树,支持错误处理。
代码片段和文件信息
/* Generated By:JJTree&JavaCC: Do not edit this line. EG1.java */
public class EG1/*@bgen(jjtree)*/implements EG1TreeConstants EG1Constants {/*@bgen(jjtree)*/
protected static JJTEG1State jjtree = new JJTEG1State();public static void main(String args []) throws ParseException
{
EG1 parser = new EG1(System.in);
while(true)
{
try
{
System.out.println(“Enter some cmm sentences:“);
SimpleNode n = EG1.one_line();
n.dump(““);
System.out.println(“Thank you.“);
}
catch (Exception e)
{
System.out.println(“error.“);
System.out.println(e.getMessage());
EG1.ReInit(System.in);
}
catch (Error e)
{
System.out.println(“Oops.“);
System.out.println(e.getMessage());
break;
}
}
}
/*Entrance*/
static final public SimpleNode one_line() throws ParseException {
/*@bgen(jjtree) one_line */
SimpleNode jjtn000 = new SimpleNode(JJTONE_LINE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
Procedure();
jj_consume_token(SEMICOLON);
jjtree.closeNodeScope(jjtn000 true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000 true);
}
}
throw new Error(“Missing return statement in function“);
}
/*Main Program*/
static final public void Procedure() throws ParseException {
/*@bgen(jjtree) Procedure */
SimpleNode jjtn000 = new SimpleNode(JJTPROCEDURE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IF:
case WHILE:
case READ:
case WRITE:
case INT:
case REAL:
case IDENTIFIER:
Statement();
break;
case LBRACE:
Block();
break;
default:
jj_la1[0] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IF:
case WHILE:
case READ:
case WRITE:
case INT:
case REAL:
case LBRACE:
case IDENTIFIER:
;
break;
default:
jj_la1[1] = jj_gen;
break label_1;
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2014-10-14 00:29 javacc_exercise2(2)\.classpath
文件 578 2014-10-14 00:29 javacc_exercise2(2)\.project
文件 598 2014-10-14 00:29 javacc_exercise2(2)\.settings\org.eclipse.jdt.core.prefs
文件 507 2014-10-14 00:29 javacc_exercise2(2)\.settings\sf.eclipse.javacc.prefs
文件 20823 2014-11-22 13:43 javacc_exercise2(2)\bin\cmm2.jj
文件 4296 2014-10-14 00:30 javacc_exercise2(2)\bin\cmm2.jjt
文件 17862 2014-11-22 13:43 javacc_exercise2(2)\bin\EG1.class
文件 2320 2014-11-22 13:43 javacc_exercise2(2)\bin\EG1Constants.class
文件 11051 2014-11-22 13:43 javacc_exercise2(2)\bin\EG1TokenManager.class
文件 2332 2014-11-22 13:43 javacc_exercise2(2)\bin\EG1TreeConstants.class
文件 2585 2014-11-22 13:43 javacc_exercise2(2)\bin\JJTEG1State.class
文件 304 2014-11-22 13:43 javacc_exercise2(2)\bin\Node.class
文件 3592 2014-11-22 13:43 javacc_exercise2(2)\bin\ParseException.class
文件 8162 2014-11-22 13:43 javacc_exercise2(2)\bin\SimpleCharStream.class
文件 2549 2014-11-22 13:43 javacc_exercise2(2)\bin\SimpleNode.class
文件 1153 2014-11-22 13:43 javacc_exercise2(2)\bin\Token.class
文件 2809 2014-11-22 13:43 javacc_exercise2(2)\bin\TokenMgrError.class
文件 20823 2014-11-22 13:43 javacc_exercise2(2)\src\cmm2.jj
文件 4296 2014-10-14 00:30 javacc_exercise2(2)\src\cmm2.jjt
文件 30920 2014-11-22 13:43 javacc_exercise2(2)\src\EG1.java
文件 2869 2014-11-22 13:43 javacc_exercise2(2)\src\EG1Constants.java
文件 21159 2014-11-22 13:43 javacc_exercise2(2)\src\EG1TokenManager.java
文件 1904 2014-11-22 13:43 javacc_exercise2(2)\src\EG1TreeConstants.java
文件 3320 2014-11-22 13:43 javacc_exercise2(2)\src\JJTEG1State.java
文件 1316 2014-11-22 13:43 javacc_exercise2(2)\src\Node.java
文件 6332 2014-11-22 13:43 javacc_exercise2(2)\src\ParseException.java
文件 12645 2014-11-22 13:43 javacc_exercise2(2)\src\SimpleCharStream.java
文件 2251 2014-11-22 13:43 javacc_exercise2(2)\src\SimpleNode.java
文件 4184 2014-11-22 13:43 javacc_exercise2(2)\src\Token.java
文件 4544 2014-11-22 13:43 javacc_exercise2(2)\src\TokenMgrError.java
............此处省略7个文件信息
相关资源
- 用Java实现的基于SNL语言的词法分析与
- javacc-5.0.rar
- 华中科技大学 编译原理 面向过程的
- 语法分析器Java语言编写附实验报告
- java开发的基于LL1文法的语法分析器
- 完整cmm解释器
- LL1语法分析代码有详细解释,压缩包
- java编写的LR语法分析器编译原理实验
- 基于MiniC的语义分析Javacc实现
- java实现的语法分析程序
- Java实现具有词法匹配、语法分析和中
- 用java语言编写的递归下降语法分析器
- 编译原理综合实习 JavaCC实现 可翻译
- CMM 解释器JAVA实现)
- 用java实现的语法分析器
- Java实现PL0词法分析、语法分析、语义
- 语法分析器java实现
- 编译原理 词法分析 语法分析 Java版
- 编译原理 LL1语法分析器(JAVA写的)
- java 实现Pascal语法分析
- C编译器java编写词法分析,语法分析,
- 编译原理实验二语法分析java代码Jav
- 语法分析程序递归下降
- 编译原理语法分析Java实现
- 语法分析器(Java实现-带UI界面).zi
- java语法分析器源代码LL(1)文法
- 词法分析器和语法分析器java实现代码
- 编译原理实验三语义分析JavaCC代码
- 编译原理词法分析,语法分析,中间
- JavaCC实现MiniC语言的编译
评论
共有 条评论