public override object VisitGroup(PParser.GroupContext context)
        {
            var group = (StateGroup)nodesToDeclarations.Get(context);

            using (currentScope.NewContext(group.Scope))
            {
                foreach (var groupItemContext in context.groupItem())
                {
                    switch (Visit(groupItemContext))
                    {
                    case StateGroup subGroup:
                        group.AddGroup(subGroup);
                        break;

                    case State state:
                        group.AddState(state);
                        break;

                    default:
                        throw Handler.InternalError(groupItemContext,
                                                    "group item was neither state group nor state");
                    }
                }
            }
            return(group);
        }
Beispiel #2
0
        public override object VisitGroup(PParser.GroupContext context)
        {
            var group = (StateGroup)nodesToDeclarations.Get(context);

            group.OwningMachine = CurrentMachine;
            using (currentScope.NewContext(group.Scope))
            {
                foreach (var groupItemContext in context.groupItem())
                {
                    switch (Visit(groupItemContext))
                    {
                    case StateGroup subGroup:
                        group.AddGroup(subGroup);
                        break;

                    case State state:
                        group.AddState(state);
                        break;

                    default:
                        throw Handler.InternalError(groupItemContext,
                                                    new ArgumentOutOfRangeException(nameof(context)));
                    }
                }
            }

            return(group);
        }
Beispiel #3
0
        public override object VisitGroup(PParser.GroupContext context)
        {
            string symbolName = context.name.GetText();

            AST.States.StateGroup group = CurrentScope.Put(symbolName, context);
            nodesToDeclarations.Put(context, group);
            return(VisitChildrenWithNewScope(group, context));
        }
Beispiel #4
0
        public StateGroup Put(string name, PParser.GroupContext tree)
        {
            StateGroup group = new StateGroup(name, tree);

            CheckConflicts(group, Namespace(stateGroups));
            stateGroups.Add(name, group);
            return(group);
        }