//----------------------------------------------------
// The following code was generated by CUP v0.11a beta 20060608
// Sat Sep 20 15:46:57 PDT 2008
//----------------------------------------------------
import java_cup.runtime.*;
/** CUP v0.11a beta 20060608 generated parser.
* @version Sat Sep 20 15:46:57 PDT 2008
*/
public class ASTParser extends java_cup.runtime.lr_parser {
/** Default constructor. */
public ASTParser() {super();}
/** Constructor which sets the default scanner. */
public ASTParser(java_cup.runtime.Scanner s) {super(s);}
/** Constructor which sets the default scanner. */
public ASTParser(java_cup.runtime.Scanner s, java_cup.runtime.SymbolFactory sf) {super(s,sf);}
/** Production table. */
protected static final short _production_table[][] =
unpackFromStrings(new String[] {
"\000\062\000\002\002\005\000\002\002\004\000\002\002" +
"\002\000\002\003\003\000\002\003\004\000\002\004\012" +
"\000\002\006\002\000\002\006\003\000\002\005\003\000" +
"\002\005\004\000\002\007\010\000\002\007\007\000\002" +
"\010\002\000\002\010\003\000\002\011\003\000\002\011" +
"\004\000\002\012\006\000\002\014\005\000\002\014\005" +
"\000\002\013\006\000\002\013\010\000\002\013\007\000" +
"\002\013\007\000\002\013\006\000\002\013\005\000\002" +
"\013\010\000\002\013\006\000\002\013\005\000\002\013" +
"\005\000\002\013\006\000\002\013\006\000\002\013\006" +
"\000\002\013\006\000\002\013\005\000\002\013\006\000" +
"\002\013\006\000\002\013\006\000\002\013\005\000\002" +
"\013\005\000\002\013\005\000\002\013\005\000\002\013" +
"\005\000\002\013\004\000\002\015\004\000\002\015\005" +
"\000\002\016\003\000\002\016\004\000\002\017\003\000" +
"\002\017\004\000\002\020\007" });
/** Access to production table. */
public short[][] production_table() {return _production_table;}
/** Parse-action table. */
protected static final short[][] _action_table =
unpackFromStrings(new String[] {
"\000\171\000\006\002\uffff\051\005\001\002\000\004\002" +
"\173\001\002\000\004\004\006\001\002\000\004\051\011" +
"\001\002\000\006\002\001\051\011\001\002\000\006\002" +
"\ufffe\051\ufffe\001\002\000\004\005\012\001\002\000\004" +
"\050\013\001\002\000\004\050\014\001\002\000\004\046" +
"\015\001\002\000\004\015\016\001\002\000\006\016\ufffb" +
"\051\022\001\002\000\006\016\ufff9\051\ufff9\001\002\000" +
"\004\016\171\001\002\000\006\016\ufffa\051\022\001\002" +
"\000\006\006\024\007\023\001\002\000\004\050\165\001" +
"\002\000\004\050\025\001\002\000\006\050\ufff5\051\031" +
"\001\002\000\006\050\ufff4\051\031\001\002\000\006\050" +
"\ufff3\051\ufff3\001\002\000\004\050\035\001\002\000\004" +
"\010\032\001\002\000\004\050\033\001\002\000\004\050" +
"\034\001\002\000\006\050\ufff1\051\ufff1\001\002\000\004" +
"\051\036\001\002\000\062\012\063\013\060\014\057\020" +
"\066\021\051\022\054\023\073\024\061\025\046\026\052" +
"\027\072\030\056\031\045\032\044\033\064\034\067\035" +
"\050\036\047\037\062\040\070\041\065\042\071\043\055" +
"\044\053\001\002\000\006\016\ufff7\051\ufff7\001\002\000" +
"\004\017\041\001\002\000\006\045\043\050\042\001\002" +
"\000\012\016\ufff0\017\ufff0\050\ufff0\051\ufff0\001\002\000" +
"\012\016\uffef\017\uffef\050\uffef\051\uffef\001\002\000\004" +
"\051\036\001\002\000\004\051\036\001\002\000\004\051" +
"\036\001\002\000\004\047\156\001\002\000\004\051\036" +
"\001\002\000\004\051\036\001\002\000\004\051\036\001" +
"\002\000\004\050\150\001\002\000\004\051\036\001\002" +
"\000\004\017\uffd7\001\002\000\004\051\036\001\002\000" +
"\004\051\036\001\002\000\004\051\036\001\002\000\004" +
"\050\116\001\002\000\004\046\115\001\002\000\004\050" +
"\113\001\002\000\004\051\036\001\002\000\004\050\110" +
"\001\002\000\004\051\036\001\002\000\004\051\036\001" +
"\002\000\004\047\102\001\002\000\004\051\036\001\002" +
"\000\004\051\036\001\002\000\004\051\036\001\002\000" +
"\006\017\uffe9\051\036\001\002\000\010\016\uffd4\017\uffd4" +
"\051\uffd4\001\002\000\010\016\uffd3\017\uffd3\051\uffd3\001" +
"\002\000\004\051\036\001\002\000\004\017\uffe2\001\002" +
"\000\004\017\uffe5\001\002\000\004\017\uffd9\001\002\000" +
"\004\051\036\001\002\000\004\017\uffdd\001\002\000\004" +
"\051\036\001\002\000\004\051\036\001\002\000\004\017" +
"\uffeb\001\002\000\004\017\uffe6\001\002\000\004\051\036" +
"\001\002\000\004\017\uffde\001\002\000\004\051\036\001" +
"\002\000\004\017\uffee\001\002\000\004\017\uffda\001\002" +
"\000\004\050\117\001\002\000\004\051\036\001\002\000" +
"\004\051\036\001\002\000\004\017\uffe8\001\002\000\004" +
"\050\123\001\002\000\004\050\124\001\002\000\004\015" +
"\126\001\002\000\004\017\uffed\001\002\000\006\016\127" +
"\051\036\001\002\000\004\017\uffd6\001\002\000\006\016" +
"\131\051\036\001\002\000\004\017\uffd5\001\002\000\004" +
"\050\133\001\002\000\004\015\126\001\002\000\004\017" +
"\uffec\001\002\000\004\051\036\001\002\000\004\017\uffe1" +
"\001\002\000\004\051\141\001\002\000\006\017\uffe7\051" +
"\141\001\002\000\004\011\143\001\002\000\006\017\uffd2" +
"\051\uffd2\001\002\000\004\050\144\001\002\000\004\050" +
"\145\001\002\000\004\051\036\001\002\000\006\017\uffd0" +
"\051\uffd0\001\002\000\006\017\uffd1\051\uffd1\001\002\000" +
"\004\017\uffd8\001\002\000\004\051\036\001\002\000\004" +
"\017\uffe3\001\002\000\004\051\036\001\002\000\004\017" +
"\uffea\001\002\000\004\017\uffdc\001\002\000\004\017\uffdb" +
"\001\002\000\004\051\036\001\002\000\004\017\uffe4\001" +
"\002\000\004\017\uffe0\001\002\000\004\051\036\001\002" +
"\000\004\017\uffdf\001\002\000\006\050\ufff2\051\ufff2\001" +
"\002\000\004\050\166\001\002\000\004\051\036\001\002" +
"\000\006\016\ufff6\051\ufff6\001\002\000\006\016\ufff8\051" +
"\ufff8\001\002\000\006\002\ufffc\051\ufffc\001\002\000\006" +
"\002\ufffd\051\ufffd\001\002\000\004\002\000\001\002" });
/** Access to parse-action table. */
public short[][] action_table() {return _action_table;}
/** reduce_goto
table. */
protected static final short[][] _reduce_table =
unpackFromStrings(new String[] {
"\000\171\000\004\002\003\001\001\000\002\001\001\000" +
"\002\001\001\000\006\003\006\004\007\001\001\000\004" +
"\004\171\001\001\000\002\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\010\005\020\006\017\007\016\001\001\000" +
"\002\001\001\000\002\001\001\000\004\007\167\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\010\010\027\011\025\012\026\001\001\000\004\012\163" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
"\000\006\013\037\014\036\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\006\013\037\014\161\001" +
"\001\000\006\013\037\014\160\001\001\000\006\013\037" +
"\014\156\001\001\000\002\001\001\000\006\013\037\014" +
"\154\001\001\000\006\013\037\014\152\001\001\000\006" +
"\013\037\014\150\001\001\000\002\001\001\000\006\013" +
"\037\014\136\001\001\000\002\001\001\000\006\013\037" +
"\014\134\001\001\000\006\013\037\014\131\001\001\000" +
"\006\013\037\014\121\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\006\013\037\014\110\001" +
"\001\000\002\001\001\000\006\013\037\014\104\001\001" +
"\000\006\013\037\014\102\001\001\000\002\001\001\000" +
"\006\013\037\014\100\001\001\000\006\013\037\014\076" +
"\001\001\000\010\013\037\014\074\016\073\001\001\000" +
"\006\013\037\014\075\001\001\000\002\001\001\000\002" +
"\001\001\000\006\013\037\014\077\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\006\013\037" +
"\014\103\001\001\000\002\001\001\000\006\013\037\014" +
"\105\001\001\000\006\013\037\014\106\001\001\000\002" +
"\001\001\000\002\001\001\000\006\013\037\014\111\001" +
"\001\000\002\001\001\000\006\013\037\014\113\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\006\013\037\014\117\001\001\000\006\013\037\014\120" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\004\015\124\001\001\000\002\001\001\000\010" +
"\013\037\014\074\016\127\001\001\000\002\001\001\000" +
"\006\013\037\014\075\001\001\000\002\001\001\000\002" +
"\001\001\000\004\015\133\001\001\000\002\001\001\000" +
"\006\013\037\014\135\001\001\000\002\001\001\000\006" +
"\017\137\020\141\001\001\000\004\020\146\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\006\013\037\014\145\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\006\013\037" +
"\014\151\001\001\000\002\001\001\000\006\013\037\014" +
"\153\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\006\013\037\014\157\001\001\000\002\001" +
"\001\000\002\001\001\000\006\013\037\014\162\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\006\013\037\014\166\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001" });
/** Access to reduce_goto
table. */
public short[][] reduce_table() {return _reduce_table;}
/** Instance of action encapsulation class. */
protected CUP$ASTParser$actions action_obj;
/** Action encapsulation object initializer. */
protected void init_actions()
{
action_obj = new CUP$ASTParser$actions(this);
}
/** Invoke a user supplied parse action. */
public java_cup.runtime.Symbol do_action(
int act_num,
java_cup.runtime.lr_parser parser,
java.util.Stack stack,
int top)
throws java.lang.Exception
{
/* call code in generated class */
return action_obj.CUP$ASTParser$do_action(act_num, parser, stack, top);
}
/** Indicates start state. */
public int start_state() {return 0;}
/** Indicates start production. */
public int start_production() {return 1;}
/** EOF
Symbol index. */
public int EOF_sym() {return 0;}
/** error
Symbol index. */
public int error_sym() {return 1;}
public void syntax_error(Symbol cur_token) {
System.err.println("??? unexpected error in ast parsing: " + ((ASTLexer)getScanner()).line());
System.exit(1);
}
public void unrecovered_syntax_error(Symbol cur_token) {
}
}
/** Cup generated class to encapsulate user supplied action code.*/
class CUP$ASTParser$actions {
Integer curr_lineno = new Integer(0);
private final ASTParser parser;
/** Constructor */
CUP$ASTParser$actions(ASTParser parser) {
this.parser = parser;
}
/** Method with the actual generated action code. */
public final java_cup.runtime.Symbol CUP$ASTParser$do_action(
int CUP$ASTParser$act_num,
java_cup.runtime.lr_parser CUP$ASTParser$parser,
java.util.Stack CUP$ASTParser$stack,
int CUP$ASTParser$top)
throws java.lang.Exception
{
/* Symbol object for return from actions */
java_cup.runtime.Symbol CUP$ASTParser$result;
/* select the action based on the action number */
switch (CUP$ASTParser$act_num)
{
/*. . . . . . . . . . . . . . . . . . . .*/
case 49: // simple_case ::= LINENO BRANCH ID ID expr
{
branch RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-4)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new branch(l.intValue(), n, t, e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("simple_case",14, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 48: // case_list ::= case_list simple_case
{
Cases RESULT =null;
Cases cl = (Cases)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
branch c = (branch)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = cl.appendElement(c);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("case_list",13, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 47: // case_list ::= simple_case
{
Cases RESULT =null;
branch c = (branch)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = (new Cases(curr_lineno.intValue())).appendElement(c);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("case_list",13, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 46: // expr_list ::= expr_list expr
{
Expressions RESULT =null;
Expressions el = (Expressions)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = el.appendElement(e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_list",12, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 45: // expr_list ::= expr
{
Expressions RESULT =null;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = (new Expressions(curr_lineno.intValue())).appendElement(e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_list",12, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 44: // actuals ::= LPAREN expr_list RPAREN
{
Expressions RESULT =null;
Expressions el = (Expressions)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
RESULT = el;
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("actuals",11, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 43: // actuals ::= LPAREN RPAREN
{
Expressions RESULT =null;
RESULT = new Expressions(curr_lineno.intValue());
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("actuals",11, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 42: // expr_aux ::= LINENO NO_EXPR
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
curr_lineno = l; RESULT = new no_expr(l.intValue());
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 41: // expr_aux ::= LINENO OBJECT ID
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new object(l.intValue(), n);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 40: // expr_aux ::= LINENO BOOL INT_CONST
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol b = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l;
if (b.getString().charAt(0) == '1')
RESULT = new bool_const(l.intValue(), Boolean.TRUE);
else
RESULT = new bool_const(l.intValue(), Boolean.FALSE);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 39: // expr_aux ::= LINENO STR STR_CONST
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol s = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new string_const(l.intValue(), s);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 38: // expr_aux ::= LINENO INT INT_CONST
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol i = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new int_const(l.intValue(), i);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 37: // expr_aux ::= LINENO COMP expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new comp(l.intValue(), e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 36: // expr_aux ::= LINENO LEQ expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e1 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e2 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new leq(l.intValue(), e1, e2);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 35: // expr_aux ::= LINENO EQ expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e1 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e2 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new eq(l.intValue(), e1, e2);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 34: // expr_aux ::= LINENO LT expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e1 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e2 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new lt(l.intValue(), e1, e2);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 33: // expr_aux ::= LINENO NEG expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new neg(l.intValue(), e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 32: // expr_aux ::= LINENO DIVIDE expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e1 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e2 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new divide(l.intValue(), e1, e2);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 31: // expr_aux ::= LINENO MUL expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e1 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e2 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new mul(l.intValue(), e1, e2);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 30: // expr_aux ::= LINENO SUB expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e1 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e2 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new sub(l.intValue(), e1, e2);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 29: // expr_aux ::= LINENO PLUS expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e1 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e2 = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new plus(l.intValue(), e1, e2);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 28: // expr_aux ::= LINENO ISVOID expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new isvoid(l.intValue(), e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 27: // expr_aux ::= LINENO NEW ID
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new new_(l.intValue(), t);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 26: // expr_aux ::= LINENO TYPCASE expr case_list
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Cases cl = (Cases)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new typcase(l.intValue(), e, cl);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 25: // expr_aux ::= LINENO LET ID ID expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-5)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
Expression i = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression b = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new let(l.intValue(), n, t, i, b);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 24: // expr_aux ::= LINENO BLOCK expr_list
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
Expressions el = (Expressions)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new block(l.intValue(), el);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 23: // expr_aux ::= LINENO LOOP expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Expression p = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression b = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new loop(l.intValue(), p, b);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 22: // expr_aux ::= LINENO COND expr expr expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-4)).value;
Expression p = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
Expression t = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new cond(l.intValue(), p, t, e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 21: // expr_aux ::= LINENO DISPATCH expr ID actuals
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-4)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expressions a = (Expressions)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new dispatch(l.intValue(), e, n, a);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 20: // expr_aux ::= LINENO STATIC_DISPATCH expr ID ID actuals
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-5)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expressions a = (Expressions)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new static_dispatch(l.intValue(), e, t, n, a);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 19: // expr_aux ::= LINENO ASSIGN ID expr
{
Expression RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new assign(l.intValue(), n,e);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr_aux",9, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 18: // expr ::= expr_aux COLON NO_TYPE
{
Expression RESULT =null;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
RESULT = e;
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr",10, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 17: // expr ::= expr_aux COLON ID
{
Expression RESULT =null;
Expression e = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = e; e.set_type(t);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("expr",10, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 16: // formal ::= LINENO FORMAL ID ID
{
Formal RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new formal(l.intValue(), n, t);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("formal",8, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 15: // formal_list ::= formal_list formal
{
Formals RESULT =null;
Formals fl = (Formals)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Formal f = (Formal)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = fl.appendElement(f);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("formal_list",7, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 14: // formal_list ::= formal
{
Formals RESULT =null;
Formal f = (Formal)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = (new Formals(curr_lineno.intValue())).appendElement(f);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("formal_list",7, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 13: // formals ::= formal_list
{
Formals RESULT =null;
Formals fl = (Formals)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = fl;
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("formals",6, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 12: // formals ::=
{
Formals RESULT =null;
RESULT = new Formals(curr_lineno.intValue());
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("formals",6, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 11: // feature ::= LINENO ATTR ID ID expr
{
Feature RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-4)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression i = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new attr(l.intValue(), n, t, i);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("feature",5, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 10: // feature ::= LINENO METHOD ID formals ID expr
{
Feature RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-5)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Formals f = (Formals)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
AbstractSymbol t = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Expression b = (Expression)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new method(l.intValue(), n,f,t,b);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("feature",5, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 9: // feature_list ::= feature_list feature
{
Features RESULT =null;
Features fl = (Features)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
Feature f = (Feature)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = fl.appendElement(f);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("feature_list",3, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 8: // feature_list ::= feature
{
Features RESULT =null;
Feature f = (Feature)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = (new Features(curr_lineno.intValue())).appendElement(f);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("feature_list",3, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 7: // optional_feature_list ::= feature_list
{
Features RESULT =null;
Features fl = (Features)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = fl;
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("optional_feature_list",4, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 6: // optional_feature_list ::=
{
Features RESULT =null;
RESULT = new Features(curr_lineno.intValue());
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("optional_feature_list",4, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 5: // class ::= LINENO CLASS ID ID STR_CONST LPAREN optional_feature_list RPAREN
{
class_ RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-7)).value;
AbstractSymbol n = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-5)).value;
AbstractSymbol p = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-4)).value;
AbstractSymbol file = (AbstractSymbol)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-3)).value;
Features f = (Features)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
curr_lineno = l; RESULT = new class_(l.intValue(), n, p, f, file);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("class",2, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 4: // class_list ::= class_list class
{
Classes RESULT =null;
Classes cl = (Classes)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
class_ c = (class_)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = cl.appendElement(c);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("class_list",1, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 3: // class_list ::= class
{
Classes RESULT =null;
class_ c = (class_)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
RESULT = (new Classes(curr_lineno.intValue())).appendElement(c);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("class_list",1, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 2: // program ::=
{
program RESULT =null;
RESULT = null; System.exit(1);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("program",0, RESULT);
}
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 1: // $START ::= program EOF
{
Object RESULT =null;
program start_val = (program)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-1)).value;
RESULT = start_val;
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("$START",0, RESULT);
}
/* ACCEPT */
CUP$ASTParser$parser.done_parsing();
return CUP$ASTParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 0: // program ::= LINENO PROGRAM class_list
{
program RESULT =null;
Integer l = (Integer)((java_cup.runtime.Symbol) CUP$ASTParser$stack.elementAt(CUP$ASTParser$top-2)).value;
Classes cl = (Classes)((java_cup.runtime.Symbol) CUP$ASTParser$stack.peek()).value;
curr_lineno = l; RESULT = new program(l.intValue(), cl);
CUP$ASTParser$result = parser.getSymbolFactory().newSymbol("program",0, RESULT);
}
return CUP$ASTParser$result;
/* . . . . . .*/
default:
throw new Exception(
"Invalid action number found in internal parse table");
}
}
}