簡単な例。繰り返し
#!/usr/bin/env ruby require 'tdp' parser = TDParser.define {|g| g.a = "a" g.input = (g.a * (2..4)) >> proc {|x| x } def parse(str) tokens = str.split(/\s+/) input.parse(tokens) end } p parser.parse("a") p parser.parse("a a") p parser.parse("a a a") p parser.parse("a a a a") p parser.parse("a a a a a") p parser.parse("a a a a a a")
で、
nil [[["a"], ["a"]]] [[["a"], ["a"], ["a"]]] [[["a"], ["a"], ["a"], ["a"]]] [[["a"], ["a"], ["a"], ["a"], ["a"]]] [[["a"], ["a"], ["a"], ["a"], ["a"], ["a"]]]
?