Class: Rattler::BackEnd::ParserGenerator::OneOrMoreGenerator
- Inherits:
-
ExprGenerator
- Object
- ExprGenerator
- Rattler::BackEnd::ParserGenerator::OneOrMoreGenerator
- Includes:
- NestedSubGenerating, PredicatePropogating, RepeatGenerating
- Defined in:
- lib/rattler/back_end/parser_generator/one_or_more_generator.rb
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
Methods included from PredicatePropogating
#gen_assert, #gen_disallow, #gen_intermediate_assert, #gen_intermediate_disallow
Methods included from Parsers
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
34 35 36 |
# File 'lib/rattler/back_end/parser_generator/one_or_more_generator.rb', line 34 def OneOrMoreGenerator.nested(*args) NestedOneOrMoreGenerator.new(*args) end |
.top_level(*args) ⇒ Object
52 53 54 |
# File 'lib/rattler/back_end/parser_generator/one_or_more_generator.rb', line 52 def OneOrMoreGenerator.top_level(*args) TopLevelOneOrMoreGenerator.new(*args) end |
Instance Method Details
#gen_skip(one_or_more, scope = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/rattler/back_end/parser_generator/one_or_more_generator.rb', line 11 def gen_skip(one_or_more, scope={}) expr :block do (@g << "#{result_name} = false").newline @g << 'while ' generate one_or_more.child, :intermediate_skip, scope @g.block('') { @g << "#{result_name} = true" }.newline @g << result_name end end |