// -*- Java -*- This Cup file was machine-generated by BNFC package se.chalmers.cs.gf.MCFG; parser code {: public se.chalmers.cs.gf.MCFG.Absyn.MCFGM pMCFGM() throws Exception { java_cup.runtime.Symbol res = parse(); return (se.chalmers.cs.gf.MCFG.Absyn.MCFGM) 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.MCFG.Absyn.MCFGM MCFGM; nonterminal se.chalmers.cs.gf.MCFG.Absyn.MCFG MCFG; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ListMCFG ListMCFG; nonterminal se.chalmers.cs.gf.MCFG.Absyn.Flag Flag; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ListFlag ListFlag; nonterminal se.chalmers.cs.gf.MCFG.Absyn.Rule Rule; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ListRule ListRule; nonterminal se.chalmers.cs.gf.MCFG.Absyn.Profile Profile; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ListProfileItem ListProfileItem; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ProfileItem ProfileItem; nonterminal se.chalmers.cs.gf.MCFG.Absyn.Field Field; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ListField ListField; nonterminal se.chalmers.cs.gf.MCFG.Absyn.Sym Sym; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ListSym ListSym; nonterminal se.chalmers.cs.gf.MCFG.Absyn.Cat Cat; nonterminal se.chalmers.cs.gf.MCFG.Absyn.ListCat ListCat; 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; // , terminal _SYMB_9; // ? terminal _SYMB_10; // = terminal _SYMB_11; // @ terminal _SYMB_12; // end terminal _SYMB_13; // grammar terminal _SYMB_14; // startcat terminal String _STRING_; terminal Integer _INTEGER_; terminal String _IDENT_; terminal String SingleQuoteString; start with MCFGM; MCFGM ::= ListMCFG:p_1 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.MCFGM(p_1); :} ; MCFG ::= _SYMB_13 _IDENT_:p_2 _SYMB_0 ListFlag:p_4 ListRule:p_5 _SYMB_12 _SYMB_13 _SYMB_0 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.MCFG(p_2,p_4,p_5); :} ; ListMCFG ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListMCFG(); :} | ListMCFG:p_1 MCFG:p_2 {: RESULT = p_1; p_1.addLast(p_2); :} ; Flag ::= _SYMB_14 Cat:p_2 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.StartCat(p_2); :} ; ListFlag ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListFlag(); :} | ListFlag:p_1 Flag:p_2 _SYMB_0 {: RESULT = p_1; p_1.addLast(p_2); :} ; Rule ::= _IDENT_:p_1 Profile:p_2 _SYMB_1 Cat:p_4 _SYMB_2 ListCat:p_6 _SYMB_3 _SYMB_4 ListField:p_9 _SYMB_5 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.Rule(p_1,p_2,p_4,p_6,p_9); :} ; ListRule ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListRule(); :} | ListRule:p_1 Rule:p_2 _SYMB_0 {: RESULT = p_1; p_1.addLast(p_2); :} ; Profile ::= _SYMB_6 ListProfileItem:p_2 _SYMB_7 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.Profile(p_2); :} ; ListProfileItem ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListProfileItem(); :} | ProfileItem:p_1 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListProfileItem(); RESULT.addLast(p_1); :} | ProfileItem:p_1 _SYMB_8 ListProfileItem:p_3 {: RESULT = p_3; p_3.addFirst(p_1); :} ; ProfileItem ::= _INTEGER_:p_1 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ArgProfileItem(p_1); :} | _SYMB_9 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.MetaProfileItem(); :} ; Field ::= _IDENT_:p_1 _SYMB_10 ListSym:p_3 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.Field(p_1,p_3); :} ; ListField ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListField(); :} | Field:p_1 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListField(); RESULT.addLast(p_1); :} | Field:p_1 _SYMB_0 ListField:p_3 {: RESULT = p_3; p_3.addFirst(p_1); :} ; Sym ::= _STRING_:p_1 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.Term(p_1); :} | Cat:p_1 _SYMB_11 _INTEGER_:p_3 _SYMB_1 _IDENT_:p_5 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.Proj(p_1,p_3,p_5); :} ; ListSym ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListSym(); :} | ListSym:p_1 Sym:p_2 {: RESULT = p_1; p_1.addLast(p_2); :} ; Cat ::= SingleQuoteString:p_1 {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.Cat(p_1); :} ; ListCat ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.MCFG.Absyn.ListCat(); :} | ListCat:p_1 Cat:p_2 {: RESULT = p_1; p_1.addLast(p_2); :} ;