public override object VisitExpressionContentequality(FaParser.ExpressionContentequalityContext context) { object left = Visit(context.expressionContent(0)); object right = Visit(context.expressionContent(1)); bool leftIsNum = left is int || left is double; bool rigthIsNum = right is int || right is double; bool areNums = leftIsNum && rigthIsNum; bool areStrgs = left is string && right is string; object result = null; switch (context.EQUALITY_NUMERIC().GetText()) { case "igual": if (areNums) { result = Convert.ToDouble(left) == Convert.ToDouble(right); } else if (areStrgs) { result = String.Compare(left.ToString(), right.ToString()) < 0; } else { Debug.LogError("No es posible hacer esta operacion relacional entre estos tipos de dato"); // Console.WriteLine("No es posible hacer esta operacion relacional entre estos tipos de dato"); MyConsole.main.AppendText("No es posible hacer esta operacion relacional entre estos tipos de dato"); } break; case "diferente": if (areNums) { result = Convert.ToDouble(left) != Convert.ToDouble(right); } else if (areStrgs) { result = String.Compare(left.ToString(), right.ToString()) <= 0; } else { Debug.LogError("No es posible hacer esta operacion relacional entre estos tipos de dato"); // Console.WriteLine("No es posible hacer esta operacion relacional entre estos tipos de dato"); MyConsole.main.AppendText("No es posible hacer esta operacion relacional entre estos tipos de dato"); } break; } return(result); }
/// <summary> /// Visit a parse tree produced by the <c>expressionContentequality</c> /// labeled alternative in <see cref="FaParser.expressionContent"/>. /// <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 VisitExpressionContentequality([NotNull] FaParser.ExpressionContentequalityContext context) { return(VisitChildren(context)); }