module TDParser
Constants
- VERSION
Public Class Methods
define(*_args, &)
click to toggle source
# File lib/tdparser.rb, line 131 def self.define(*_args, &) klass = Class.new(Grammar) g = klass.new begin if defined?(g.instance_exec) g.instance_exec(g, &) else g.instance_eval(&) end end g end
Public Instance Methods
any_rule()
click to toggle source
# File lib/tdparser.rb, line 69 def any_rule AnyParser.new end
Also aliased as: any
back_ref(x, eqsym = :===)
click to toggle source
# File lib/tdparser.rb, line 48 def back_ref(x, eqsym = :===) BackrefParser.new(x, eqsym) end
Also aliased as: backref
chain_left(base, *infixes, &)
click to toggle source
# File lib/tdparser.rb, line 115 def chain_left(base, *infixes, &) infixes.inject(base) do |acc, r| leftrec(acc, r - acc, &) end end
Also aliased as: chainl
chain_right(base, *infixes, &)
click to toggle source
# File lib/tdparser.rb, line 123 def chain_right(base, *infixes, &) infixes.inject(base) do |acc, r| rightrec(acc - r, acc, &) end end
Also aliased as: chainr
condition_rule(&)
click to toggle source
# File lib/tdparser.rb, line 84 def condition_rule(&) ConditionParser.new(&) end
Also aliased as: condition
empty_rule(&)
click to toggle source
# File lib/tdparser.rb, line 64 def empty_rule(&) EmptyParser.new(&) end
Also aliased as: empty
fail_rule()
click to toggle source
# File lib/tdparser.rb, line 79 def fail_rule FailParser.new end
Also aliased as: fail
left_rec(*rules, &act)
click to toggle source
# File lib/tdparser.rb, line 89 def left_rec(*rules, &act) f = proc do |x| x[1].inject(x[0]) do |acc, y| act.call(Sequence[acc, *y]) end end base = rules.shift rules.collect { |r| (base - (r * 0)) >> f }.inject(fail) { |acc, r| r | acc } end
Also aliased as: leftrec
none_rule()
click to toggle source
# File lib/tdparser.rb, line 74 def none_rule NoneParser.new end
Also aliased as: none
right_rec(*rules, &act)
click to toggle source
# File lib/tdparser.rb, line 101 def right_rec(*rules, &act) f = proc do |x| x[0].reverse.inject(x[1]) do |acc, y| ys = y.dup ys.push(acc) act.call(Sequence[*ys]) end end base = rules.pop rules.collect { |r| ((r * 0) - base) >> f }.inject(fail) { |acc, r| r | acc } end
Also aliased as: rightrec
rule(sym, *opts)
click to toggle source
# File lib/tdparser.rb, line 40 def rule(sym, *opts) NonTerminalParser.new(self, sym, *opts) end
stack_ref(stack, eqsym = :===)
click to toggle source
# File lib/tdparser.rb, line 54 def stack_ref(stack, eqsym = :===) StackrefParser.new(stack, eqsym) end
Also aliased as: stackref
state(s)
click to toggle source
# File lib/tdparser.rb, line 60 def state(s) StateParser.new(s) end
token(x, eqsym = :===)
click to toggle source
# File lib/tdparser.rb, line 44 def token(x, eqsym = :===) TerminalParser.new(x, eqsym) end