//---------------------------------------------------- // The following code was generated by jh-javacup-1.2 20210807 // Sun Oct 27 17:48:14 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:14 CET 2024 */ public class ParserAP extends com.github.jhoenicke.javacup.runtime.LRParser { /** Default constructor. */ public ParserAP() {super();} /** Constructor which sets the default scanner. */ public ParserAP(com.github.jhoenicke.javacup.runtime.Scanner s) {super(s);} /** Constructor which sets the default scanner. */ public ParserAP(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[] { "\044\000\002\002\003\001\003\001\003\001\003" + "\001\001\001\001\004\003\004\003\004\003\004" + "\003\004\002\004\003\004\001\004\001\004\001" + "\004\001\003\001\041\057\047\047\271\043\261" + "\225\u01e1\u01cb\u01b5\u019f\041\u0189\u021f\u0173\u015d\u022f" + "\u0147\215\161\151\115\105\051\041\u0131\u011b\u0105" + "\357\331\u0217\u0207\u01f7\u0253\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\041\001\013\004\004" + "\002\030\013\002\011\001\007\030\015\027\013" + "\041\001\041\001\027\015\041\001\041\001\030" + "\035\030\037\030\023\030\025\027\035\027\037" + "\027\023\027\025\026\013\000\003\041\001\026" + "\015\025\013\041\001\041\001\025\015\041\001" + "\041\001\026\035\026\037\026\023\026\025\025" + "\035\025\037\025\023\025\025\024\013\041\001" + "\041\001\024\015\023\013\041\001\041\001\023" + "\015\041\001\041\001\024\035\024\037\024\023" + "\024\025\023\035\023\037\023\023\023\025\022" + "\013\041\001\041\001\022\015\006\013\041\001" + "\041\001\006\015\041\001\041\001\022\035\022" + "\037\022\023\022\025\006\035\006\037\006\023" + "\006\025\005\013\041\001\041\001\005\015\003" + "\013\041\001\041\001\003\015\041\001\041\001" + "\005\035\005\037\005\023\005\025\003\017\003" + "\021\003\023\003\025\035\026\041\001\041\001" + "\035\026\035\026\035\026\035\026\035\026\035" + "\026\035\026\035\026\034\024\041\001\041\001" + "\034\024\034\024\034\024\034\024\034\024\034" + "\024\034\024\034\024\033\022\041\001\041\001" + "\033\022\033\022\033\022\033\051\033\053\033" + "\022\033\022\033\022\032\020\041\001\041\001" + "\032\020\032\020\032\020\032\051\032\053\032" + "\020\032\020\032\020\031\032\041\001\041\001" + "\031\032\031\032\031\032\031\032\031\032\031" + "\032\031\032\031\032\021\030\041\001\041\001" + "\021\030\021\030\021\030\021\030\021\030\021" + "\030\021\030\021\030\017\042\041\001\041\001" + "\017\042\017\042\017\042\017\042\017\042\017" + "\042\017\042\017\042\016\040\041\001\041\001" + "\016\040\016\040\016\040\016\040\016\040\016" + "\040\016\040\016\040\014\034\041\001\041\001" + "\014\034\014\034\014\034\014\034\014\034\014" + "\034\014\034\014\034\012\036\041\001\041\001" + "\012\036\012\036\012\036\012\036\012\036\012" + "\036\012\036\012\036\011\044\041\001\041\001" + "\011\044\011\044\011\044\011\044\011\044\011" + "\044\011\044\011\044\010\016\041\001\041\001" + "\041\001\010\042\010\042\010\042\010\042\010" + "\042\010\042\010\042\007\014\041\001\041\001" + "\041\001\007\040\007\040\007\040\007\040\007" + "\040\007\040\007\040\040\012\041\001\041\001" + "\041\001\040\045\040\047\040\051\040\053\037" + "\010\041\001\041\001\041\001\037\045\037\047" + "\037\051\037\053\036\006\041\001\041\001\041" + "\001\036\045\036\047\036\051\036\053\015\045" + "\015\047\015\051\015\053\015\055\015\057\015" + "\061\020\063\020\045\020\047\020\051\020\053" + "\041\001\041\001\041\001\041\001\041\001\041" + "\001\041\001\041\001\041\001\045\000\001\002" + "\006\001\040\036\013\001\014\015\014\040\014" + "\037\014\036\001\034\032\030\026\014\012\010" + "\014\035\014\034\014\033\014\032\014\021\014" + "\020" }); /** Return parse table */ protected com.github.jhoenicke.javacup.runtime.ParseTable parse_table() { return CUP$parse_table; } /** Instance of action encapsulation class. */ protected CUP$ParserAP$action action_obj; /** Action encapsulation object initializer. */ protected void init_actions() { action_obj = new CUP$ParserAP$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$ParserAP$action { private final ParserAP parser; /** Constructor */ CUP$ParserAP$action(ParserAP 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 ::= assign 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); } // assign ::= NAME COLON ap case 1: { 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; 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; String n = (String) n$.value; RESULT = new AtomicProposition(n, a); return parser.getSymbolFactory().newSymbol("assign", 2, n$, a$, RESULT); } // ap ::= expr EQUALS expr case 2: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e2left = e2$.left; int e2right = e2$.right; AstNode e2 = (AstNode) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = new ComperativeOperator(ComperativeType.equals, e1, e2); return parser.getSymbolFactory().newSymbol("ap", 1, e1$, e2$, RESULT); } // ap ::= expr GREATER expr case 3: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e2left = e2$.left; int e2right = e2$.right; AstNode e2 = (AstNode) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = new ComperativeOperator(ComperativeType.greater, e1, e2); return parser.getSymbolFactory().newSymbol("ap", 1, e1$, e2$, RESULT); } // ap ::= expr GEQ expr case 4: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e2left = e2$.left; int e2right = e2$.right; AstNode e2 = (AstNode) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = new ComperativeOperator(ComperativeType.geq, e1, e2); return parser.getSymbolFactory().newSymbol("ap", 1, e1$, e2$, RESULT); } // ap ::= TRUE case 5: { 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", 1, CUP$sym, CUP$sym, RESULT); } // ap ::= FALSE case 6: { AstNode RESULT; RESULT = new BoolLiteral(false); 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", 1, CUP$sym, CUP$sym, RESULT); } // expr ::= expr PLUS expr case 7: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e2left = e2$.left; int e2right = e2$.right; AstNode e2 = (AstNode) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = new BinaryOperator(BinaryType.plus, e1, e2); return parser.getSymbolFactory().newSymbol("expr", 4, e1$, e2$, RESULT); } // expr ::= expr MINUS expr case 8: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e2left = e2$.left; int e2right = e2$.right; AstNode e2 = (AstNode) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = new BinaryOperator(BinaryType.minus, e1, e2); return parser.getSymbolFactory().newSymbol("expr", 4, e1$, e2$, RESULT); } // expr ::= expr TIMES expr case 9: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e2left = e2$.left; int e2right = e2$.right; AstNode e2 = (AstNode) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = new BinaryOperator(BinaryType.times, e1, e2); return parser.getSymbolFactory().newSymbol("expr", 4, e1$, e2$, RESULT); } // expr ::= expr DIVIDE expr case 10: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e2left = e2$.left; int e2right = e2$.right; AstNode e2 = (AstNode) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 3)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = new BinaryOperator(BinaryType.divide, e1, e2); return parser.getSymbolFactory().newSymbol("expr", 4, e1$, e2$, RESULT); } // expr ::= MINUS expr case 11: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = RESULT = new IntLiteral(((IntLiteral)e1).getValue() * -1); return parser.getSymbolFactory().newSymbol("expr", 4, ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)), e1$, RESULT); } // expr ::= LPAR expr RPAR case 12: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol e1$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 2)); int e1left = e1$.left; int e1right = e1$.right; AstNode e1 = (AstNode) e1$.value; RESULT = e1; return parser.getSymbolFactory().newSymbol("expr", 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); } // expr ::= name case 13: { 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("expr", 4, n$, n$, RESULT); } // expr ::= INT case 14: { AstNode RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); int ileft = i$.left; int iright = i$.right; Integer i = (Integer) i$.value; RESULT = new IntLiteral(i); return parser.getSymbolFactory().newSymbol("expr", 4, i$, i$, RESULT); } // expr ::= TRUE case 15: { 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("expr", 4, CUP$sym, CUP$sym, RESULT); } // expr ::= FALSE case 16: { AstNode RESULT; RESULT = new BoolLiteral(false); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = ((com.github.jhoenicke.javacup.runtime.Symbol) CUP$stack.get(CUP$size - 1)); return parser.getSymbolFactory().newSymbol("expr", 4, CUP$sym, CUP$sym, RESULT); } // name ::= NAME case 17: { 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", 3, m$, m$, RESULT); } /* . . . . . .*/ default: throw new InternalError( "Invalid action number found in internal parse table"); } } }