class 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