public void Encode(ASTSum 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))); }
//<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(ASTSum node) { throw new NotImplementedException(String.Format(s_notImplementedTypeEncoding, node.GetType().FullName)); }