Ejemplo n.º 1
0
        public override object VisitGroup(PParser.GroupContext context)
        {
            StateGroup group = (StateGroup)nodesToDeclarations.Get(context);

            group.OwningMachine = CurrentMachine;
            using (currentScope.NewContext(group.Scope))
            {
                foreach (PParser.GroupItemContext 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);
        }