Exemple #1
0
        public override SemanticCheckResult VisitMultiply(ASTMultiplyNode Multiply)
        {
            SemanticCheckResult result = new SemanticCheckResult();

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

            Multiply.SemanticCheckResult.Ensure(left, left.Type == CompilationUnit.TypeEnvironment.Int,
                                                new Lazy <Error>(() => new Error("Left Expresion must have type Int.", ErrorKind.TypeError, Multiply.MultToken.Line, Multiply.MultToken.Column)));
            Multiply.SemanticCheckResult.Ensure(right, right.Type == CompilationUnit.TypeEnvironment.Int,
                                                new Lazy <Error>(() => new Error("Right Expresion must have type Int.", ErrorKind.TypeError, Multiply.MultToken.Line, Multiply.MultToken.Column)));
            Multiply.SemanticCheckResult.EnsureReturnType(CompilationUnit.TypeEnvironment.Int);
            return(Multiply.SemanticCheckResult);
        }
Exemple #2
0
 public ASTCILNode VisitMultiply(ASTMultiplyNode Multiply)
 {
     return(new ASTCILMultiplyTwoVariablesNode((ASTCILExpressionNode)Multiply.Left.Accept(this),
                                               (ASTCILExpressionNode)Multiply.Right.Accept(this)));
 }
 public virtual T VisitMultiply(ASTMultiplyNode Multiply)
 {
     Multiply.Left.Accept(this);
     Multiply.Right.Accept(this);
     return(default(T));
 }