📄 exprparser.java
字号:
file = argv[0]; boolean viewAST = true; ASTNode block; block = ExprParser.parse(file); if (viewAST) { ASTViewer viewer = new ASTViewer(); viewer.viewAST(block); } //added by me //ASTNode c=p.parse(args[0]);//return the root of an ast tree/* PrintStream outfile = null; try { outfile = new PrintStream(new FileOutputStream(file+".s")); } catch(IOException e) { System.out.println(e); System.exit(1); } try{ CodeGenerator CGen=new CodeGenerator(outfile); (block).accept(CGen);//accept CGen.emitCode();//emit code System.out.println("Code successfully generated"); } catch(Exception e) { System.out.println("There may be some semantic errors in the foreend"); //System.exit(1); } */ /* CodeGenerator CGen=new CodeGenerator(outfile); (block).accept(CGen);//accept CGen.emitCode();//emit code System.out.println("Code successfully generated");*/ } public void report_fatal_error(String s,Object o) { System.out.println("fatal error ,I don't know handle this problem ,sorry ..."); } public void report_error(String s,Object o){ System.out.println("error ,I don't know handle this problem ,sorry ..."); } public void syntax_error(Symbol s){ System.out.println("Syntax error ,I don't know handle this problem ,sorry ..."); } public void unrecovered_syntax_error(Symbol s){ System.out.println("unrecovered syntax error ,I don't know handle this problem ,sorry ..."); }
}
/** Cup generated class to encapsulate user supplied action code.*/
class CUP$ExprParser$actions {
private boolean success = true; private AST ast = AST.newAST(AST.JLS3); private CompilationUnit root = null; public ASTNode getAST() { if (success) { System.out.println("陶涛 pb03011062"); return root; } return null; }
private final ExprParser parser;
/** Constructor */
CUP$ExprParser$actions(ExprParser parser) {
this.parser = parser;
}
/** Method with the actual generated action code. */
public final java_cup.runtime.Symbol CUP$ExprParser$do_action(
int CUP$ExprParser$act_num,
java_cup.runtime.lr_parser CUP$ExprParser$parser,
java.util.Stack CUP$ExprParser$stack,
int CUP$ExprParser$top)
throws java.lang.Exception
{
/* Symbol object for return from actions */
java_cup.runtime.Symbol CUP$ExprParser$result;
/* select the action based on the action number */
switch (CUP$ExprParser$act_num)
{
/*. . . . . . . . . . . . . . . . . . . .*/
case 130: // primitive_type ::= VOID
{
PrimitiveType RESULT = null;
RESULT =ast.newPrimitiveType(PrimitiveType.VOID);
CUP$ExprParser$result = new java_cup.runtime.Symbol(56/*primitive_type*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 129: // primitive_type ::= BOOLEAN
{
PrimitiveType RESULT = null;
RESULT = ast.newPrimitiveType(PrimitiveType.BOOLEAN);
CUP$ExprParser$result = new java_cup.runtime.Symbol(56/*primitive_type*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 128: // primitive_type ::= INT
{
PrimitiveType RESULT = null;
RESULT = ast.newPrimitiveType(PrimitiveType.INT);
CUP$ExprParser$result = new java_cup.runtime.Symbol(56/*primitive_type*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 127: // type ::= INT LBRACK INTEGER_LITERAL RBRACK
{
Type RESULT = null;
int illeft = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-1)).left; int ilright = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-1)).right; Integer il = (Integer)((java_cup.runtime.Symbol) CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-1)).value; ArrayType aa= ast.newArrayType(ast.newPrimitiveType(PrimitiveType.INT)); aa.setProperty("ArrayLength",il); RESULT = aa;
CUP$ExprParser$result = new java_cup.runtime.Symbol(55/*type*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 126: // type ::= STRING
{
Type RESULT = null;
RESULT = ast.newSimpleType(ast.newSimpleName("String"));
CUP$ExprParser$result = new java_cup.runtime.Symbol(55/*type*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 125: // type ::= primitive_type
{
Type RESULT = null;
int ptleft = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left; int ptright = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right; PrimitiveType pt = (PrimitiveType)((java_cup.runtime.Symbol) CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).value; RESULT = pt;
CUP$ExprParser$result = new java_cup.runtime.Symbol(55/*type*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 124: // argument_list ::= argument_list COMMA expression
{
List RESULT = null;
int myalleft = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-2)).left; int myalright = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-2)).right; List myal = (List)((java_cup.runtime.Symbol) CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-2)).value; int myeleft = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left; int myeright = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right; Expression mye = (Expression)((java_cup.runtime.Symbol) CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).value; myal.add(mye); RESULT = myal;
CUP$ExprParser$result = new java_cup.runtime.Symbol(54/*argument_list*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 123: // argument_list ::= expression
{
List RESULT = null;
int myexpleft = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left; int myexpright = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right; Expression myexp = (Expression)((java_cup.runtime.Symbol) CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).value; RESULT =new ArrayList(); RESULT.add(myexp);
CUP$ExprParser$result = new java_cup.runtime.Symbol(54/*argument_list*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 122: // argument_list_opt ::= argument_list
{
List RESULT = null;
int myalleft = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left; int myalright = ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right; List myal = (List)((java_cup.runtime.Symbol) CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).value; RESULT = myal;
CUP$ExprParser$result = new java_cup.runtime.Symbol(53/*argument_list_opt*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 121: // argument_list_opt ::=
{
List RESULT = null;
RESULT = new ArrayList();
CUP$ExprParser$result = new java_cup.runtime.Symbol(53/*argument_list_opt*/, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$ExprParser$stack.elementAt(CUP$ExprParser$top-0)).right, RESULT);
}
return CUP$ExprParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 120: // return_statement ::= RETURN expression_opt SEMICOLON
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -