//----------------------------------------------------
// The following code was generated by CUP v0.11a beta 20060608
// Tue Jan 28 21:08:59 EST 2014
//----------------------------------------------------
package common.exec.z3;
import java_cup.runtime.*;
import java.util.List;
import java.util.ArrayList;
import common.exec.*;
import common.model.Type;
/** CUP v0.11a beta 20060608 generated parser.
* @version Tue Jan 28 21:08:59 EST 2014
*/
public class Parser extends java_cup.runtime.lr_parser {
/** Default constructor. */
public Parser() {super();}
/** Constructor which sets the default scanner. */
public Parser(java_cup.runtime.Scanner s) {super(s);}
/** Constructor which sets the default scanner. */
public Parser(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\017\000\002\002\004\000\002\002\004\000\002\002" +
"\003\000\002\003\006\000\002\003\003\000\002\003\003" +
"\000\002\003\006\000\002\004\004\000\002\004\003\000" +
"\002\005\012\000\002\006\003\000\002\006\003\000\002" +
"\007\003\000\002\007\003\000\002\007\003" });
/** Access to production table. */
public short[][] production_table() {return _production_table;}
/** Parse-action table. */
protected static final short[][] _action_table =
unpackFromStrings(new String[] {
"\000\035\000\010\005\004\006\010\015\007\001\002\000" +
"\012\002\ufffc\005\ufffc\006\ufffc\015\ufffc\001\002\000\004" +
"\002\037\001\002\000\012\002\uffff\005\004\006\010\015" +
"\007\001\002\000\006\004\012\013\011\001\002\000\012" +
"\002\ufffd\005\ufffd\006\ufffd\015\ufffd\001\002\000\004\017" +
"\034\001\002\000\004\015\014\001\002\000\006\015\014" +
"\016\ufff9\001\002\000\004\014\017\001\002\000\004\016" +
"\016\001\002\000\012\002\ufffb\005\ufffb\006\ufffb\015\ufffb" +
"\001\002\000\004\020\020\001\002\000\004\015\021\001" +
"\002\000\004\016\022\001\002\000\006\011\025\012\024" +
"\001\002\000\010\007\027\010\030\021\026\001\002\000" +
"\010\007\ufff7\010\ufff7\021\ufff7\001\002\000\010\007\ufff6" +
"\010\ufff6\021\ufff6\001\002\000\004\016\ufff3\001\002\000" +
"\004\016\ufff5\001\002\000\004\016\ufff4\001\002\000\004" +
"\016\032\001\002\000\006\015\ufff8\016\ufff8\001\002\000" +
"\004\016\ufffa\001\002\000\004\016\035\001\002\000\012" +
"\002\ufffe\005\ufffe\006\ufffe\015\ufffe\001\002\000\004\002" +
"\000\001\002\000\004\002\001\001\002" });
/** Access to parse-action table. */
public short[][] action_table() {return _action_table;}
/** <code>reduce_goto</code> table. */
protected static final short[][] _reduce_table =
unpackFromStrings(new String[] {
"\000\035\000\006\002\004\003\005\001\001\000\002\001" +
"\001\000\002\001\001\000\006\002\035\003\005\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\006\004\014\005\012\001\001\000\006\004\032\005\012" +
"\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\004\006\022\001\001\000\004\007\030\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\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001" });
/** Access to <code>reduce_goto</code> table. */
public short[][] reduce_table() {return _reduce_table;}
/** Instance of action encapsulation class. */
protected CUP$Parser$actions action_obj;
/** Action encapsulation object initializer. */
protected void init_actions()
{
action_obj = new CUP$Parser$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$Parser$do_action(act_num, parser, stack, top);
}
/** Indicates start state. */
public int start_state() {return 0;}
/** Indicates start production. */
public int start_production() {return 0;}
/** <code>EOF</code> Symbol index. */
public int EOF_sym() {return 0;}
/** <code>error</code> Symbol index. */
public int error_sym() {return 1;}
}
/** Cup generated class to encapsulate user supplied action code.*/
class CUP$Parser$actions {
private final Parser parser;
/** Constructor */
CUP$Parser$actions(Parser parser) {
this.parser = parser;
}
/** Method with the actual generated action code. */
public final java_cup.runtime.Symbol CUP$Parser$do_action(
int CUP$Parser$act_num,
java_cup.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 */
java_cup.runtime.Symbol CUP$Parser$result;
/* select the action based on the action number */
switch (CUP$Parser$act_num)
{
/*. . . . . . . . . . . . . . . . . . . .*/
case 14: // val ::= NUM
{
Object RESULT =null;
int v1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
int v1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
Integer v1 = (Integer)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
RESULT = v1;
CUP$Parser$result = parser.getSymbolFactory().newSymbol("val",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 13: // val ::= FALSE
{
Object RESULT =null;
RESULT = false;
CUP$Parser$result = parser.getSymbolFactory().newSymbol("val",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 12: // val ::= TRUE
{
Object RESULT =null;
RESULT = true;
CUP$Parser$result = parser.getSymbolFactory().newSymbol("val",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 11: // type ::= INT
{
Type RESULT =null;
RESULT = Type.Int;
CUP$Parser$result = parser.getSymbolFactory().newSymbol("type",4, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 10: // type ::= BOOL
{
Type RESULT =null;
RESULT = Type.Bool;
CUP$Parser$result = parser.getSymbolFactory().newSymbol("type",4, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 9: // assign ::= LB DEFINE ID LB RB type val RB
{
Assign RESULT =null;
int a1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left;
int a1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right;
String a1 = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value;
int a2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
int a2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
Object a2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
RESULT = new Assign(a1, a2);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("assign",3, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 8: // assigns ::= assign
{
List<Assign> RESULT =null;
int a1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
int a1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
Assign a1 = (Assign)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
RESULT = new ArrayList<Assign>();RESULT.add(a1);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("assigns",2, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 7: // assigns ::= assign assigns
{
List<Assign> RESULT =null;
int a1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
int a1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
Assign a1 = (Assign)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
int a2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
int a2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
List<Assign> a2 = (List<Assign>)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
RESULT = a2; a2.add(a1);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("assigns",2, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 6: // statement ::= LB MODEL assigns RB
{
Result RESULT =null;
int s1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
int s1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
List<Assign> s1 = (List<Assign>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
RESULT = new AssignResult(s1);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("statement",1, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 5: // statement ::= UNSAT
{
Result RESULT =null;
RESULT = new SatResult(false);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("statement",1, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 4: // statement ::= SAT
{
Result RESULT =null;
RESULT = new SatResult(true);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("statement",1, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 3: // statement ::= LB ERROR STRING RB
{
Result RESULT =null;
int s1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
int s1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
String s1 = (String)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
RESULT = new ErrorResult(s1);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("statement",1, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 2: // statements ::= statement
{
List<Result> RESULT =null;
int s1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
int s1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
Result s1 = (Result)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
RESULT = new ArrayList<Result>(); RESULT.add(s1);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("statements",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 1: // statements ::= statement statements
{
List<Result> RESULT =null;
int s1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
int s1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
Result s1 = (Result)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
int s2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
int s2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
List<Result> s2 = (List<Result>)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
RESULT = s2; s2.add(s1);
CUP$Parser$result = parser.getSymbolFactory().newSymbol("statements",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
return CUP$Parser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
case 0: // $START ::= statements EOF
{
Object RESULT =null;
int start_valleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
int start_valright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
List<Result> start_val = (List<Result>)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
RESULT = start_val;
CUP$Parser$result = parser.getSymbolFactory().newSymbol("$START",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
}
/* ACCEPT */
CUP$Parser$parser.done_parsing();
return CUP$Parser$result;
/* . . . . . .*/
default:
throw new Exception(
"Invalid action number found in internal parse table");
}
}
}