public override object VisitNonDefaultEvent(PParser.NonDefaultEventContext context)
        {
            // HALT | iden
            var eventName = context.GetText();

            if (!CurrentScope.Lookup(eventName, out PEvent pEvent))
            {
                throw Handler.MissingDeclaration(context, "event", eventName);
            }
            return(pEvent);
        }
Exemple #2
0
        public override object VisitStateDefer(PParser.StateDeferContext context)
        {
            if (CurrentMachine.IsSpec)
            {
                throw Handler.DeferredEventInMonitor(context, CurrentMachine);
            }

            // DEFER nonDefaultEventList
            IList <PParser.NonDefaultEventContext> eventContexts = context.nonDefaultEventList()._events;

            IStateAction[] actions = new IStateAction[eventContexts.Count];
            for (int i = 0; i < eventContexts.Count; i++)
            {
                PParser.NonDefaultEventContext token = eventContexts[i];
                if (!CurrentScope.Lookup(token.GetText(), out PEvent evt))
                {
                    throw Handler.MissingDeclaration(token, "event", token.GetText());
                }

                actions[i] = new EventDefer(token, evt);
            }

            return(actions);
        }