public override object VisitSpecMachineDecl(PParser.SpecMachineDeclContext context) { // SPEC name=Iden var specMachine = (Machine)nodesToDeclarations.Get(context); // spec machines neither send nor receive events. specMachine.Receives = new EventSet(); specMachine.Sends = new EventSet(); // OBSERVES eventSetLiteral specMachine.Observes = new EventSet(); foreach (var pEvent in (PEvent[])Visit(context.eventSetLiteral())) { specMachine.Observes.AddEvent(pEvent); } // machineBody using (currentScope.NewContext(specMachine.Scope)) using (currentMachine.NewContext(specMachine)) { Visit(context.machineBody()); } return(specMachine); }
public override object VisitSpecMachineDecl(PParser.SpecMachineDeclContext context) { string symbolName = context.name.GetText(); Machine decl = CurrentScope.Put(symbolName, context); nodesToDeclarations.Put(context, decl); return(VisitChildrenWithNewScope(decl, context)); }
public Machine Put(string name, PParser.SpecMachineDeclContext tree) { Machine specMachine = new Machine(name, tree); CheckConflicts( specMachine, Namespace(machines), Namespace(interfaces), Namespace(enums), Namespace(typedefs)); machines.Add(name, specMachine); return(specMachine); }
public override object VisitSpecMachineDecl(PParser.SpecMachineDeclContext context) { // SPEC name=Iden var specMachine = (Machine)nodesToDeclarations.Get(context); // OBSERVES eventSetLiteral specMachine.Observes = new NamedEventSet($"{specMachine.Name}$eventset", context.eventSetLiteral()); specMachine.Observes.AddEvents((PEvent[])Visit(context.eventSetLiteral())); // machineBody using (currentScope.NewContext(specMachine.Scope)) using (currentMachine.NewContext(specMachine)) { Visit(context.machineBody()); } return(specMachine); }