module Treetop

def self.load(path)

compile a treetop source file and load it
def self.load(path)
  unless path =~ Treetop::Polyglot::VALID_GRAMMAR_EXT_REGEXP
    ext = Treetop::Polyglot::VALID_GRAMMAR_EXT.select {|ext| File.exist?(path+".#{ext}")}.shift
    path += ".#{ext}" unless ext.nil?
  end
  File.open(path) do |source_file|
    source = source_file.read
    source.gsub!(/\b__FILE__\b/, %Q{"#{path}"})
    load_from_string(source)
  end
end

def self.load_from_string(s)

compile a treetop source string and load it
def self.load_from_string(s)
  compiler = Treetop::Compiler::GrammarCompiler.new
  Object.class_eval(compiler.ruby_source_from_string(s))
end