Ejemplo n.º 1
0
        /// <summary>
        /// initializing_item :
        ///     ON EVENT key (WHEN rule_conditions)? RECURSIVE? SWITCH key
        ///     ;
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override object VisitInitializing_item([NotNull] WorkflowParser.Initializing_itemContext context)
        {
            var    keys      = context.key();
            string eventName = (string)VisitKey(keys[0]);
            string _switch   = (string)VisitKey(keys[1]);

            string conditionTxt          = string.Empty;
            string conditionCode         = string.Empty;
            Func <RunContext, bool> func = null;
            RuleSpan whenRulePosition    = null;

            if (context.WHEN() != null)
            {
                var condition = context.rule_conditions();
                conditionTxt = condition.GetText();
                var compilation = ((Func <RunContext, bool>, string))Compile((ExpressionModel)VisitRule_conditions(condition));
                func             = compilation.Item1;
                conditionCode    = compilation.Item2;
                whenRulePosition = new RuleSpan()
                {
                    StartLine   = condition.Start.Line,
                    StartColumn = condition.Start.Column,
                    StartIndex  = condition.Start.StartIndex,

                    StopLine   = condition.Stop.Line,
                    StopColumn = condition.Stop.Column,
                    StopIndex  = condition.Stop.StopIndex,
                };
            }

            InitializationOnEventConfig c1 = new InitializationOnEventConfig()
            {
                EventName = eventName,
                Recursive = context.RECURSIVE() != null,
            }
            .AddSwitch(_switch, func, conditionTxt, conditionCode, whenRulePosition);

            return(c1);
        }
 /// <summary>
 /// Visit a parse tree produced by <see cref="WorkflowParser.initializing_item"/>.
 /// <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 VisitInitializing_item([NotNull] WorkflowParser.Initializing_itemContext context)
 {
     return(VisitChildren(context));
 }
 /// <summary>
 /// initializing_item :
 ///     ON EVENT eventNamereference (WHEN rule_conditions)? RECURSIVE? SWITCH key
 ///     ;
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public override object VisitInitializing_item([NotNull] WorkflowParser.Initializing_itemContext context)
 {
     return(base.VisitInitializing_item(context));
 }