Duplicate string argument to token parser.

This commit is contained in:
Jakob Rath 2013-11-15 14:49:18 +01:00 committed by Dan Hirsch
parent 7bdd8b7ce2
commit 3f661b91e3
2 changed files with 13 additions and 4 deletions

View file

@ -52,3 +52,9 @@ p parser.parse 'Hello Mom!'
h = Hammer::Parser
parser = h.sequence(h.token('Hello '), h.choice(h.token('Mom'), h.token('Dad')), h.token('!'))
p parser.parse 'Hello Mom!'
s = 'blah'
parser = h.token(s)
p parser.parse 'BLAH' # => false
s.upcase!
p parser.parse 'BLAH' # => false

View file

@ -17,11 +17,14 @@ module Hammer
end
def self.token(string)
h_parser = Hammer::Internal.h_token(string, string.length)
h_string = string.dup
h_parser = Hammer::Internal.h_token(h_string, h_string.length)
parser = Hammer::Parser.new
parser.instance_variable_set :@h_parser, h_parser
return parser
parser = Hammer::Parser.new
parser.instance_variable_set :@h_parser, h_parser
# prevent string from getting garbage-collected
parser.instance_variable_set :@h_string, h_string
return parser
end
def self.ch(char)