//---------------------------------------------------- // The following code was generated by jh-javacup-1.2 20210807 // Sun Oct 27 17:48:13 CET 2024 //---------------------------------------------------- package de.uni_freiburg.informatik.ultimate.ltl2aut; import com.github.jhoenicke.javacup.runtime.*; import de.uni_freiburg.informatik.ultimate.ltl2aut.ast.*; import java.util.ArrayList; /** jh-javacup-1.2 20210807 generated parser. * @version Sun Oct 27 17:48:13 CET 2024 */ public class Parser extends com.github.jhoenicke.javacup.runtime.LRParser { /** Default constructor. */ public Parser() {super();} /** Constructor which sets the default scanner. */ public Parser(com.github.jhoenicke.javacup.runtime.Scanner s) {super(s);} /** Constructor which sets the default scanner. */ public Parser(com.github.jhoenicke.javacup.runtime.Scanner s, com.github.jhoenicke.javacup.runtime.SymbolFactory sf) {super(s,sf);} /** The static parse table */ static com.github.jhoenicke.javacup.runtime.ParseTable CUP$parse_table = new com.github.jhoenicke.javacup.runtime.ParseTable(new String[] { "\050\000\002\002\004\011\002\011\001\001\001" + "\003\006\003\003\010\007\010\006\004\001\004" + "\001\004\002\004\003\004\001\006\003\006\003" + "\007\003\007\003\005\001\005\001\052\106\120" + "\056\160\054\054\162\056\122\062\120\052\150" + "\054\146\132\360\136\272\350\340\256\376\242" + "\226\212\052\u0102\176\140\330\320\310\272\162" + "\146\146\132\116\102\056\130\u012c\000\000\000" + "\000\000\000\000\000\000\000\000\000\000\000" + "\000\000\000\000\000\000\000\000\000\000\000" + "\000\000\000\000\000\000\000\000\000\000\000" + "\000\000\000\000\000\000\052\001\013\004\004" + "\002\002\011\032\014\015\016\007\010\005\012" + "\050\022\011\031\005\012\011\033\005\012\050" + "\035\005\012\005\012\000\003\005\012\032\014" + "\015\016\007\013\047\042\001\007\012\006\010" + "\027\047\042\047\042\046\036\047\042\051\020" + "\017\043\046\036\046\036\045\044\046\036\035" + "\107\021\065\045\044\045\044\044\040\045\044" + "\016\041\014\035\044\040\044\040\042\032\044" + "\040\006\023\043\013\042\032\042\032\034\030" + "\042\032\003\013\052\001\034\030\034\030\031" + "\026\034\030\052\001\052\001\031\026\031\103" + "\030\024\031\026\052\001\052\001\030\101\030" + "\024\027\034\030\024\052\001\052\001\027\034" + "\027\034\025\046\027\034\052\001\052\001\025" + "\046\025\046\022\050\025\046\052\001\041\045" + "\022\050\022\050\041\047\022\050\041\051\041" + "\013\040\045\052\001\052\001\040\047\037\045" + "\040\051\040\013\037\047\036\045\037\051\037" + "\013\036\047\024\045\036\051\036\013\024\047" + "\023\045\024\051\024\013\023\047\020\045\023" + "\051\023\013\020\047\026\073\020\051\020\013" + "\052\001\026\075\026\077\033\075\033\077\052" + "\001\033\105\052\001\052\001\052\001\052\001" + "\120\003\050\006\005\007\002\006\001\007\051" + "\012\017\003\001\010\001\110\001\025\101\072" + "\047\027\030\031\001\001\001\001\001\063\054" + "\045\021\001\000\001\001\025\001\001\046\027" + "\030\031\025\001\001\045\027\030\031\025\001" + "\001\044\027\030\031\025\001\001\034\027\030" + "\031\025\001\001\033\027\030\031\025\001\001" + "\026\027\030\031" }); /** Return parse table */ protected com.github.jhoenicke.javacup.runtime.ParseTable parse_table() { return CUP$parse_table; } /** Instance of action encapsulation class. */ protected CUP$Parser$action action_obj; /** Action encapsulation object initializer. */ protected void init_actions() { action_obj = new CUP$Parser$action(this); } /** Invoke a user supplied parse action. */ public com.github.jhoenicke.javacup.runtime.Symbol do_action( int act_num, java.util.ArrayList stack) throws java.lang.Exception { /* call code in generated class */ return action_obj.CUP$do_action(act_num, stack); } } /** Cup generated class to encapsulate user supplied action code.*/ class CUP$Parser$action { private final Parser parser; /** Constructor */ CUP$Parser$action(Parser parser) { this.parser = parser; } /** Method with the actual generated action code. */ public final com.github.jhoenicke.javacup.runtime.Symbol CUP$do_action( int CUP$act_num, java.util.ArrayList CUP$stack) throws java.lang.Exception { /* Stack size for peeking into the stack */ int CUP$size = CUP$stack.size(); /* select the action based on the action number */ switch (CUP$act_num) { // $START ::= claim EOF case 0: { Object RESULT; com.github.jhoenicke.javacup.runtime.Symbol CUP$rhs$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)); int CUP$rhsleft = CUP$rhs$.left; int CUP$rhsright = CUP$rhs$.right; AstNode CUP$rhs = (AstNode) CUP$rhs$.value; RESULT = CUP$rhs; /* ACCEPT */ parser.done_parsing(); return parser.getSymbolFactory().newSymbol("$START", 0, CUP$rhs$, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)), RESULT); } // claim ::= NEVER LCB stmtlist RCB case 1: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)); int sleft = s$.left; int sright = s$.right; ArrayList s = (ArrayList) s$.value; NeverStatement n = new NeverStatement(); n.addAllOutgoing(s); RESULT = n; return parser.getSymbolFactory().newSymbol("claim", 2, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 4)), ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)), RESULT); } // stmtlist ::= lblock stmtlist case 2: { ArrayList RESULT; com.github.jhoenicke.javacup.runtime.Symbol b2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int b2left = b2$.left; int b2right = b2$.right; ArrayList b2 = (ArrayList) b2$.value; com.github.jhoenicke.javacup.runtime.Symbol b1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)); int b1left = b1$.left; int b1right = b1$.right; AstNode b1 = (AstNode) b1$.value; b2.add(0,b1); RESULT = b2; return parser.getSymbolFactory().newSymbol("stmtlist", 9, b1$, b2$, RESULT); } // stmtlist ::= lblock case 3: { ArrayList RESULT; com.github.jhoenicke.javacup.runtime.Symbol b1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int b1left = b1$.left; int b1right = b1$.right; AstNode b1 = (AstNode) b1$.value; ArrayList l = new ArrayList(); l.add(b1); RESULT = l; return parser.getSymbolFactory().newSymbol("stmtlist", 9, b1$, b1$, RESULT); } // name ::= NAME case 4: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol m$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int mleft = m$.left; int mright = m$.right; String m = (String) m$.value; RESULT = new Name(m); return parser.getSymbolFactory().newSymbol("name", 1, m$, m$, RESULT); } // lblock ::= name COLON IF options FI SEMICOLON case 5: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol o$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int oleft = o$.left; int oright = o$.right; ArrayList o = (ArrayList) o$.value; com.github.jhoenicke.javacup.runtime.Symbol n$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 6)); int nleft = n$.left; int nright = n$.right; AstNode n = (AstNode) n$.value; ConditionalBlock cb = new ConditionalBlock(o); RESULT = new LabeledBlock(n, cb); return parser.getSymbolFactory().newSymbol("lblock", 3, n$, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)), RESULT); } // lblock ::= name COLON SKIP case 6: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol n$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int nleft = n$.left; int nright = n$.right; AstNode n = (AstNode) n$.value; RESULT = new LabeledBlock(n, new SkipStatement()); return parser.getSymbolFactory().newSymbol("lblock", 3, n$, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)), RESULT); } // options ::= COLON COLON prop TO GOTO name options case 7: { ArrayList RESULT; com.github.jhoenicke.javacup.runtime.Symbol o$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int oleft = o$.left; int oright = o$.right; ArrayList o = (ArrayList) o$.value; com.github.jhoenicke.javacup.runtime.Symbol m$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)); int mleft = m$.left; int mright = m$.right; AstNode m = (AstNode) m$.value; com.github.jhoenicke.javacup.runtime.Symbol n$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 5)); int nleft = n$.left; int nright = n$.right; AstNode n = (AstNode) n$.value; o.add(0,new OptionStatement(n,new GotoStatement(m))); RESULT = o; return parser.getSymbolFactory().newSymbol("options", 8, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 7)), o$, RESULT); } // options ::= COLON COLON prop TO GOTO name case 8: { ArrayList RESULT; com.github.jhoenicke.javacup.runtime.Symbol m$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int mleft = m$.left; int mright = m$.right; AstNode m = (AstNode) m$.value; com.github.jhoenicke.javacup.runtime.Symbol n$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 4)); int nleft = n$.left; int nright = n$.right; AstNode n = (AstNode) n$.value; ArrayList l = new ArrayList(); l.add(new OptionStatement(n,new GotoStatement(m))); RESULT = l; return parser.getSymbolFactory().newSymbol("options", 8, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 6)), m$, RESULT); } // prop ::= and case 9: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol a$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int aleft = a$.left; int aright = a$.right; AstNode a = (AstNode) a$.value; RESULT = a; return parser.getSymbolFactory().newSymbol("prop", 4, a$, a$, RESULT); } // prop ::= or case 10: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol o$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int oleft = o$.left; int oright = o$.right; AstNode o = (AstNode) o$.value; RESULT = o; return parser.getSymbolFactory().newSymbol("prop", 4, o$, o$, RESULT); } // prop ::= NOT prop case 11: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol p$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int pleft = p$.left; int pright = p$.right; AstNode p = (AstNode) p$.value; RESULT = new Not(p); return parser.getSymbolFactory().newSymbol("prop", 4, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)), p$, RESULT); } // prop ::= LPAR prop RPAR case 12: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol p$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)); int pleft = p$.left; int pright = p$.right; AstNode p = (AstNode) p$.value; RESULT = p; return parser.getSymbolFactory().newSymbol("prop", 4, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)), ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)), RESULT); } // prop ::= ap case 13: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol a$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int aleft = a$.left; int aright = a$.right; AstNode a = (AstNode) a$.value; RESULT = a; return parser.getSymbolFactory().newSymbol("prop", 4, a$, a$, RESULT); } // and ::= and AND prop case 14: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol p$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int pleft = p$.left; int pright = p$.right; AstNode p = (AstNode) p$.value; com.github.jhoenicke.javacup.runtime.Symbol a$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int aleft = a$.left; int aright = a$.right; AstNode a = (AstNode) a$.value; a.addOutgoing(p); RESULT = a; return parser.getSymbolFactory().newSymbol("and", 6, a$, p$, RESULT); } // and ::= prop AND prop case 15: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol p2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int p2left = p2$.left; int p2right = p2$.right; AstNode p2 = (AstNode) p2$.value; com.github.jhoenicke.javacup.runtime.Symbol p1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int p1left = p1$.left; int p1right = p1$.right; AstNode p1 = (AstNode) p1$.value; BinaryOperator a = new BinaryOperator(BinaryType.and); a.addOutgoing(p1); a.addOutgoing(p2); RESULT = a; return parser.getSymbolFactory().newSymbol("and", 6, p1$, p2$, RESULT); } // or ::= or OR prop case 16: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol p$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int pleft = p$.left; int pright = p$.right; AstNode p = (AstNode) p$.value; com.github.jhoenicke.javacup.runtime.Symbol a$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int aleft = a$.left; int aright = a$.right; AstNode a = (AstNode) a$.value; a.addOutgoing(p); RESULT = a; return parser.getSymbolFactory().newSymbol("or", 7, a$, p$, RESULT); } // or ::= prop OR prop case 17: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol p2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int p2left = p2$.left; int p2right = p2$.right; AstNode p2 = (AstNode) p2$.value; com.github.jhoenicke.javacup.runtime.Symbol p1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int p1left = p1$.left; int p1right = p1$.right; AstNode p1 = (AstNode) p1$.value; BinaryOperator a = new BinaryOperator(BinaryType.or); a.addOutgoing(p1); a.addOutgoing(p2); RESULT = a; return parser.getSymbolFactory().newSymbol("or", 7, p1$, p2$, RESULT); } // ap ::= name case 18: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol n$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int nleft = n$.left; int nright = n$.right; AstNode n = (AstNode) n$.value; RESULT = n; return parser.getSymbolFactory().newSymbol("ap", 5, n$, n$, RESULT); } // ap ::= TRUE case 19: { AstNode RESULT; RESULT = new BoolLiteral(true); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); return parser.getSymbolFactory().newSymbol("ap", 5, CUP$sym, CUP$sym, RESULT); } /* . . . . . .*/ default: throw new InternalError( "Invalid action number found in internal parse table"); } } }