# 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