簡単な例。leftrec
#!/usr/bin/env ruby require 'tdp' parser = TDParser.define {|g| g.a = "a" g.b = "b" g.c = "c" g.d = "d" g.input = g.leftrec(g.a, g.b, g.c) {|x| p x } def parse(str) tokens = str.split(/\s+/) input.parse(tokens) end } p parser.parse("a b"); puts "*" p parser.parse("a c"); puts "*" p parser.parse("a d")
で、
"a" * ["a", "c"] nil * "a"
想像していた動きと違うようだ。で、結局、何だっけ?