HandlerDecl handlerDecl() { List <Assignment> context = new List <Assignment>(); Trigger lhs = trigger(); match(EngageToken.ARROW); Reaction rhs = reaction(); if (LookAhead(EngageToken.KW_WHERE)) { match(EngageToken.KW_WHERE); Assignment a = assignment(); context.Add(a); while (LookAhead(EngageToken.COMMA)) { match(EngageToken.COMMA); a = assignment(); context.Add(a); } } HandlerDecl hd = new HandlerDecl(); hd.LHS = lhs; hd.RHS = rhs; hd.Context = context; return(hd); }
private EngSpec EngageSpec() { var tds = new List <TypeDecl>(); var lds = new List <TokenDecl>(); var hds = new List <HandlerDecl>(); match(EngageToken.KW_NAMESPACE); string ns = consumeText(EngageToken.ID); match(EngageToken.KW_TYPES); while (la_typeDecl()) { tds.Add(TypeDeclaration()); } match(EngageToken.KW_TOKENS); while (la_tokenDecl()) { lds.Add(TokenDeclaration()); } match(EngageToken.KW_HANDLERS); while (la_handlerDecl()) { HandlerDecl hd = handlerDecl(); hds.Add(hd); } return(new EngSpec { NS = ns, Types = tds, Tokens = lds, Handlers = hds }); }