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); }
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); }
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)); }
public StateGroup Put(string name, PParser.GroupContext tree) { StateGroup group = new StateGroup(name, tree); CheckConflicts(group, Namespace(stateGroups)); stateGroups.Add(name, group); return(group); }