public override ASTNode VisitAddminus([NotNull] SuperCOOLParser.AddminusContext context)
        {
            if (context.ADD() != null)
            {
                var resultadd = new ASTAddNode()
                {
                };
                ASTExpressionNode leftadd = (ASTExpressionNode)context.expression()[0].Accept(this);
                AssignSymbolTable(leftadd);
                ASTExpressionNode rightadd = (ASTExpressionNode)context.expression()[1].Accept(this);
                AssignSymbolTable(rightadd);
                resultadd.Left     = leftadd;
                resultadd.Right    = rightadd;
                resultadd.AddToken = context.ADD().Symbol;
                return(resultadd);
            }
            var result = new ASTMinusNode()
            {
            };
            ASTExpressionNode left = (ASTExpressionNode)context.expression()[0].Accept(this);

            AssignSymbolTable(left);
            ASTExpressionNode right = (ASTExpressionNode)context.expression()[1].Accept(this);

            AssignSymbolTable(right);

            result.Left       = left;
            result.Right      = right;
            result.MinusToken = context.MINUS().Symbol;
            return(result);
        }
Ejemplo n.º 2
0
        public override SemanticCheckResult VisitMinus(ASTMinusNode Minus)
        {
            SemanticCheckResult result = new SemanticCheckResult();

            var left  = Minus.Left.Accept(this);
            var right = Minus.Right.Accept(this);

            Minus.SemanticCheckResult.Ensure(left, left.Type == CompilationUnit.TypeEnvironment.Int,
                                             new Lazy <Error>(() => new Error("Left Expresion must have type Int", ErrorKind.TypeError, Minus.MinusToken.Line, Minus.MinusToken.Column)));
            Minus.SemanticCheckResult.Ensure(right, right.Type == CompilationUnit.TypeEnvironment.Int,
                                             new Lazy <Error>(() => new Error("Right Expresion must have type Int", ErrorKind.TypeError, Minus.MinusToken.Line, Minus.MinusToken.Column)));
            Minus.SemanticCheckResult.EnsureReturnType(CompilationUnit.TypeEnvironment.Int);
            return(Minus.SemanticCheckResult);
        }
Ejemplo n.º 3
0
 public ASTCILNode VisitMinus(ASTMinusNode Minus)
 {
     return(new ASTCILMinusTwoVariablesNode((ASTCILExpressionNode)Minus.Left.Accept(this),
                                            (ASTCILExpressionNode)Minus.Right.Accept(this)));
 }
 public virtual T VisitMinus(ASTMinusNode Minus)
 {
     Minus.Left.Accept(this);
     Minus.Right.Accept(this);
     return(default(T));
 }