public static bool Compare(Symbol a, Symbol b)
        {
            OperationSymbol op_a = a as OperationSymbol;
            OperationSymbol op_b = b as OperationSymbol;

            if(op_a == null || op_b == null) {
                return false;
            }

            return !(op_a is GroupSymbol) && op_a.Precedence >= op_b.Precedence;
        }
 public static bool IsRight(Symbol symbol)
 {
     GroupSymbol group = symbol as GroupSymbol;
     return group != null && group.Direction == GroupSymbol.GroupDirection.Right;
 }
 public InvalidOperandException(Symbol symbol) : base(symbol.ToString())
 {
 }
Exemple #4
0
        public virtual Symbol Evaluate(Symbol a, Symbol b)
        {
            if(a is VoidSymbol || b is VoidSymbol) {
                throw new InvalidOperandException(a, b);
            }

            try {
                return Evaluate((ValueSymbol)a, (ValueSymbol)b);
            } catch {
                throw new InvalidOperandException(a, b);
            }
        }
 public InvalidOperandException(Symbol a, Symbol b) : base(String.Format("{0}, {1}", a, b))
 {
 }