class Sass::Script::Parser

def declaration_value

def declaration_value
  result = []
  brackets = []
  loop do
    result << @lexer.str do
      until @lexer.done? ||
            peek_toks(:begin_interpolation,
                      :end_interpolation,
                      :lcurly,
                      :lparen,
                      :lsquare,
                      :rparen,
                      :rsquare)
        @lexer.next || @lexer.next_char
      end
    end
    if try_tok(:begin_interpolation)
      result << assert_expr(:expr)
      assert_tok :end_interpolation
    elsif tok = try_toks(:lcurly, :lparen, :lsquare)
      brackets << case tok.type
                  when :lcurly; :end_interpolation
                  when :lparen; :rparen
                  when :lsquare; :rsquare
                  end
      result << Lexer::OPERATORS_REVERSE[tok.type]
    elsif brackets.empty?
      return result
    else
      bracket = brackets.pop
      assert_tok bracket
      result << Lexer::OPERATORS_REVERSE[bracket]
    end
  end
end