public override Argument VisitArgumentExtendedOrDirect(AsmParser.ArgumentExtendedOrDirectContext context) { try { int val = m_exprEvaluator.Visit(context.expr()); // TODO: infer type rather than checking value? //if (val >= 0 && val < 256) // return new ArgumentWithValue(AddressingMode.Direct, val); //else return(new ArgumentWithValue(AddressingMode.Extended, val)); } catch (UnknownIdentifierException) { if (m_allowDefer) { return(new ArgumentDeferred(AddressingMode.Extended, context)); } else { throw; } } }
/// <summary> /// Visit a parse tree produced by <see cref="AsmParser.ArgumentExtendedOrDirect"/>. /// <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 VisitArgumentExtendedOrDirect([NotNull] AsmParser.ArgumentExtendedOrDirectContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="AsmParser.ArgumentExtendedOrDirect"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitArgumentExtendedOrDirect([NotNull] AsmParser.ArgumentExtendedOrDirectContext context) { }