Class: Peg::Parser

Inherits:
Object
  • Object
show all
Includes:
Combinators::Implementation
Defined in:
lib/peg.backup/parser.rb,
lib/peg.backup/parser/input.rb

Defined Under Namespace

Classes: Input

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Combinators::Implementation

#_debug, #_lookahead, #_many, #_map_result, #_satisfy, #_select, #_sequence

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



12
13
14
# File 'lib/peg.backup/parser.rb', line 12

def name
  @name
end

#parse_fnObject (readonly)

Returns the value of attribute parse_fn.



12
13
14
# File 'lib/peg.backup/parser.rb', line 12

def parse_fn
  @parse_fn
end

Class Method Details

.parse(parser, input) ⇒ Object

Raises:

  • (ArgumentError)


14
15
16
17
18
19
20
21
22
23
24
# File 'lib/peg.backup/parser.rb', line 14

def self.parse(parser, input)
  raise ArgumentError, "parser must be an instance of #{self}" unless self === parser
  case input
  when String
    parser.parse_fn.(Peg::Parser::Input.new(input.grapheme_clusters))
  when Peg::Parser::Input
    parser.parse_fn.(input)
  else
    raise ArgumentError, "input must be a string or instance of Input" unless self.class === parser
  end
end

Instance Method Details

#and(*parsers, name: nil) ⇒ Object



26
# File 'lib/peg.backup/parser.rb', line 26

def and(*parsers, name:  nil) = _sequence([self, *parsers], name)

#debug(name: nil) ⇒ Object



28
# File 'lib/peg.backup/parser.rb', line 28

def debug(name: nil) = _debug(self, name:)

#many(name: nil, max: nil, min: 0) ⇒ Object



30
# File 'lib/peg.backup/parser.rb', line 30

def many(name: nil, max: nil, min: 0) = _many(self, name:, max:, min:)

#map(name: nil, &blk) ⇒ Object



31
# File 'lib/peg.backup/parser.rb', line 31

def map(name: nil, &blk) = Peg::Combinators.map(self, name:, &blk)

#or(*parsers, name: nil) ⇒ Object



33
# File 'lib/peg.backup/parser.rb', line 33

def or(*parsers, name: nil) = _select(self, *parsers, name:)

#satisfy(name: nil, &satisfier) ⇒ Object



35
# File 'lib/peg.backup/parser.rb', line 35

def satisfy(name: nil, &satisfier) = _satisfy(self, name:, &satisfier)