class ABNF::Rep

Attributes

elt[R]
greedy[R]
max[R]
min[R]

Public Class Methods

_new(elt, min=0, max=nil, greedy=true)
Alias for: new
new(elt, min=0, max=nil, greedy=true) click to toggle source
# File lib/abnf/grammar.rb, line 126
def Rep.new(elt, min=0, max=nil, greedy=true)
  return EmptySequence if min == 0 && max == 0
  return elt if min == 1 && max == 1
  return EmptySequence if elt.empty_sequence?
  if elt.empty_set?
    return min == 0 ? EmptySequence : EmptySet
  end
  Rep._new(elt, min, max, greedy)
end
Also aliased as: _new
new(elt, min=0, max=nil, greedy=true) click to toggle source
# File lib/abnf/grammar.rb, line 136
def initialize(elt, min=0, max=nil, greedy=true)
  @elt = elt
  @min = min
  @max = max
  @greedy = greedy
end

Public Instance Methods

each_var(&block) click to toggle source
# File lib/abnf/grammar.rb, line 144
def each_var(&block) @elt.each_var(&block) end
recursion(syms, lhs) click to toggle source
# File lib/abnf/regexp.rb, line 316
def recursion(syms, lhs)
  @elt.recursion(syms, lhs) == NonRecursion ? NonRecursion : OtherRecursion
end
regexp_tree() click to toggle source
# File lib/abnf/regexp.rb, line 392
def regexp_tree() @elt.regexp_tree.rep(min, max, greedy) end
remove_just_recursion(n) click to toggle source
# File lib/abnf/regexp.rb, line 320
def remove_just_recursion(n)
  self
end
split_left_recursion(n) click to toggle source
# File lib/abnf/regexp.rb, line 324
def split_left_recursion(n)
  [self, EmptySet]
end
Also aliased as: split_right_recursion
split_recursion(n) click to toggle source
# File lib/abnf/regexp.rb, line 329
def split_recursion(n)
  [EmptySet, self, EmptySet]
end
split_right_recursion(n)
subst_var(&block) click to toggle source
# File lib/abnf/grammar.rb, line 145
def subst_var(&block) Rep.new(@elt.subst_var(&block), min, max, greedy) end
useful?(useful_names) click to toggle source
# File lib/abnf/abnf.rb, line 122
def useful?(useful_names) @min == 0 ? true : @elt.useful?(useful_names) end