treetop 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +6 -6
 - data/doc/images/bottom_background.png +0 -0
 - data/doc/images/middle_backgound.png +0 -0
 - data/doc/images/middle_background.png +0 -0
 - data/doc/images/top_background.png +0 -0
 - data/doc/index.markdown +13 -8
 - data/doc/screen.css +52 -0
 - data/doc/site.html +34 -0
 - data/doc/site.rb +41 -0
 - data/examples/lambda_calculus/lambda_calculus.rb +2 -2
 - data/lib/treetop/bootstrap_gen_1_metagrammar.rb +37 -0
 - data/lib/treetop/compiler/metagrammar. +0 -0
 - data/lib/treetop/compiler/metagrammar.rb +20 -9
 - data/lib/treetop/compiler/metagrammar.treetop +1 -1
 - data/lib/treetop/compiler/node_classes/declaration_sequence.rb +1 -7
 - data/lib/treetop/compiler/node_classes/grammar.rb +2 -2
 - data/lib/treetop/runtime/compiled_parser.rb +15 -2
 - metadata +12 -74
 - data/test/compilation_target/target.rb +0 -143
 - data/test/compilation_target/target.treetop +0 -15
 - data/test/compilation_target/target_test.rb +0 -56
 - data/test/compiler/and_predicate_test.rb +0 -33
 - data/test/compiler/anything_symbol_test.rb +0 -24
 - data/test/compiler/character_class_test.rb +0 -45
 - data/test/compiler/choice_test.rb +0 -74
 - data/test/compiler/circular_compilation_test.rb +0 -20
 - data/test/compiler/failure_propagation_functional_test.rb +0 -20
 - data/test/compiler/grammar_compiler_test.rb +0 -58
 - data/test/compiler/grammar_test.rb +0 -37
 - data/test/compiler/nonterminal_symbol_test.rb +0 -38
 - data/test/compiler/not_predicate_test.rb +0 -35
 - data/test/compiler/one_or_more_test.rb +0 -30
 - data/test/compiler/optional_test.rb +0 -32
 - data/test/compiler/parenthesized_expression_test.rb +0 -17
 - data/test/compiler/parsing_rule_test.rb +0 -30
 - data/test/compiler/sequence_test.rb +0 -68
 - data/test/compiler/terminal_symbol_test.rb +0 -35
 - data/test/compiler/test_grammar.treetop +0 -7
 - data/test/compiler/zero_or_more_test.rb +0 -51
 - data/test/composition/a.treetop +0 -11
 - data/test/composition/b.treetop +0 -11
 - data/test/composition/c.treetop +0 -10
 - data/test/composition/d.treetop +0 -10
 - data/test/composition/grammar_composition_test.rb +0 -23
 - data/test/parser/syntax_node_test.rb +0 -53
 - data/test/parser/terminal_parse_failure_test.rb +0 -22
 - data/test/ruby_extensions/string_test.rb +0 -33
 - data/test/screw/Rakefile +0 -16
 - data/test/screw/unit.rb +0 -37
 - data/test/screw/unit/assertion_failed_error.rb +0 -14
 - data/test/screw/unit/assertions.rb +0 -615
 - data/test/screw/unit/auto_runner.rb +0 -227
 - data/test/screw/unit/collector.rb +0 -45
 - data/test/screw/unit/collector/dir.rb +0 -107
 - data/test/screw/unit/collector/objectspace.rb +0 -28
 - data/test/screw/unit/error.rb +0 -48
 - data/test/screw/unit/failure.rb +0 -45
 - data/test/screw/unit/sugar.rb +0 -25
 - data/test/screw/unit/test_case.rb +0 -176
 - data/test/screw/unit/test_result.rb +0 -73
 - data/test/screw/unit/test_suite.rb +0 -70
 - data/test/screw/unit/ui.rb +0 -4
 - data/test/screw/unit/ui/console/test_runner.rb +0 -118
 - data/test/screw/unit/ui/fox/test_runner.rb +0 -268
 - data/test/screw/unit/ui/gtk/test_runner.rb +0 -416
 - data/test/screw/unit/ui/gtk2/testrunner.rb +0 -465
 - data/test/screw/unit/ui/test_runner_mediator.rb +0 -58
 - data/test/screw/unit/ui/test_runner_utilities.rb +0 -46
 - data/test/screw/unit/ui/tk/test_runner.rb +0 -260
 - data/test/screw/unit/util.rb +0 -4
 - data/test/screw/unit/util/backtrace_filter.rb +0 -40
 - data/test/screw/unit/util/observable.rb +0 -82
 - data/test/screw/unit/util/proc_wrapper.rb +0 -48
 - data/test/test_helper.rb +0 -90
 
| 
         @@ -1,48 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            #
         
     | 
| 
       3 
     | 
    
         
            -
            # Author:: Nathaniel Talbott.
         
     | 
| 
       4 
     | 
    
         
            -
            # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
         
     | 
