簡単な例。parse への渡し方、いろいろ

#!/usr/bin/env ruby

require 'tdp'

parser = TDParser.define {|g|
  g.a = "a"
  g.b = "b"
  g.c = "c"

  g.input = g.a - g.b - g.c >> proc {|x| p x }

  def parse(str)
    tokens = str.split(/\s+/)
    input.parse(tokens)
  end
}

parser.parse("a b c")

で、

["a", "b", "c"]
#!/usr/bin/env ruby

require 'tdp'

parser = TDParser.define {|g|
  g.a = "a"
  g.b = "b"
  g.c = "c"

  g.input = g.a - g.b - g.c >> proc {|x| p x }

  def parse()
    input.parse(TDParser::TokenGenerator.new {|x| x.yield("a"); x.yield("b"); x.yield("c")})
  end
}

parser.parse()

で、

["a", "b", "c"]
#!/usr/bin/env ruby

require 'tdp'

parser = TDParser.define {|g|
  g.a = "a"
  g.b = "b"
  g.c = "c"

  g.input = g.a - g.b - g.c >> proc {|x| p x }

  def parse()
    input.parse {|x| x.yield("a"); x.yield("b"); x.yield("c")}
  end
}

parser.parse()

で、

["a", "b", "c"]