In Files

Hoe::Racc

Racc plugin for hoe.

Tasks Provided:

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.

Attributes

racc_tasks[RW]

Optional: Defines what tasks need to generate parsers/lexers first.

Defaults to [:multi, :test, :check_manifest]

If you have extra tasks that require your parser/lexer to be built, add their names here in your hoe spec. eg:

   racc_tasks << :debug
racc_flags[RW]

Optional: Defines what flags to use for racc. default: “-v -l“

rex_flags[RW]

Optional: Defines what flags to use for rex. default: “—independent“

Public Instance Methods

activate_racc_deps() click to toggle source
    # File lib/hoe/racc.rb, line 47
47:   def activate_racc_deps
48:     dependency 'racc', '~> 1.4.6', :development
49:   end
define_racc_tasks() click to toggle source

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_racc() click to toggle source

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.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.