// -*- Java -*- This Cup file was machine-generated by BNFC package se.chalmers.cs.gf.CFG; parser code {: public se.chalmers.cs.gf.CFG.Absyn.Grammars pGrammars() throws Exception { java_cup.runtime.Symbol res = parse(); return (se.chalmers.cs.gf.CFG.Absyn.Grammars) res.value; } public > A cons_(B x, A xs) { xs.addFirst(x); return xs; } public void syntax_error(java_cup.runtime.Symbol cur_token) { report_error("Syntax Error, trying to recover and continue parse...", cur_token); } public void unrecovered_syntax_error(java_cup.runtime.Symbol cur_token) throws java.lang.Exception { throw new Exception("Unrecoverable Syntax Error"); } :} nonterminal se.chalmers.cs.gf.CFG.Absyn.Grammars Grammars; nonterminal se.chalmers.cs.gf.CFG.Absyn.Grammar Grammar; nonterminal se.chalmers.cs.gf.CFG.Absyn.ListGrammar ListGrammar; nonterminal se.chalmers.cs.gf.CFG.Absyn.Flag Flag; nonterminal se.chalmers.cs.gf.CFG.Absyn.ListFlag ListFlag; nonterminal se.chalmers.cs.gf.CFG.Absyn.Rule Rule; nonterminal se.chalmers.cs.gf.CFG.Absyn.ListRule ListRule; nonterminal se.chalmers.cs.gf.CFG.Absyn.Fun Fun; nonterminal se.chalmers.cs.gf.CFG.Absyn.Profiles Profiles; nonterminal se.chalmers.cs.gf.CFG.Absyn.ListProfile ListProfile; nonterminal se.chalmers.cs.gf.CFG.Absyn.Profile Profile; nonterminal se.chalmers.cs.gf.CFG.Absyn.ListInteger ListInteger; nonterminal se.chalmers.cs.gf.CFG.Absyn.Symbol Symbol; nonterminal se.chalmers.cs.gf.CFG.Absyn.ListSymbol ListSymbol; nonterminal se.chalmers.cs.gf.CFG.Absyn.Category Category; terminal _SYMB_0; // ; terminal _SYMB_1; // : terminal _SYMB_2; // . terminal _SYMB_3; // -> terminal _SYMB_4; // _ terminal _SYMB_5; // [ terminal _SYMB_6; // ] terminal _SYMB_7; // , terminal _SYMB_8; // end terminal _SYMB_9; // grammar terminal _SYMB_10; // startcat terminal String _STRING_; terminal Integer _INTEGER_; terminal String _IDENT_; terminal String SingleQuoteString; start with Grammars; Grammars ::= ListGrammar:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.Grammars(p_1); :} ; Grammar ::= _SYMB_9 _IDENT_:p_2 ListFlag:p_3 ListRule:p_4 _SYMB_8 _SYMB_9 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.Grammar(p_2,p_3,p_4); :} ; ListGrammar ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListGrammar(); :} | ListGrammar:p_1 Grammar:p_2 {: RESULT = p_1; p_1.addLast(p_2); :} ; Flag ::= _SYMB_10 Category:p_2 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.StartCat(p_2); :} ; ListFlag ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListFlag(); :} | ListFlag:p_1 Flag:p_2 _SYMB_0 {: RESULT = p_1; p_1.addLast(p_2); :} ; Rule ::= Fun:p_1 _SYMB_1 Profiles:p_3 _SYMB_2 Category:p_5 _SYMB_3 ListSymbol:p_7 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.Rule(p_1,p_3,p_5,p_7); :} ; ListRule ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListRule(); :} | ListRule:p_1 Rule:p_2 _SYMB_0 {: RESULT = p_1; p_1.addLast(p_2); :} ; Fun ::= _IDENT_:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.Cons(p_1); :} | _SYMB_4 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.Coerce(); :} ; Profiles ::= _SYMB_5 ListProfile:p_2 _SYMB_6 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.Profiles(p_2); :} ; ListProfile ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListProfile(); :} | Profile:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListProfile(); RESULT.addLast(p_1); :} | Profile:p_1 _SYMB_7 ListProfile:p_3 {: RESULT = p_3; p_3.addFirst(p_1); :} ; Profile ::= _SYMB_5 ListInteger:p_2 _SYMB_6 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.UnifyProfile(p_2); :} | _IDENT_:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ConstProfile(p_1); :} ; ListInteger ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListInteger(); :} | _INTEGER_:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListInteger(); RESULT.addLast(p_1); :} | _INTEGER_:p_1 _SYMB_7 ListInteger:p_3 {: RESULT = p_3; p_3.addFirst(p_1); :} ; Symbol ::= Category:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.CatS(p_1); :} | _STRING_:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.TermS(p_1); :} ; ListSymbol ::= _SYMB_2 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListSymbol(); :} | Symbol:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.ListSymbol(); RESULT.addLast(p_1); :} | Symbol:p_1 ListSymbol:p_2 {: RESULT = p_2; p_2.addFirst(p_1); :} ; Category ::= SingleQuoteString:p_1 {: RESULT = new se.chalmers.cs.gf.CFG.Absyn.Category(p_1); :} ;