public override object VisitCmpExpression([NotNull] TinyScriptParser.CmpExpressionContext context) { var a = VisitAddExpression(context.addExpression(0)); if (context.ChildCount > 2) { var b = VisitAddExpression(context.addExpression(1)); var op = context.GetChild(1).GetText(); switch (op) { case "==": return(ValueEquals(a, b, context)); case "!=": return(!ValueEquals(a, b, context)); case "<": return((decimal)a < (decimal)b); case "<=": return((decimal)a <= (decimal)b); case ">": return((decimal)a > (decimal)b); case ">=": return((decimal)a >= (decimal)b); } throw context.Exception("Unsupported operation."); } return(a); }
public override object VisitCmpExpression([NotNull] TinyScriptParser.CmpExpressionContext context) { var ret = (Type)VisitAddExpression(context.addExpression(0)); if (context.ChildCount > 1) { var t2 = (Type)VisitAddExpression(context.addExpression(1)); var op = context.GetChild(1).GetText(); var cmpType = GetOpType(context, ret, t2); var b = OpBuilder.GetOpBuilder(cmpType, context, _builder); b.ProcessCmp(op); return(typeof(bool)); } return(ret); }
/// <summary> /// Visit a parse tree produced by <see cref="TinyScriptParser.cmpExpression"/>. /// <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 VisitCmpExpression([NotNull] TinyScriptParser.CmpExpressionContext context) { return(VisitChildren(context)); }