Exemplo n.º 1
0
 private void CheckOperandsAreOfSameType(BinaryTreeElementBase node)
 {
     if (DetermineType((dynamic)node.Left) != DetermineType((dynamic)node.Right))
     {
         Exceptions.Add(new TypeCheckerError(String.Format("Incompatible operands on operation: {0} and {1}", DetermineType((dynamic)node.Left), DetermineType((dynamic)node.Right)), node));
     }
 }
Exemplo n.º 2
0
        private void CheckOperandsRestrictedToTypes(BinaryTreeElementBase node, params Type[] restrictedTypes)
        {
            if (!restrictedTypes.Contains((Type)DetermineType((dynamic)node.Left)))
            {
                Exceptions.Add(new TypeCheckerError("Type not permitted on the left side of the operator", node));
            }

            if (!restrictedTypes.Contains((Type)DetermineType((dynamic)node.Right)))
            {
                Exceptions.Add(new TypeCheckerError("Type not permitted on the right side of the operator", node));
            }
        }
Exemplo n.º 3
0
 private void VisitBinary(BinaryTreeElementBase node)
 {
     node.Left.Accept(this);
     node.Right.Accept(this);
 }
Exemplo n.º 4
0
        private void CheckOperandsRestrictedToTypes(BinaryTreeElementBase node, params Type[] restrictedTypes)
        {
            if (!restrictedTypes.Contains((Type)DetermineType((dynamic)node.Left)))
            {
                Exceptions.Add(new TypeCheckerError("Type not permitted on the left side of the operator", node));
            }

            if (!restrictedTypes.Contains((Type)DetermineType((dynamic)node.Right)))
            {
                Exceptions.Add(new TypeCheckerError("Type not permitted on the right side of the operator", node));
            }
        }
Exemplo n.º 5
0
 private void CheckOperandsAreOfSameType(BinaryTreeElementBase node)
 {
     if (DetermineType((dynamic)node.Left) != DetermineType((dynamic)node.Right))
     {
         Exceptions.Add(new TypeCheckerError(String.Format("Incompatible operands on operation: {0} and {1}", DetermineType((dynamic)node.Left), DetermineType((dynamic)node.Right)), node));
     }
 }
Exemplo n.º 6
0
 private void VisitBinary(BinaryTreeElementBase node)
 {
     node.Left.Accept(this);
     node.Right.Accept(this);
 }