# File lib/kwartz/binding/php.rb, line 20
    def parse_expr_str(expr_str, linenum)
      case expr_str
      when /\A(\w+)\z/             # variable
        expr = '$' + $1
      when /\A(\w+)\.(\w+)\z/      # object.property
        expr = "$#{$1}->#{$2}"
      when /\A(\w+)\[('.*?'|".*?"|:\w+)\]\z/   # hash
        key = $2[0] == ?: ? "'#{$2[1..-1]}'" : $2
        expr = "$#{$1}[#{key}]"
      when /\A(\w+)\[(\w+)\]\z/    # array or hash
        begin
          expr = "$#{$1}[#{Integer($2)}]"
        rescue
          expr = "$#{$1}[$#{$2}]"
        end
      else
        raise convert_error("'#{expr_str}': invalid expression.", linenum)
      end
      return expr
    end