Beispiel #1
0
 public virtual MiniPascalType NodeType(Scope Current)
 {
     Type = firstExpression.NodeType(Current);
     foreach (OperatorPair <T> expr in simpleExpressions)
     {
         MiniPascalType anotherType = expr.Operand.NodeType(Current);
         if (!Type.Equals(anotherType))
         {
             throw new InvalidTypeException(anotherType, Type);
         }
         if (!Type.HasOperatorDefined(expr.Operator))
         {
             throw new UndefinedOperatorException(Type, expr.Operator);
         }
         Type = anotherType.BinaryOperation(expr.Operator).ReturnType;
     }
     return(Type);
 }