// -*- Java -*- This Cup file was machine-generated by BNFC package se.chalmers.cs.gf.dot; parser code {: public se.chalmers.cs.gf.dot.Absyn.Graph pGraph() throws Exception { java_cup.runtime.Symbol res = parse(); return (se.chalmers.cs.gf.dot.Absyn.Graph) res.value; } 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.dot.Absyn.Graph Graph; nonterminal se.chalmers.cs.gf.dot.Absyn.GraphType GraphType; nonterminal se.chalmers.cs.gf.dot.Absyn.ListStmt ListStmt; nonterminal se.chalmers.cs.gf.dot.Absyn.Stmt Stmt; nonterminal se.chalmers.cs.gf.dot.Absyn.MaybeAttrList MaybeAttrList; nonterminal se.chalmers.cs.gf.dot.Absyn.ListAttr ListAttr; nonterminal se.chalmers.cs.gf.dot.Absyn.Attr Attr; nonterminal se.chalmers.cs.gf.dot.Absyn.ID ID; 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; // digraph terminal String _STRING_; terminal Integer _INTEGER_; terminal Double _DOUBLE_; terminal String _IDENT_; start with Graph; Graph ::= GraphType:p_1 _SYMB_0 ListStmt:p_3 _SYMB_1 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.Graph(p_1,p_3); :} ; GraphType ::= _SYMB_8 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.Digraph(); :} ; ListStmt ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.dot.Absyn.ListStmt(); :} | ListStmt:p_1 Stmt:p_2 _SYMB_2 {: RESULT = p_1; p_1.addLast(p_2); :} ; Stmt ::= ID:p_1 MaybeAttrList:p_2 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.NodeStmt(p_1,p_2); :} | ID:p_1 _SYMB_3 ID:p_3 MaybeAttrList:p_4 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.EdgeStmt(p_1,p_3,p_4); :} ; MaybeAttrList ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.dot.Absyn.NoAttrList(); :} | _SYMB_4 ListAttr:p_2 _SYMB_5 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.AnAttrList(p_2); :} ; ListAttr ::= /* empty */ {: RESULT = new se.chalmers.cs.gf.dot.Absyn.ListAttr(); :} | Attr:p_1 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.ListAttr(); RESULT.addLast(p_1); :} | Attr:p_1 _SYMB_6 ListAttr:p_3 {: RESULT = p_3; p_3.addFirst(p_1); :} ; Attr ::= ID:p_1 _SYMB_7 ID:p_3 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.Attr(p_1,p_3); :} ; ID ::= _IDENT_:p_1 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.IdentID(p_1); :} | _STRING_:p_1 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.StringID(p_1); :} | _INTEGER_:p_1 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.IntID(p_1); :} | _DOUBLE_:p_1 {: RESULT = new se.chalmers.cs.gf.dot.Absyn.DoubleID(p_1); :} ;