Parent

Files

Parslet::Accelerator::Application

Public Class Methods

new(atom, rules) click to toggle source
# File lib/parslet/accelerator/application.rb, line 5
def initialize atom, rules
  @atom = atom
  @rules = rules
end

Public Instance Methods

call() click to toggle source
# File lib/parslet/accelerator/application.rb, line 10
def call
  @atom.accept(self)
end
transform(atom) click to toggle source
# File lib/parslet/accelerator/application.rb, line 44
def transform atom
  @rules.each do |expr, action|
    # Try and match each rule in turn
    binding = Parslet::Accelerator.match(atom, expr)
    if binding
      # On a successful match, allow the rule action to transform the
      # parslet into something new. 
      ctx = Parslet::Context.new(binding)
      return ctx.instance_eval(&action)
    end
  end # rules.each 

  # If no rule matches, this is the fallback - a clean new parslet atom.
  return atom
end
visit_alternative(alternatives) click to toggle source
# File lib/parslet/accelerator/application.rb, line 26
def visit_alternative(alternatives)
  transform Parslet::Atoms::Alternative.new(
    *alternatives.map { |atom| atom.accept(self) })
end
visit_entity(name, block) click to toggle source
# File lib/parslet/accelerator/application.rb, line 17
def visit_entity(name, block)
  transform Parslet::Atoms::Entity.new(name) { block.call.accept(self) }
end
visit_lookahead(positive, atom) click to toggle source
# File lib/parslet/accelerator/application.rb, line 34
def visit_lookahead(positive, atom)
  transform Parslet::Atoms::Lookahead.new(atom, positive)
end
visit_named(name, atom) click to toggle source
# File lib/parslet/accelerator/application.rb, line 20
def visit_named(name, atom)
  transform Parslet::Atoms::Named.new(atom.accept(self), name)
end
visit_parser(root) click to toggle source
# File lib/parslet/accelerator/application.rb, line 14
def visit_parser(root)
  transform root.accept(self)
end
visit_re(regexp) click to toggle source
# File lib/parslet/accelerator/application.rb, line 37
def visit_re(regexp)
  transform Parslet::Atoms::Re.new(regexp)
end
visit_repetition(tag, min, max, atom) click to toggle source
# File lib/parslet/accelerator/application.rb, line 23
def visit_repetition(tag, min, max, atom)
  transform Parslet::Atoms::Repetition.new(atom.accept(self), min, max, tag)
end
visit_sequence(sequence) click to toggle source
# File lib/parslet/accelerator/application.rb, line 30
def visit_sequence(sequence)
  transform Parslet::Atoms::Sequence.new(
    *sequence.map { |atom| atom.accept(self) })
end
visit_str(str) click to toggle source
# File lib/parslet/accelerator/application.rb, line 40
def visit_str(str)
  transform Parslet::Atoms::Str.new(str)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.