// 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);
        }
Beispiel #2
0
 public abstract T Visit(AdditionNode node, object obj);
 // Addition operator
 public override string Visit(AdditionNode node, object obj)
 {
     return($"{Visit(node.Left)} + {Visit(node.Right)}");
 }
Beispiel #4
0
 // Addition operator
 public override TypeNode Visit(AdditionNode node, object obj)
 {
     return(VisitInfixArithmeticExpression(node)); // Call generic infix arithmetic expression visit method
 }