public override bool Visit(AstDivExpression node)
 {
     ErrorIfIsNull(node.Left);
     ErrorIfIsNull(node.Right);
     return true;
 }
 public override bool Visit(AstDivExpression node)
 {
     return true;
 }
Exemplo n.º 3
0
        // #DIV_EXPRESSION #UNARY_EXPRESSION DIV #TERM
        private void ConstructDivExpr()
        {
            var right = nodes.Pop() as AstExpression;
            var left = nodes.Pop() as AstUnaryExpr;

            var mulExpr = new AstDivExpression(left, right);
            PushNode(mulExpr);
        }
Exemplo n.º 4
0
 public override bool Visit(AstDivExpression node)
 {
     node.Left.Accept(this);
     string addLine = " = sdiv i32 " + GetCurrUnnamedVariable() + ", ";
     node.Right.Accept(this);
     addLine += GetCurrUnnamedVariable();
     codeStream.WriteLine(CreateUnnamedVariable() + addLine);
     SaveArg("i32 " + GetCurrUnnamedVariable());
     return false;
 }
Exemplo n.º 5
0
        public override bool Visit(AstDivExpression node)
        {
            var leftType = resolver.Resolve(node.Left);
            var rightType = resolver.Resolve(node.Right);
            if (leftType != BuiltInTypes.INT || rightType != BuiltInTypes.INT)
            {
                DispatchError(node.TextPosition, "Div operation available only for integer types.");
                return false;
            }

            return CheckZeroDevision(node.Right);
        }
Exemplo n.º 6
0
 public abstract bool Visit(AstDivExpression node);