TDPUtils::StringTokenizer
#!/usr/bin/env ruby require 'tdp' require 'tdp/utils' parser = TDParser.define {|g| g.a = "a" g.input = g.a - g.token(:int) >> proc {|x| x } def parse(str) tokenizer = TDPUtils::StringTokenizer[ /\d+/ => :int, ] input.parse(tokenizer.generate(str)) end } p parser.parse("a 1") p parser.parse("a 2 ") p parser.parse("a 1 a 2") p parser.parse("abc")
で、
["a", #<TDPUtils::Token:0x4034ba70 @value="1", @kind=:int>] ["a", #<TDPUtils::Token:0x4034b368 @value="2", @kind=:int>] ["a", #<TDPUtils::Token:0x4034ac38 @value="1", @kind=:int>] nil