| 
       5 
     | 
    
         
            -
            # License:: Ruby license.
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            module Screw
         
     | 
| 
       8 
     | 
    
         
            -
              module Unit
         
     | 
| 
       9 
     | 
    
         
            -
                module Util
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                  # Allows the storage of a Proc passed through '&' in a
         
     | 
| 
       12 
     | 
    
         
            -
                  # hash.
         
     | 
| 
       13 
     | 
    
         
            -
                  #
         
     | 
| 
       14 
     | 
    
         
            -
                  # Note: this may be inefficient, since the hash being
         
     | 
| 
       15 
     | 
    
         
            -
                  # used is not necessarily very good. In Observable,
         
     | 
| 
       16 
     | 
    
         
            -
                  # efficiency is not too important, since the hash is
         
     | 
| 
       17 
     | 
    
         
            -
                  # only accessed when adding and removing listeners,
         
     | 
| 
       18 
     | 
    
         
            -
                  # not when notifying.
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                  class ProcWrapper
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                    # Creates a new wrapper for a_proc.
         
     | 
| 
       23 
     | 
    
         
            -
                    def initialize(a_proc)
         
     | 
| 
       24 
     | 
    
         
            -
                      @a_proc = a_proc
         
     | 
| 
       25 
     | 
    
         
            -
                      @hash = a_proc.inspect.sub(/^(#<#{a_proc.class}:)/){''}.sub(/(>)$/){''}.hex
         
     | 
| 
       26 
     | 
    
         
            -
                    end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                    def hash
         
     | 
| 
       29 
     | 
    
         
            -
                      return @hash
         
     | 
| 
       30 
     | 
    
         
            -
                    end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                    def ==(other)
         
     | 
| 
       33 
     | 
    
         
            -
                      case(other)
         
     | 
| 
       34 
     | 
    
         
            -
                        when ProcWrapper
         
     | 
| 
       35 
     | 
    
         
            -
                          return @a_proc == other.to_proc
         
     | 
| 
       36 
     | 
    
         
            -
                        else
         
     | 
| 
       37 
     | 
    
         
            -
                          return super
         
     | 
| 
       38 
     | 
    
         
            -
                      end
         
     | 
| 
       39 
     | 
    
         
            -
                    end
         
     | 
| 
       40 
     | 
    
         
            -
                    alias :eql? :==
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                    def to_proc
         
     | 
| 
       43 
     | 
    
         
            -
                      return @a_proc
         
     | 
| 
       44 
     | 
    
         
            -
                    end
         
     | 
| 
       45 
     | 
    
         
            -
                  end
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
            end
         
     | 
    
        data/test/test_helper.rb
    DELETED
    
    | 
         @@ -1,90 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       2 
     | 
    
         
            -
            dir = File.dirname(__FILE__)
         
     | 
| 
       3 
     | 
    
         
            -
            $:.unshift(File.expand_path(File.join(dir, '..', 'lib')))
         
     | 
| 
       4 
     | 
    
         
            -
            require File.expand_path(File.join(dir, 'screw', 'unit'))
         
     | 
| 
       5 
     | 
    
         
            -
            gem_original_require 'treetop'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            include Treetop
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            unless Object.const_defined?(:METAGRAMMAR_PATH)
         
     | 
| 
       10 
     | 
    
         
            -
              METAGRAMMAR_PATH = File.join(TREETOP_ROOT, 'compiler', 'metagrammar.treetop')
         
     | 
| 
       11 
     | 
    
         
            -
              fresh_metagrammar_source = Compiler::GrammarCompiler.new.ruby_source(METAGRAMMAR_PATH)
         
     | 
| 
       12 
     | 
    
         
            -
              Compiler.send(:remove_const, :Metagrammar)
         
     | 
| 
       13 
     | 
    
         
            -
              Object.class_eval(fresh_metagrammar_source)
         
     | 
| 
       14 
     | 
    
         
            -
            end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            class CompilerTestCase < Screw::Unit::TestCase
         
     | 
| 
       17 
     | 
    
         
            -
              class << self
         
     | 
| 
       18 
     | 
    
         
            -
                attr_accessor :parser_class_under_test
         
     | 
| 
       19 
     | 
    
         
            -
                
         
     | 
| 
       20 
     | 
    
         
            -
                def testing_expression(expression_to_test)
         
     | 
| 
       21 
     | 
    
         
            -
                  rule_node = parse_with_metagrammar_2("rule test_expression\n" + expression_to_test + "\nend", :parsing_rule)
         
     | 
| 
       22 
     | 
    
         
            -
                  test_parser_code = generate_test_parser_for_expression(rule_node)
         
     | 
| 
       23 
     | 
    
         
            -
                  #puts test_parser_code
         
     | 
| 
       24 
     | 
    
         
            -
                  class_eval(test_parser_code)
         
     | 
| 
       25 
     | 
    
         
            -
                  self.parser_class_under_test = const_get(:TestParser)
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                def testing_grammar(grammar_to_test)
         
     | 
| 
       29 
     | 
    
         
            -
                  grammar_node = parse_with_metagrammar_2(grammar_to_test.strip, :grammar)
         
     | 
| 
       30 
     | 
    
         
            -
                  test_parser_code = grammar_node.compile
         
     | 
| 
       31 
     | 
    
         
            -
                  # puts test_parser_code
         
     | 
| 
       32 
     | 
    
         
            -
                  class_eval(test_parser_code)
         
     | 
| 
       33 
     | 
    
         
            -
                  self.parser_class_under_test = const_get(grammar_node.parser_name.to_sym)
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                def generate_test_parser_for_expression(expression_node)
         
     | 
| 
       37 
     | 
    
         
            -
                  builder = Compiler::RubyBuilder.new
         
     | 
| 
       38 
     | 
    
         
            -
                  address = builder.next_address
         
     | 
| 
       39 
     | 
    
         
            -
                  expression_node.compile(builder)
         
     | 
| 
       40 
     | 
    
         
            -
                  %{
         
     | 
| 
       41 
     | 
    
         
            -
                    class TestParser < Treetop::Runtime::CompiledParser
         
     | 
| 
       42 
     | 
    
         
            -
                      include Treetop::Runtime
         
     | 
| 
       43 
     | 
    
         
            -
                      
         
     | 
| 
       44 
     | 
    
         
            -
                      attr_accessor :test_index
         
     | 
| 
       45 
     | 
    
         
            -
                      
         
     | 
| 
       46 
     | 
    
         
            -
                      def root
         
     | 
| 
       47 
     | 
    
         
            -
                        _nt_test_expression
         
     | 
| 
       48 
     | 
    
         
            -
                      end
         
     | 
| 
       49 
     | 
    
         
            -
                      
         
     | 
| 
       50 
     | 
    
         
            -
                      def reset_index
         
     | 
| 
       51 
     | 
    
         
            -
                        @index = @test_index || 0
         
     | 
| 
       52 
     | 
    
         
            -
                      end
         
     | 
| 
       53 
     | 
    
         
            -
                      
         
     | 
| 
       54 
     | 
    
         
            -
                      #{builder.ruby.tabrestto(10)}
         
     | 
| 
       55 
     | 
    
         
            -
                    end
         
     | 
| 
       56 
     | 
    
         
            -
                  }.tabto(0)
         
     | 
| 
       57 
     | 
    
         
            -
                end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                def parse_with_metagrammar_2(input, root)
         
     | 
| 
       60 
     | 
    
         
            -
                  parser = Treetop::Compiler::MetagrammarParser.new
         
     | 
| 
       61 
     | 
    
         
            -
                  parser.send(:prepare_to_parse, input)
         
     | 
| 
       62 
     | 
    
         
            -
                  node = parser.send("_nt_#{root}".to_sym)
         
     | 
| 
       63 
     | 
    
         
            -
                  raise "#{input} cannot be parsed by the metagrammar: #{node.nested_failures.map {|f| f.to_s}.join("\n")}" if node.failure? 
         
     | 
| 
       64 
     | 
    
         
            -
                  node
         
     | 
| 
       65 
     | 
    
         
            -
                end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
              end
         
     | 
| 
       68 
     | 
    
         
            -
              
         
     | 
| 
       69 
     | 
    
         
            -
              def parse_with_metagrammar_2(input, root)
         
     | 
| 
       70 
     | 
    
         
            -
                self.class.parse_with_metagrammar_2(input, root)
         
     | 
| 
       71 
     | 
    
         
            -
              end
         
     | 
| 
       72 
     | 
    
         
            -
              
         
     | 
| 
       73 
     | 
    
         
            -
              def parser_class_under_test
         
     | 
| 
       74 
     | 
    
         
            -
                self.class.parser_class_under_test
         
     | 
| 
       75 
     | 
    
         
            -
              end
         
     | 
| 
       76 
     | 
    
         
            -
              
         
     | 
| 
       77 
     | 
    
         
            -
              def parse(input, options = {})
         
     | 
| 
       78 
     | 
    
         
            -
                test_parser = parser_class_under_test.new
         
     | 
| 
       79 
     | 
    
         
            -
                test_parser.test_index = options[:at_index] if options[:at_index]
         
     | 
| 
       80 
     | 
    
         
            -
                result = test_parser.parse(input)
         
     | 
| 
       81 
     | 
    
         
            -
                yield result if block_given?
         
     | 
| 
       82 
     | 
    
         
            -
                result
         
     | 
| 
       83 
     | 
    
         
            -
              end
         
     | 
| 
       84 
     | 
    
         
            -
            end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
            class String
         
     | 
| 
       87 
     | 
    
         
            -
              def tabrestto(n)
         
     | 
| 
       88 
     | 
    
         
            -
                self.gsub(/\n^/, "\n" + ' ' * n)
         
     | 
| 
       89 
     | 
    
         
            -
              end
         
     | 
| 
       90 
     | 
    
         
            -
            end
         
     |