private Expression VisitComparisonExpression(IToken operationToken, VelocityParser.ExpressionContext left, VelocityParser.ExpressionContext right, VelocityParser.ExpressionContext context) { VelocityOperator operation; switch (operationToken.Type) { case VelocityLexer.LessThan: operation = VelocityOperator.LessThan; break; case VelocityLexer.GreaterThan: operation = VelocityOperator.GreaterThan; break; case VelocityLexer.LessThanOrEqual: operation = VelocityOperator.LessThanOrEqual; break; case VelocityLexer.GreaterThanOrEqual: operation = VelocityOperator.GreaterThanOrEqual; break; case VelocityLexer.Equal: operation = VelocityOperator.Equal; break; case VelocityLexer.NotEqual: operation = VelocityOperator.NotEqual; break; default: throw new ArgumentOutOfRangeException(nameof(operationToken)); } var visitedLeft = Visit(left); var visitedRight = Visit(right); var sourceInfo = GetSourceInfo(context); return(_expressionFactory.Binary(visitedLeft, visitedRight, sourceInfo, operation)); }
private Expression VisitMathematicalExpression(IToken operationToken, VelocityParser.ExpressionContext left, VelocityParser.ExpressionContext right, VelocityParser.ExpressionContext context) { VelocityOperator operation; switch (operationToken.Type) { case VelocityLexer.Plus: operation = VelocityOperator.Add; break; case VelocityLexer.Minus: operation = VelocityOperator.Subtract; break; case VelocityLexer.Multiply: operation = VelocityOperator.Multiply; break; case VelocityLexer.Divide: operation = VelocityOperator.Divide; break; case VelocityLexer.Modulo: operation = VelocityOperator.Modulo; break; default: throw new ArgumentOutOfRangeException(nameof(operationToken)); } var visitedLeft = Visit(left); var visitedRight = Visit(right); var sourceInfo = GetSourceInfo(context); return(_expressionFactory.Binary(visitedLeft, visitedRight, sourceInfo, operation)); }
public Expression VisitExpression([NotNull] VelocityParser.ExpressionContext context) { throw new NotImplementedException(); }