簡単な例。empty()。1個以上の繰り返し

#!/usr/bin/env ruby

require 'tdp'
require 'tdp/utils'

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

  g.input = g.aa >> proc {|x| x }
  g.aa    = (g.a - g.aa) |
            empty()

  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")

で、

["a", nil]
["a", "a", nil]
["a", "a", "a", nil]
  • 「empty()」を「none()」にしても同じ挙動になるな。この場合だけ?
  • 別にこうやって書く必要はないのだけど