diff --git a/lib/treetop.rb b/lib/treetop.rb index 0731533..2d49aff 100644 --- a/lib/treetop.rb +++ b/lib/treetop.rb @@ -1,16 +1,10 @@ -require 'rubygems' - module Treetop VALID_GRAMMAR_EXT = ['treetop', 'tt'] VALID_GRAMMAR_EXT_REGEXP = /\.(#{VALID_GRAMMAR_EXT.join('|')})\Z/o end -dir = File.dirname(__FILE__) - -TREETOP_ROOT = File.join(dir, 'treetop') -require File.join(TREETOP_ROOT, "ruby_extensions") -require File.join(TREETOP_ROOT, "runtime") -require File.join(TREETOP_ROOT, "compiler") +require 'treetop/runtime' +require 'treetop/compiler' require 'polyglot' Polyglot.register(Treetop::VALID_GRAMMAR_EXT, Treetop) diff --git a/lib/treetop/bootstrap_gen_1_metagrammar.rb b/lib/treetop/bootstrap_gen_1_metagrammar.rb index f587bfa..eeea9ab 100644 --- a/lib/treetop/bootstrap_gen_1_metagrammar.rb +++ b/lib/treetop/bootstrap_gen_1_metagrammar.rb @@ -2,28 +2,25 @@ # into the environment by compiling the current metagrammar.treetop using a trusted version of Treetop. require 'rubygems' -dir = File.dirname(__FILE__) TREETOP_VERSION_REQUIRED_TO_BOOTSTRAP = '>= 1.1.5' # Loading trusted version of Treetop to compile the compiler gem_spec = Gem.source_index.find_name('treetop', TREETOP_VERSION_REQUIRED_TO_BOOTSTRAP).last raise "Install a Treetop Gem version #{TREETOP_VERSION_REQUIRED_TO_BOOTSTRAP} to bootstrap." unless gem_spec -trusted_treetop_path = gem_spec.full_gem_path -require File.join(trusted_treetop_path, 'lib', 'treetop') +require "#{gem_spec.full_gem_path}/lib/treetop" # Relocating trusted version of Treetop to Trusted::Treetop Trusted = Module.new Trusted::Treetop = Treetop Object.send(:remove_const, :Treetop) -Object.send(:remove_const, :TREETOP_ROOT) # Requiring version of Treetop that is under test $exclude_metagrammar = true -require File.expand_path(File.join(dir, '..', 'treetop')) +require File.expand_path('../treetop') # Compile and evaluate freshly generated metagrammar source -METAGRAMMAR_PATH = File.join(TREETOP_ROOT, 'compiler', 'metagrammar.treetop') +METAGRAMMAR_PATH = File.expand_path('../compiler/metagrammar.treetop', __FILE__) compiled_metagrammar_source = Trusted::Treetop::Compiler::GrammarCompiler.new.ruby_source(METAGRAMMAR_PATH) Object.class_eval(compiled_metagrammar_source) @@ -42,4 +39,4 @@ # include Trusted::Treetop::Runtime # end -$bootstrapped_gen_1_metagrammar = true \ No newline at end of file +$bootstrapped_gen_1_metagrammar = true diff --git a/lib/treetop/compiler.rb b/lib/treetop/compiler.rb index 75b4893..34069b6 100644 --- a/lib/treetop/compiler.rb +++ b/lib/treetop/compiler.rb @@ -1,6 +1,7 @@ -dir = File.dirname(__FILE__) -require File.join(dir, *%w[compiler lexical_address_space]) -require File.join(dir, *%w[compiler ruby_builder]) -require File.join(dir, *%w[compiler node_classes]) -require File.join(dir, *%w[compiler metagrammar]) unless defined?($exclude_metagrammar) -require File.join(dir, *%w[compiler grammar_compiler]) +require 'treetop/ruby_extensions' + +require 'treetop/compiler/lexical_address_space' +require 'treetop/compiler/ruby_builder' +require 'treetop/compiler/node_classes' +require 'treetop/compiler/metagrammar' unless defined?($exclude_metagrammar) +require 'treetop/compiler/grammar_compiler' diff --git a/lib/treetop/compiler/node_classes.rb b/lib/treetop/compiler/node_classes.rb index 942b1bd..90f0242 100644 --- a/lib/treetop/compiler/node_classes.rb +++ b/lib/treetop/compiler/node_classes.rb @@ -1,20 +1,19 @@ -dir = File.dirname(__FILE__) -require File.join(dir, *%w[node_classes parsing_expression]) -require File.join(dir, *%w[node_classes atomic_expression]) -require File.join(dir, *%w[node_classes inline_module]) -require File.join(dir, *%w[node_classes predicate_block]) -require File.join(dir, *%w[node_classes treetop_file]) -require File.join(dir, *%w[node_classes grammar]) -require File.join(dir, *%w[node_classes declaration_sequence]) -require File.join(dir, *%w[node_classes parsing_rule]) -require File.join(dir, *%w[node_classes parenthesized_expression]) -require File.join(dir, *%w[node_classes nonterminal]) -require File.join(dir, *%w[node_classes terminal]) -require File.join(dir, *%w[node_classes anything_symbol]) -require File.join(dir, *%w[node_classes character_class]) -require File.join(dir, *%w[node_classes sequence]) -require File.join(dir, *%w[node_classes choice]) -require File.join(dir, *%w[node_classes repetition]) -require File.join(dir, *%w[node_classes optional]) -require File.join(dir, *%w[node_classes predicate]) -require File.join(dir, *%w[node_classes transient_prefix]) +require 'treetop/compiler/node_classes/parsing_expression' +require 'treetop/compiler/node_classes/atomic_expression' +require 'treetop/compiler/node_classes/inline_module' +require 'treetop/compiler/node_classes/predicate_block' +require 'treetop/compiler/node_classes/treetop_file' +require 'treetop/compiler/node_classes/grammar' +require 'treetop/compiler/node_classes/declaration_sequence' +require 'treetop/compiler/node_classes/parsing_rule' +require 'treetop/compiler/node_classes/parenthesized_expression' +require 'treetop/compiler/node_classes/nonterminal' +require 'treetop/compiler/node_classes/terminal' +require 'treetop/compiler/node_classes/anything_symbol' +require 'treetop/compiler/node_classes/character_class' +require 'treetop/compiler/node_classes/sequence' +require 'treetop/compiler/node_classes/choice' +require 'treetop/compiler/node_classes/repetition' +require 'treetop/compiler/node_classes/optional' +require 'treetop/compiler/node_classes/predicate' +require 'treetop/compiler/node_classes/transient_prefix' diff --git a/lib/treetop/ruby_extensions.rb b/lib/treetop/ruby_extensions.rb index c271c7f..ea1ae90 100755 --- a/lib/treetop/ruby_extensions.rb +++ b/lib/treetop/ruby_extensions.rb @@ -1,2 +1 @@ -dir = File.dirname(__FILE__) -require "#{dir}/ruby_extensions/string" \ No newline at end of file +require 'treetop/ruby_extensions/string' diff --git a/lib/treetop/runtime.rb b/lib/treetop/runtime.rb index 38a84f4..aa7926e 100644 --- a/lib/treetop/runtime.rb +++ b/lib/treetop/runtime.rb @@ -1,5 +1,6 @@ -dir = File.dirname(__FILE__) -require "#{dir}/runtime/compiled_parser" -require "#{dir}/runtime/syntax_node" -require "#{dir}/runtime/terminal_parse_failure" -require "#{dir}/runtime/interval_skip_list" +require 'treetop/ruby_extensions' + +require 'treetop/runtime/compiled_parser' +require 'treetop/runtime/syntax_node' +require 'treetop/runtime/terminal_parse_failure' +require 'treetop/runtime/interval_skip_list' diff --git a/lib/treetop/runtime/interval_skip_list.rb b/lib/treetop/runtime/interval_skip_list.rb index 8f34379..217b834 100644 --- a/lib/treetop/runtime/interval_skip_list.rb +++ b/lib/treetop/runtime/interval_skip_list.rb @@ -1,4 +1,3 @@ -dir = File.dirname(__FILE__) -require "#{dir}/interval_skip_list/interval_skip_list.rb" -require "#{dir}/interval_skip_list/head_node.rb" -require "#{dir}/interval_skip_list/node.rb" \ No newline at end of file +require 'treetop/runtime/interval_skip_list/interval_skip_list' +require 'treetop/runtime/interval_skip_list/head_node' +require 'treetop/runtime/interval_skip_list/node' diff --git a/script/generate_metagrammar.rb b/script/generate_metagrammar.rb index ef6952e..51c9059 100644 --- a/script/generate_metagrammar.rb +++ b/script/generate_metagrammar.rb @@ -1,14 +1,13 @@ #!/usr/bin/env ruby require 'rubygems' -dir = File.dirname(__FILE__) -require File.join(dir, '..', 'lib', 'treetop', 'bootstrap_gen_1_metagrammar') +require File.expand_path('../../lib/treetop/bootstrap_gen_1_metagrammar', __FILE__) -GENERATED_METAGRAMMAR_PATH = File.join(TREETOP_ROOT, 'compiler', 'metagrammar.rb') +GENERATED_METAGRAMMAR_PATH = File.expand_path('../../lib/treetop/compiler/metagrammar.rb') File.open(METAGRAMMAR_PATH) do |source_file| File.open(GENERATED_METAGRAMMAR_PATH, 'w') do |target_file| generated_source = Treetop::Compiler::MetagrammarParser.new.parse(source_file.read).compile target_file.write(generated_source) end -end \ No newline at end of file +end diff --git a/spec/compiler/circular_compilation_spec.rb b/spec/compiler/circular_compilation_spec.rb index 2dd5f15..f0cef5a 100644 --- a/spec/compiler/circular_compilation_spec.rb +++ b/spec/compiler/circular_compilation_spec.rb @@ -1,6 +1,6 @@ require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper") BENCHMARK = false -METAGRAMMAR_PATH = File.join(TREETOP_ROOT, 'compiler', 'metagrammar.treetop') +METAGRAMMAR_PATH = File.expand_path('../../../lib/treetop/compiler/metagrammar.treetop', __FILE__) module CircularCompilationSpec describe "a parser for the metagrammar" do