/// <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()); } }
/// <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)); }
/// <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) { }
/// <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)); }