Class: Rattler::BackEnd::ParserGenerator::ZeroOrMoreGenerator

Inherits:
ExprGenerator
  • Object
show all
Includes:
NestedSubGenerating, RepeatGenerating
Defined in:
lib/rattler/back_end/parser_generator/zero_or_more_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Parsers

define

Methods included from RepeatGenerating

#gen_basic, #gen_direct_action, #gen_dispatch_action, #gen_token

Methods inherited from ExprGenerator

#gen_direct_action, #gen_dispatch_action, #gen_intermediate, #gen_intermediate_assert, #gen_intermediate_disallow, #gen_intermediate_skip, #gen_token, #initialize

Constructor Details

This class inherits a constructor from Rattler::BackEnd::ParserGenerator::ExprGenerator

Class Method Details

.nested(*args) ⇒ Object



40
41
42
# File 'lib/rattler/back_end/parser_generator/zero_or_more_generator.rb', line 40

def ZeroOrMoreGenerator.nested(*args)
  NestedZeroOrMoreGenerator.new(*args)
end

.top_level(*args) ⇒ Object



49
50
51
# File 'lib/rattler/back_end/parser_generator/zero_or_more_generator.rb', line 49

def ZeroOrMoreGenerator.top_level(*args)
  TopLevelZeroOrMoreGenerator.new(*args)
end

Instance Method Details

#gen_assert(optional, scope = {}) ⇒ Object



10
11
12
# File 'lib/rattler/back_end/parser_generator/zero_or_more_generator.rb', line 10

def gen_assert(optional, scope={})
  @g << 'true'
end

#gen_disallow(optional, scope = {}) ⇒ Object



14
15
16
# File 'lib/rattler/back_end/parser_generator/zero_or_more_generator.rb', line 14

def gen_disallow(optional, scope={})
  @g << 'false'
end

#gen_skip(repeat, scope = {}) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/rattler/back_end/parser_generator/zero_or_more_generator.rb', line 18

def gen_skip(repeat, scope={})
  expr :block do
    @g << 'while '
    generate repeat.child, :intermediate_skip, scope
    (@g << '; end').newline
    @g << 'true'
  end
end