Пример #1
0
        public NamedEventSet Put(string name, PParser.EventSetDeclContext tree)
        {
            NamedEventSet eventSet = new NamedEventSet(name, tree);

            CheckConflicts(eventSet, Namespace(eventSets), Namespace(interfaces));
            eventSets.Add(name, eventSet);
            return(eventSet);
        }
Пример #2
0
        public override object VisitEventSetDecl(PParser.EventSetDeclContext context)
        {
            string        symbolName = context.name.GetText();
            NamedEventSet decl       = CurrentScope.Put(symbolName, context);

            nodesToDeclarations.Put(context, decl);
            return(null);
        }
Пример #3
0
        public override object VisitEventSetDecl(PParser.EventSetDeclContext context)
        {
            // EVENTSET name=iden
            NamedEventSet es = (NamedEventSet)nodesToDeclarations.Get(context);

            // ASSIGN LBRACE eventSetLiteral RBRACE
            es.AddEvents((PEvent[])Visit(context.eventSetLiteral()));
            // SEMI
            return(es);
        }
Пример #4
0
        public bool Lookup(string name, out NamedEventSet tree)
        {
            Scope current = this;

            while (current != null)
            {
                if (current.Get(name, out tree))
                {
                    return(true);
                }

                current = current.Parent;
            }

            tree = null;
            return(false);
        }
Пример #5
0
        public static StateActionResults BuildActionSets(CompilationContext context, State state)
        {
            NamedEventSet defersSet = new NamedEventSet(state.Name + "_DEFERS", state.SourceLocation);
            NamedEventSet transSet  = new NamedEventSet(state.Name + "_TRANS", state.SourceLocation);
            NamedEventSet dosSet    = new NamedEventSet(state.Name + "_DOS", state.SourceLocation);

            List <(PEvent, Function)>    dos   = new List <(PEvent, Function)>();
            List <(PEvent, int, string)> trans = new List <(PEvent, int, string)>();

            foreach (KeyValuePair <PEvent, TypeChecker.AST.IStateAction> eventActionPair in state.AllEventHandlers)
            {
                PEvent pEvent = eventActionPair.Key;
                switch (eventActionPair.Value)
                {
                case EventDefer _:
                    defersSet.AddEvent(pEvent);
                    break;

                case EventDoAction eventDoAction:
                    dosSet.AddEvent(pEvent);
                    dos.Add((pEvent, eventDoAction.Target));
                    break;

                case EventGotoState eventGotoState:
                    transSet.AddEvent(pEvent);
                    string transFunName = eventGotoState.TransitionFunction == null
                            ? "_P_NO_OP"
                            : context.Names.GetNameForDecl(eventGotoState.TransitionFunction);
                    trans.Add((pEvent, context.GetDeclNumber(eventGotoState.Target), "&" + transFunName));
                    break;

                case EventIgnore _:
                    dosSet.AddEvent(pEvent);
                    dos.Add((pEvent, null));
                    break;

                case EventPushState eventPushState:
                    transSet.AddEvent(pEvent);
                    trans.Add((pEvent, context.GetDeclNumber(eventPushState.Target), "NULL"));
                    break;
                }
            }

            return(new StateActionResults(defersSet, transSet, dosSet, dos, trans));
        }
Пример #6
0
 public DataType(NamedEventSet eventSet) : base(TypeKind.Data)
 {
 }
Пример #7
0
 public PermissionType(NamedEventSet eventSet)
     : base(TypeKind.Base)
 {
     origin = eventSet;
     AllowedPermissions = new Lazy<IReadOnlyList<PEvent>>(() => eventSet.Events.ToList());
 }
Пример #8
0
 public PermissionType(NamedEventSet eventSet) : base(TypeKind.Base)
 {
     origin   = eventSet;
     EventSet = eventSet;
 }
Пример #9
0
 public StateActionResults(NamedEventSet defersSet, NamedEventSet transSet, NamedEventSet dosSet,
                           List <(PEvent, Function)> dos,
Пример #10
0
 public bool Get(string name, out NamedEventSet tree)
 {
     return(eventSets.TryGetValue(name, out tree));
 }
Пример #11
0
 public BoundedType(NamedEventSet eventSet) : base(TypeKind.Bounded)
 {
     EventSet = eventSet;
 }