Module: Peg::Parsers::BaseParsers
- Included in:
- Peg::Parsers, Peg::Parsers
- Defined in:
- lib/peg.backup/parsers/base_parsers.rb
Instance Method Summary collapse
-
#char_class_parser(*char_classes, name: nil) ⇒ Object
Parses a character which is a member of any of the ‘char_classes`.
- #char_parser(set = nil, name: nil, negate: false) ⇒ Object
- #end_parser(name: nil) ⇒ Object
- #make_parser(parser) ⇒ Object
- #make_parsers(*parsers) ⇒ Object
Instance Method Details
#char_class_parser(*char_classes, name: nil) ⇒ Object
Parses a character which is a member of any of the ‘char_classes`
9 10 11 12 13 14 15 16 |
# File 'lib/peg.backup/parsers/base_parsers.rb', line 9 def char_class_parser(*char_classes, name: nil) case char_classes in [char_class] _1_char_class_parser(char_class, name:) else _char_classes_parser(*char_classes, name:) end end |
#char_parser(set = nil, name: nil, negate: false) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/peg.backup/parsers/base_parsers.rb', line 18 def char_parser(set=nil, name: nil, negate: false) set = mk_set(set) name ||= "char_parser(#{set.inspect})" Parser.new(name) do |input| case input.content in [] Result.nok(error: "unexpected end of input", input:, name:) in [h, *] if set.member?(h) && !negate || !set.member?(h) && negate Result.ok(ast: h, input: input.advance) else Result.nok(input:, error: "#{h} is not member of the required set #{set}", name:) end end end end |
#end_parser(name: nil) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/peg.backup/parsers/base_parsers.rb', line 35 def end_parser(name: nil) name ||= "end_parser" Parser.new(name) do |input| case input.content in [] Result.ok(ast: nil, input:) in _ Result.nok(input: input, error: "not at end of input", name:) end end end |
#make_parser(parser) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/peg.backup/parsers/base_parsers.rb', line 47 def make_parser(parser) case parser when String char_parser(parser) else parser end end |
#make_parsers(*parsers) ⇒ Object
56 57 58 59 60 |
# File 'lib/peg.backup/parsers/base_parsers.rb', line 56 def make_parsers(*parsers) parsers .flatten .map { make_parser it } end |