Class | Teeth::Scanner |
In: |
lib/scanner.rb
|
Parent: | Object |
TEMPLATE | = | File.dirname(__FILE__) + "/../templates/tokenizer.yy.erb" |
rdoc | [R] | |
scanner_defns | [R] | |
scanner_rules | [R] |
# File lib/scanner.rb, line 13 def initialize(name, ext_dir=nil) @scanner_base_name, @ext_dir = name, ext_dir @scanner_defns, @scanner_rules = ScannerDefinitionGroup.new, RuleStatementGroup.new ensure_ext_dir_exists if ext_dir end
# File lib/scanner.rb, line 39 def extconf 'require "mkmf"' + "\n" + '$CFLAGS += " -Wall"' + "\n" + "create_makefile " + %Q|"teeth/#{scanner_name}", "./"\n| end
# File lib/scanner.rb, line 71 def generate template = ERB.new(IO.read(TEMPLATE)) scanner = self b = binding template.result(b) end
# File lib/scanner.rb, line 59 def load_default_definitions_for(*defn_types) @scanner_defns.defaults_for(*defn_types) end
# File lib/scanner.rb, line 44 def rdoc=(rdoc_text) lines_of_rdoc_text = rdoc_text.split("\n").map { |line| " * " + line.strip} lines_of_rdoc_text.first[0] = "/" lines_of_rdoc_text[-1] = lines_of_rdoc_text.last + " */" @rdoc = lines_of_rdoc_text.join("\n") end
# File lib/scanner.rb, line 78 def write! raise InvalidExtensionDirectory, "no extension directory specified" unless @ext_dir File.open(@ext_dir + "/extconf.rb", "w") do |extconf_rb| extconf_rb.write extconf end File.open(@ext_dir + "/" + scanner_name + ".yy", "w") do |scanner| scanner.write generate end end