/// <summary> /// The visit subroutine for comparison operators. /// </summary> public override VisitorResult VisitCompExp([NotNull] HaskellmmParser.CompExpContext context) { if (context.children.Count < 3) { throw new VisitException(context.Start.Line, context.Start.Column, "Expected expr compare expr"); } CompOperation operation; switch (context.children[1].GetText()) { case "<": operation = CompOperation.Less; break; case ">": operation = CompOperation.Greater; break; case "<=": operation = CompOperation.LessOrEqual; break; case ">=": operation = CompOperation.GreaterOrEqual; break; case "==": operation = CompOperation.Equal; break; case "!=": operation = CompOperation.NotEqual; break; default: throw new VisitException(context.Start.Line, context.Start.Column, "Operator was not comparative operator"); } AddExprNode(new CompNode(CreateNodeContext(context), operation)); return(base.VisitCompExp(context)); }
/// <summary> /// Visit a parse tree produced by the <c>compExp</c> /// labeled alternative in <see cref="HaskellmmParser.expr"/>. /// <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 VisitCompExp([NotNull] HaskellmmParser.CompExpContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by the <c>compExp</c> /// labeled alternative in <see cref="HaskellmmParser.expr"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitCompExp([NotNull] HaskellmmParser.CompExpContext context) { }