public void Encode(ASTDifference node)
        {
            NumExpr rhs = m_stack.Pop();
            NumExpr lhs = m_stack.Pop();

            m_stack.Push(new NumExpr(lhs.IsTrueValue && rhs.IsTrueValue, lhs.Value - rhs.Value, String.Format("{0} - {1}", lhs.Code, rhs.Code)));
        }
Exemple #2
0
        //<Num Expr> ::= <Num Expr> '+' <Num Term>
        //            |  <Num Expr> '-' <Num Term>
        //            |  <Num Term>
        private ASTNode GetNumExpr(string scaleName, NumericType numType)
        {
            ASTNode lhs = GetNumTerm(scaleName, numType);

            if (lhs == null)
            {
                return(null);
            }

            while ((m_symbol == Lexer.Symbol.Plus) || (m_symbol == Lexer.Symbol.Minus))
            {
                Lexer.Symbol operation = m_symbol;

                GetToken();

                ASTNode rhs = GetNumTerm(scaleName, numType);
                if (rhs == null)
                {
                    return(null);
                }
                else if (operation == Lexer.Symbol.Plus)
                {
                    lhs = new ASTSum(lhs, rhs);
                }
                else
                {
                    lhs = new ASTDifference(lhs, rhs);
                }
            }
            return(lhs);
        }
 public void Encode(ASTDifference node)
 {
     throw new NotImplementedException(String.Format(s_notImplementedTypeEncoding, node.GetType().FullName));
 }