コード例 #1
0
ファイル: InvokeCodeNode.cs プロジェクト: rdacomp/spectnetide
        /// <summary>
        /// Creates a clause with the span defined by the passed context
        /// </summary>
        /// <param name="context">Parser rule context</param>
        /// <param name="startExpr">Start expression</param>
        /// <param name="stopExpr">Stop expression</param>
        public InvokeCodeNode(Z80TestParser.InvokeCodeContext context, ExpressionNode startExpr,
                              ExpressionNode stopExpr) : base(context)
        {
            StartExpr = startExpr;
            if (context.CALL() != null)
            {
                IsCall          = true;
                CallOrStartSpan = new TextSpan(context.CALL());
                return;
            }

            IsCall          = false;
            CallOrStartSpan = new TextSpan(context.START());
            if (context.STOP() != null)
            {
                IsHalt         = false;
                StopOrHaltSpan = new TextSpan(context.STOP());
                StopExpr       = stopExpr;
                return;
            }

            if (context.HALT() != null)
            {
                IsHalt         = true;
                StopOrHaltSpan = new TextSpan(context.HALT());
            }
        }
コード例 #2
0
        /// <summary>
        /// Visit a parse tree produced by <see cref="Z80TestParser.invokeCode"/>.
        /// <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 override object VisitInvokeCode(Z80TestParser.InvokeCodeContext context)
        {
            if (IsInvalidContext(context))
            {
                return(null);
            }

            var startExpr = context.expr().Length > 0
                ? (ExpressionNode)VisitExpr(context.expr()[0])
                : null;
            var stopExpr = context.expr().Length > 1
                ? (ExpressionNode)VisitExpr(context.expr()[1])
                : null;

            return(new InvokeCodeNode(context, startExpr, stopExpr));
        }
コード例 #3
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="Z80TestParser.invokeCode"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitInvokeCode([NotNull] Z80TestParser.InvokeCodeContext context)
 {
 }
コード例 #4
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="Z80TestParser.invokeCode"/>.
 /// <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 VisitInvokeCode([NotNull] Z80TestParser.InvokeCodeContext context)
 {
     return(VisitChildren(context));
 }