public override IEnumerable <StructureBase> VisitAutomatonDefinition(CdeltaParser.AutomatonDefinitionContext context) { var result = new Automaton(context.IDENTIFIER().GetText()) { Modifier = context.accessModifier()?.GetText(), IsPartial = context.PARTIAL() != null, DataType = context.automatonDataType()?.GetText() }; foreach (var child in base.VisitAutomatonDefinition(context)) { if (child is State state) { state.Parent = result; result.States.Add(state); } else if (child is Transition transition) { transition.Parent = result; result.Transitions.Add(transition); } } yield return(result); }
public override object VisitAutomatonDefinition(CdeltaParser.AutomatonDefinitionContext context) { Automaton automaton = new Automaton(context.IDENTIFIER().GetText()); ((CodeFile)contextWithStructure[context.Parent]).Automaton = automaton; contextWithStructure.Add(context, automaton); return(base.VisitAutomatonDefinition(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="CdeltaParser.automatonDefinition"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitAutomatonDefinition([NotNull] CdeltaParser.AutomatonDefinitionContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="CdeltaParser.automatonDefinition"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitAutomatonDefinition([NotNull] CdeltaParser.AutomatonDefinitionContext context) { return(VisitChildren(context)); }