Duplicate string argument to token parser.
This commit is contained in:
parent
7bdd8b7ce2
commit
3f661b91e3
2 changed files with 13 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -17,10 +17,13 @@ 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
|
||||
# prevent string from getting garbage-collected
|
||||
parser.instance_variable_set :@h_string, h_string
|
||||
return parser
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue