private Expression expression_R(Expression left) {
		Expression result = left;

		if( type == ADD_OR_POSITIVE )
		{
			match( ADD_OR_POSITIVE );
			Expression higher = higher_expression();
			result = expression_R(Expression.BinaryExpression.createChild(Expression.Operator.OP_Add,left,higher));
		}
		else if( type == SUBTRACT_OR_NEGATIVE )
		{
			match( SUBTRACT_OR_NEGATIVE );
			Expression higher = higher_expression();
			result = expression_R(Expression.BinaryExpression.createChild(Expression.Operator.OP_Sub,left,higher));
		}
		return result;
	}