/// <summary> /// Visit a parse tree produced by <see cref="Z80EvalParser.z80Spec"/>. /// <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 VisitZ80Spec(Z80EvalParser.Z80SpecContext context) { if (IsInvalidContext(context)) { return(null); } if (context.reg8() != null || context.reg16() != null) { return(new Z80RegisterNode(context.GetText().ToUpper())); } if (context.flags() != null) { return(new Z80FlagNode(context.GetText().ToUpper())); } if (context.memIndirect() != null) { var specifier = ""; if (context.memIndirect().BYTEF() != null) { specifier = "B"; } else if (context.memIndirect().WORDF() != null) { specifier = "W"; } else if (context.memIndirect().DWORDF() != null) { specifier = "DW"; } return(new MemoryIndirectNode((ExpressionNode)VisitExpr(context.memIndirect().expr()), specifier)); } return(null); }