class Parslet::Parser::Visitors::Citrus

Attributes

context[R]
output[R]

Public Class Methods

new(context) click to toggle source
# File lib/parslet/export.rb, line 10
def initialize(context)
  @context = context
end

Public Instance Methods

visit_alternative(alternatives) click to toggle source
# File lib/parslet/export.rb, line 40
def visit_alternative(alternatives)
  '(' <<
  alternatives.
    map { |el| el.accept(self) }.
    join(' | ') <<
  ')'
end
visit_entity(name, block) click to toggle source
# File lib/parslet/export.rb, line 21
def visit_entity(name, block)
  context.deferred(name, block)

  "(#{context.mangle_name(name)})"
end
visit_lookahead(positive, bound_parslet) click to toggle source
# File lib/parslet/export.rb, line 48
def visit_lookahead(positive, bound_parslet)
  (positive ? '&' : '!') <<
  bound_parslet.accept(self)
end
visit_named(name, parslet) click to toggle source
# File lib/parslet/export.rb, line 26
def visit_named(name, parslet)
  parslet.accept(self)
end
visit_re(match) click to toggle source
# File lib/parslet/export.rb, line 17
def visit_re(match)
  match.to_s
end
visit_repetition(tag, min, max, parslet) click to toggle source
# File lib/parslet/export.rb, line 37
def visit_repetition(tag, min, max, parslet)
  parslet.accept(self) << "#{min}*#{max}"
end
visit_sequence(parslets) click to toggle source
# File lib/parslet/export.rb, line 30
def visit_sequence(parslets)
  '(' <<
  parslets.
    map { |el| el.accept(self) }.
    join(' ') <<
  ')'
end
visit_str(str) click to toggle source
# File lib/parslet/export.rb, line 14
def visit_str(str)
  "\"#{str.inspect[1..-2]}\""
end