diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/ripper/tools/dsl.rb | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/ext/ripper/tools/dsl.rb b/ext/ripper/tools/dsl.rb index 27ba87f89b..d2b9715a71 100644 --- a/ext/ripper/tools/dsl.rb +++ b/ext/ripper/tools/dsl.rb @@ -15,17 +15,14 @@ class DSL if options.include?("final") @final = "p->result" else - @final = (options.grep(/\A\$[$\d]\z/)[0] || "$$") + @final = (options.grep(/\A\$(?:\$|\d+)\z/)[0] || "$$") end @vars = 0 # create $1 == "$1", $2 == "$2", ... - re, s = "", "" - 1.upto(9) do |n| - re << "(..)" - s << "$#{ n }" - end - /#{ re }/ =~ s + s = (1..20).map {|n| "$#{n}"} + re = Array.new(s.size, "([^\0]+)") + /#{re.join("\0")}/ =~ s.join("\0") # struct parser_params *p p = p = "p" |