// Infix arithmetic expression
        public override ASTNode VisitInfixArithmeticExpr(CLUBSParser.InfixArithmeticExprContext context)
        {
            SourcePosition    sourcePosition = new SourcePosition(context.start);
            InfixOperatorNode node;

            // Get the correct Infix operator by switching on the operator token
            switch (context.op.Type)
            {
            case CLUBSParser.MUL:
                node = new MultiplicationNode(sourcePosition);
                break;

            case CLUBSParser.DIV:
                node = new DivisionNode(sourcePosition);
                break;

            case CLUBSParser.ADD:
                node = new AdditionNode(sourcePosition);
                break;

            case CLUBSParser.SUB:
                node = new SubtractionNode(sourcePosition);
                break;

            default:
                throw new Exception("Operator not found");
            }

            node.Left  = Visit(context.left) as ExpressionNode;
            node.Right = Visit(context.right) as ExpressionNode;

            return(node);
        }
Example #2
0
 public abstract T Visit(SubtractionNode node, object obj);
 // Subtraction operator
 public override string Visit(SubtractionNode node, object obj)
 {
     return($"{Visit(node.Left)} - {Visit(node.Right)}");
 }
Example #4
0
 // Subtraction operator
 public override TypeNode Visit(SubtractionNode node, object obj)
 {
     return(VisitInfixArithmeticExpression(node)); // Call generic infix arithmetic expression visit method
 }