private IExpression HandleRelativeExpressionNode(RelativeExpressionNode node) { switch (node.Operator) { case RelativeExpressionNode.OperatorOption.Greater: return(CreateStaticMethodCallExpressionForBinaryOperator("op_GreaterThan", node.Left, node.Right)); case RelativeExpressionNode.OperatorOption.Lesser: return(CreateStaticMethodCallExpressionForBinaryOperator("op_LessThan", node.Left, node.Right)); case RelativeExpressionNode.OperatorOption.GreaterOrEquals: return(CreateStaticMethodCallExpressionForBinaryOperator("op_GreaterThanOrEqual", node.Left, node.Right)); case RelativeExpressionNode.OperatorOption.LesserOrEquals: return(CreateStaticMethodCallExpressionForBinaryOperator("op_LessThanOrEqual", node.Left, node.Right)); default: throw new NotImplementedException(); } }
public override object VisitRelativeExpression([NotNull] DoshikParser.RelativeExpressionContext context) { SetWholeExpression(context); VisitChildren(context); _compilationContext.SetParsingAntlrContext(context); var node = new RelativeExpressionNode(context); node.Left = Sequence.FindExpressionByAntlrContext(context.left); node.Right = Sequence.FindExpressionByAntlrContext(context.right); if ([email protected] == DoshikParser.LE) { node.Operator = RelativeExpressionNode.OperatorOption.LesserOrEquals; } else if ([email protected] == DoshikParser.GE) { node.Operator = RelativeExpressionNode.OperatorOption.GreaterOrEquals; } else if ([email protected] == DoshikParser.LT) { node.Operator = RelativeExpressionNode.OperatorOption.Lesser; } else if ([email protected] == DoshikParser.GT) { node.Operator = RelativeExpressionNode.OperatorOption.Greater; } else { throw new System.NotImplementedException(); } Sequence.Sequence.Add(node); return(null); }