Racc plugin for hoe.
lexer | Generate lexers for all .rex files in your Manifest.txt. |
parser | Generate parsers for all .y files in your Manifest.txt. |
.y -> .rb rule | Generate a parser using racc. |
.rex -> .rb rule | Generate a lexer using rexical. |
# File lib/hoe/racc.rb, line 47 47: def activate_racc_deps 48: dependency 'racc', '~> 1.4.6', :development 49: end
Define tasks for racc plugin
# File lib/hoe/racc.rb, line 54 54: def define_racc_tasks 55: racc_files = self.spec.files.find_all { |f| f =~ /\.y$/ } 56: rex_files = self.spec.files.find_all { |f| f =~ /\.rex$/ } 57: 58: parser_files = racc_files.map { |f| f.sub(/\.y$/, ".rb") } 59: lexer_files = rex_files.map { |f| f.sub(/\.rex$/, ".rb") } 60: 61: self.clean_globs += parser_files 62: self.clean_globs += lexer_files 63: 64: rule ".rb" => ".y" do |t| 65: begin 66: sh "racc #{racc_flags} -o #{t.name} #{t.source}" 67: rescue 68: abort "need racc, sudo gem install racc" 69: end 70: end 71: 72: rule ".rb" => ".rex" do |t| 73: begin 74: sh "rex #{rex_flags} -o #{t.name} #{t.source}" 75: rescue 76: abort "need rexical, sudo gem install rexical" 77: end 78: end 79: 80: task :isolate # stub task 81: 82: desc "build the parser" unless parser_files.empty? 83: task :parser => :isolate 84: 85: desc "build the lexer" unless lexer_files.empty? 86: task :lexer => :isolate 87: 88: task :parser => parser_files 89: task :lexer => lexer_files 90: 91: racc_tasks.each do |t| 92: task t => [:parser, :lexer] 93: end 94: end
Initialize variables for racc plugin.
# File lib/hoe/racc.rb, line 38 38: def initialize_racc 39: self.racc_tasks = [:multi, :test, :check_manifest] 40: 41: # -v = verbose 42: # -l = no-line-convert (they don't ever line up anyhow) 43: self.racc_flags ||= "-v -l" 44: self.rex_flags ||= "--independent" 45: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.