module KPeg

Constants

VERSION

Public Class Methods

compile(str, name, scope=Object) click to toggle source
# File lib/kpeg.rb, line 37
def self.compile(str, name, scope=Object)
  parser = KPeg::FormatParser.new str
  unless parser.parse
    parser.raise_error
  end

  cg = KPeg::CodeGenerator.new name, parser.grammar

  code = cg.output

  scope.module_eval code
  true
end
grammar() { |g| ... } click to toggle source
# File lib/kpeg.rb, line 5
def self.grammar
  g = Grammar.new
  yield g
  g
end
load(file, name) click to toggle source
# File lib/kpeg.rb, line 25
def self.load(file, name)
  grammar = load_grammar(file)
  cg = KPeg::CodeGenerator.new name, grammar

  code = cg.output

  warn "[Loading parser '#{name}' => #{code.size} bytes]"

  Object.module_eval code
  true
end
load_grammar(file, log=false) click to toggle source
# File lib/kpeg.rb, line 16
def self.load_grammar(file, log=false)
  parser = KPeg::FormatParser.new File.read(file)
  if !parser.parse
    parser.raise_error
  end

  return parser.grammar
end
match(str, gram) click to toggle source
# File lib/kpeg.rb, line 11
def self.match(str, gram)
  scan = Parser.new(str, gram)
  scan.parse
end