summaryrefslogtreecommitdiff
path: root/lib/mpeg/base.rb
blob: e2e85638cafb8ad411db34c7eb13fbeb64064c7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module Mpeg
  class Base
    def parse(string, input: Input.new(string))
      call(input) && input.end_of_string?
    end

    def repeat(min = 0, max = nil)
      Repitition.new(self, min, max)
    end

    def |(parser)
      Alternative.new(self, parser)
    end

    def >>(parser)
      Sequence.new(self, parser)
    end

    def absent?
      Lookahead.new(self, false)
    end
  end
end