# Treetop (treetop.rubyforge.org/) grammar for package definitions in v1 # format.

require 'treetop'

require 'fig/grammar/base' require 'fig/grammar/v1_base' require 'fig/grammar/version'

module Fig

module Grammar
  grammar V1
    include Fig::Grammar::Base
    include Fig::Grammar::Version
    include Fig::Grammar::V1Base

    # It would nice to be able to put this into Fig::Grammar::V1Base, but it
    # looks like the root has to be declared in the concrete grammar.
    rule package
      optional_ws_or_comment
      grammar_version:grammar_version?
      statements:(package_statement_with_ws*)
      optional_ws_or_comment
      {
        def to_package(unparsed_package, build_state)
          return build_state.new_package_statement(
            unparsed_package, grammar_version, statements
          )
        end
      }
    end

    rule config_statement
      override / include / command / path / set
    end
  end
end

end