void DECL(out AST e) { SymDeclaring e1; AST e2 = null; StructDcel es = null; AST idval; List <AST> el = new List <AST>(); DCL(out e1, out idval); if (la.kind == 3 || la.kind == 10 || la.kind == 12) { if (la.kind == 10 || la.kind == 12) { ASSIG(out e2, idval); } else { Get(); AST structid = new SymReferencing(t.val); string idofstruct = t.val; if (la.kind == 10) { Get(); STRUCTDECL(out el); } es = new StructDcel(idval, el); es.structId = structid; e2 = new Assigning(structid, es); e1.id = idofstruct; } } e = new Decl(e1, e2); Expect(11); }
void ASSIG(out AST e, AST idval) { e = null; if (la.kind == 12) { Get(); EXPR(out e); } else if (la.kind == 10) { Get(); STRUCTDEF(out e, idval); } else { SynErr(51); } e = new Assigning(idval, e); }
public abstract void Visit(Assigning n);