private static Expression  parseAddExpression()
    {
    	System.out.println("解析加法表达式");
        if (check(FirstMultExp))
        {
            Expression exp = parseMultExpression();
            while (check(new TokenSet(TokenType.Plus | TokenType.Minus)))
            {
                int opType = CurrentToken.type;
                eat( opType );
                if ( !check( FirstMultExp ) )
                {
                    try {
						throw new Exception( "Expected an expression after + or - operator" );
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
                }
                Expression right = parseMultExpression();
                switch (opType)
                {
                case TokenType.Plus:
                    exp = new AddExpression( exp, right );
                    break;
                case TokenType.Minus:
                    exp = new SubExpression( exp, right );
                    break;
                default:
                    try {
						throw new Exception( "Expected plus or minus, got: " + opType );
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
                }
            }

            return exp;
        }
        else
        {
            try {
				throw new Exception( "Invalid expression" );
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
        return null;
    }