📄 parser.java
字号:
ErrorMsg.ErrorMsg errorMsg;
public void report_error(String message,
com.sun.java_cup.internal.runtime.Symbol tok) {
errorMsg.error(tok.left, message);
}
public parser(Yylex l, ErrorMsg.ErrorMsg err) {
this();
errorMsg = err;
lexer = l;
}
}
/** Cup generated class to encapsulate user supplied action code. */
class CUP$parser$actions {
static Symbol.Symbol sym(String s) {
return Symbol.Symbol.symbol(s);
}
private final parser parser;
/** Constructor */
CUP$parser$actions(parser parser) {
this.parser = parser;
}
/** Method with the actual generated action code. */
public final com.sun.java_cup.internal.runtime.Symbol CUP$parser$do_action(
int CUP$parser$act_num,
com.sun.java_cup.internal.runtime.lr_parser CUP$parser$parser,
java.util.Stack CUP$parser$stack, int CUP$parser$top)
throws java.lang.Exception {
/* Symbol object for return from actions */
com.sun.java_cup.internal.runtime.Symbol CUP$parser$result;
/* select the action based on the action number */
switch (CUP$parser$act_num) {
/* . . . . . . . . . . . . . . . . . . . . */
case 66: // type_fields ::= ID COLON ID COMMA type_fields
{
FieldList RESULT = null;
int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).left;
int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).right;
String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).value;
int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).left;
int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).right;
String e2 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).value;
int e3left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left;
int e3right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right;
FieldList e3 = (FieldList) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).value;
RESULT = new FieldList(e1left, sym(e1), sym(e2), e3);
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
14/* type_fields */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
/* . . . . . . . . . . . . . . . . . . . . */
case 65: // type_fields ::= ID COLON ID
{
FieldList RESULT = null;
int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).left;
int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).right;
String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).value;
int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left;
int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right;
String e2 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).value;
RESULT = new FieldList(e1left, sym(e1), sym(e2), null);
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
14/* type_fields */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
/* . . . . . . . . . . . . . . . . . . . . */
case 64: // type ::= ARRAY OF ID
{
Ty RESULT = null;
int eleft = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left;
int eright = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right;
String e = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).value;
RESULT = new ArrayTy(eleft, sym(e));
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
12/* type */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
/* . . . . . . . . . . . . . . . . . . . . */
case 63: // type ::= LBRACE type_fields RBRACE
{
Ty RESULT = null;
int eleft = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 1)).left;
int eright = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 1)).right;
FieldList e = (FieldList) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 1)).value;
RESULT = new RecordTy(eleft, e);
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
12/* type */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
/* . . . . . . . . . . . . . . . . . . . . */
case 62: // type ::= ID
{
Ty RESULT = null;
int eleft = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left;
int eright = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right;
String e = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).value;
RESULT = new NameTy(eleft, sym(e));
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
12/* type */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
/* . . . . . . . . . . . . . . . . . . . . */
case 61: // variable_declaration ::= VAR ID COLON ID ASSIGN expr
{
VarDec RESULT = null;
int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).left;
int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).right;
String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).value;
int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).left;
int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).right;
String e2 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).value;
int e3left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left;
int e3right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right;
Exp e3 = (Exp) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).value;
RESULT = new VarDec(e1left, sym(e1), new NameTy(e2left, sym(e2)),
e3);
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
9/* variable_declaration */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 5)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
/* . . . . . . . . . . . . . . . . . . . . */
case 60: // variable_declaration ::= VAR ID ASSIGN expr
{
VarDec RESULT = null;
int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).left;
int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).right;
String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 2)).value;
int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left;
int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right;
Exp e2 = (Exp) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).value;
RESULT = new VarDec(e1left, sym(e1), null, e2);
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
9/* variable_declaration */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 3)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
/* . . . . . . . . . . . . . . . . . . . . */
case 59: // type_declaration ::= TYPE ID EQ type type_declaration
{
TypeDec RESULT = null;
int e1left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 3)).left;
int e1right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 3)).right;
String e1 = (String) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 3)).value;
int e2left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 1)).left;
int e2right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 1)).right;
Ty e2 = (Ty) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 1)).value;
int e3left = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).left;
int e3right = ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right;
TypeDec e3 = (TypeDec) ((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).value;
RESULT = new TypeDec(e1left, sym(e1), e2, e3);
CUP$parser$result = new com.sun.java_cup.internal.runtime.Symbol(
13/* type_declaration */,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 4)).left,
((com.sun.java_cup.internal.runtime.Symbol) CUP$parser$stack
.elementAt(CUP$parser$top - 0)).right, RESULT);
}
return CUP$parser$result;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -