treetop 1.1.2 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/Rakefile +6 -6
  2. data/doc/images/bottom_background.png +0 -0
  3. data/doc/images/middle_backgound.png +0 -0
  4. data/doc/images/middle_background.png +0 -0
  5. data/doc/images/top_background.png +0 -0
  6. data/doc/index.markdown +13 -8
  7. data/doc/screen.css +52 -0
  8. data/doc/site.html +34 -0
  9. data/doc/site.rb +41 -0
  10. data/examples/lambda_calculus/lambda_calculus.rb +2 -2
  11. data/lib/treetop/bootstrap_gen_1_metagrammar.rb +37 -0
  12. data/lib/treetop/compiler/metagrammar. +0 -0
  13. data/lib/treetop/compiler/metagrammar.rb +20 -9
  14. data/lib/treetop/compiler/metagrammar.treetop +1 -1
  15. data/lib/treetop/compiler/node_classes/declaration_sequence.rb +1 -7
  16. data/lib/treetop/compiler/node_classes/grammar.rb +2 -2
  17. data/lib/treetop/runtime/compiled_parser.rb +15 -2
  18. metadata +12 -74
  19. data/test/compilation_target/target.rb +0 -143
  20. data/test/compilation_target/target.treetop +0 -15
  21. data/test/compilation_target/target_test.rb +0 -56
  22. data/test/compiler/and_predicate_test.rb +0 -33
  23. data/test/compiler/anything_symbol_test.rb +0 -24
  24. data/test/compiler/character_class_test.rb +0 -45
  25. data/test/compiler/choice_test.rb +0 -74
  26. data/test/compiler/circular_compilation_test.rb +0 -20
  27. data/test/compiler/failure_propagation_functional_test.rb +0 -20
  28. data/test/compiler/grammar_compiler_test.rb +0 -58
  29. data/test/compiler/grammar_test.rb +0 -37
  30. data/test/compiler/nonterminal_symbol_test.rb +0 -38
  31. data/test/compiler/not_predicate_test.rb +0 -35
  32. data/test/compiler/one_or_more_test.rb +0 -30
  33. data/test/compiler/optional_test.rb +0 -32
  34. data/test/compiler/parenthesized_expression_test.rb +0 -17
  35. data/test/compiler/parsing_rule_test.rb +0 -30
  36. data/test/compiler/sequence_test.rb +0 -68
  37. data/test/compiler/terminal_symbol_test.rb +0 -35
  38. data/test/compiler/test_grammar.treetop +0 -7
  39. data/test/compiler/zero_or_more_test.rb +0 -51
  40. data/test/composition/a.treetop +0 -11
  41. data/test/composition/b.treetop +0 -11
  42. data/test/composition/c.treetop +0 -10
  43. data/test/composition/d.treetop +0 -10
  44. data/test/composition/grammar_composition_test.rb +0 -23
  45. data/test/parser/syntax_node_test.rb +0 -53
  46. data/test/parser/terminal_parse_failure_test.rb +0 -22
  47. data/test/ruby_extensions/string_test.rb +0 -33
  48. data/test/screw/Rakefile +0 -16
  49. data/test/screw/unit.rb +0 -37
  50. data/test/screw/unit/assertion_failed_error.rb +0 -14
  51. data/test/screw/unit/assertions.rb +0 -615
  52. data/test/screw/unit/auto_runner.rb +0 -227
  53. data/test/screw/unit/collector.rb +0 -45
  54. data/test/screw/unit/collector/dir.rb +0 -107
  55. data/test/screw/unit/collector/objectspace.rb +0 -28
  56. data/test/screw/unit/error.rb +0 -48
  57. data/test/screw/unit/failure.rb +0 -45
  58. data/test/screw/unit/sugar.rb +0 -25
  59. data/test/screw/unit/test_case.rb +0 -176
  60. data/test/screw/unit/test_result.rb +0 -73
  61. data/test/screw/unit/test_suite.rb +0 -70
  62. data/test/screw/unit/ui.rb +0 -4
  63. data/test/screw/unit/ui/console/test_runner.rb +0 -118
  64. data/test/screw/unit/ui/fox/test_runner.rb +0 -268
  65. data/test/screw/unit/ui/gtk/test_runner.rb +0 -416
  66. data/test/screw/unit/ui/gtk2/testrunner.rb +0 -465
  67. data/test/screw/unit/ui/test_runner_mediator.rb +0 -58
  68. data/test/screw/unit/ui/test_runner_utilities.rb +0 -46
  69. data/test/screw/unit/ui/tk/test_runner.rb +0 -260
  70. data/test/screw/unit/util.rb +0 -4
  71. data/test/screw/unit/util/backtrace_filter.rb +0 -40
  72. data/test/screw/unit/util/observable.rb +0 -82
  73. data/test/screw/unit/util/proc_wrapper.rb +0 -48
  74. data/test/test_helper.rb +0 -90
data/Rakefile CHANGED
@@ -1,21 +1,21 @@
1
1
  dir = File.dirname(__FILE__)
2
-
3
2
  require 'rubygems'
4
3
  require 'rake'
4
+ $LOAD_PATH.unshift(File.join(dir, 'vendor', 'rspec', 'lib'))
5
5
  require 'spec/rake/spectask'
6
+
6
7
  Gem::manage_gems
7
8
  require 'rake/gempackagetask'
8
- require 'rake/testtask'
9
9
 
10
- task :default => :test
10
+ task :default => :spec
11
11
 
12
- Rake::TestTask.new do |t|
13
- t.pattern = 'test/**/*test.rb'
12
+ Spec::Rake::SpecTask.new do |t|
13
+ t.pattern = 'spec/**/*spec.rb'
14
14
  end
15
15
 
16
16
  gemspec = Gem::Specification.new do |s|
17
17
  s.name = "treetop"
18
- s.version = "1.1.2"
18
+ s.version = "1.1.4"
19
19
  s.author = "Nathan Sobo"
20
20
  s.email = "nathansobo@gmail.com"
21
21
  s.homepage = "http://functionalform.blogspot.com"
Binary file
Binary file
Binary file
Binary file
data/doc/index.markdown CHANGED
@@ -1,22 +1,27 @@
1
- #Overview
2
- Treetop blends cutting-edge parser research with the elegance of Ruby deliver the power of grammar-based syntactic analysis without its traditional conceptual and technical overhead. It is based on parsing expression grammars, and compiles clean, intuitive, and _composable_ language descriptions into _packrat parsers_ written in pure, readable Ruby.
1
+ <p class="intro_text">
2
+
3
+ Treetop is a language for describing languages. Combining the elegance of Ruby with cutting-edge <em>parsing expression grammars</em>, it helps you analyze syntax with revolutionarily ease.
3
4
 
4
- ##Intuitive Grammar Specifications
5
- Treetop's packrat parsers use _memoization_ to make the time-complexity of backtracking a non-issue. This cuts the gordian knot of grammar design. There's no need to look ahead and no need to lex. Worry about the structure of the language, not the idiosyncrasies of the parser.
5
+ </p>
6
6
 
7
- ##Syntax-Oriented Programming
7
+
8
+ #Intuitive Grammar Specifications
9
+ Treetop's packrat parsers use _memoization_ to make the backtracking possible in linear time. This cuts the gordian knot of grammar design. There's no need to look ahead and no need to lex. Worry about the structure of the language, not the idiosyncrasies of the parser.
10
+
11
+ #Syntax-Oriented Programming
8
12
  Rather than implementing semantic actions that construct parse trees, define methods on the trees that Treetop automatically constructs–and write this code directly inside the grammar.
9
13
 
10
- ##Reusable, Composable Language Descriptions
14
+ #Reusable, Composable Language Descriptions
11
15
  Break grammars into modules and compose them via Ruby's mixin semantics. Or combine grammars written by others in novel ways. Or extend existing grammars with your own syntactic constructs by overriding rules with access to a `super` keyword. Compositionally means your investment of time into grammar writing is secure–you can always extend and reuse your code.
12
16
 
13
- ##Acknowledgements
17
+ #Acknowledgements
14
18
  First, thank you to my employer Rob Mee of Pivotal Labs for funding a substantial portion of Treetop's development. He gets it.
15
19
 
16
20
  I'd also like to thank:
17
21
 
18
22
  * Damon McCormick for several hours of pair programming.
19
- * Nick Kallen for constant, well-considered feedback, and a few hours of programming to boot.
23
+ * Nick Kallen for lots of well-considered feedback and a few afternoons of programming.
24
+ * Brian Takita for a night of pair programming.
20
25
  * Eliot Miranda for urging me rewrite as a compiler right away rather than putting it off.
21
26
  * Ryan Davis and Eric Hodel for hurting my code.
22
27
  * Dav Yaginuma for kicking me into action on my idea.
data/doc/screen.css ADDED
@@ -0,0 +1,52 @@
1
+ body {
2
+ margin: 0;
3
+ padding: 0;
4
+ background: #666666;
5
+ font-family: "Lucida Grande", Geneva, Arial, Verdana, sans-serif;
6
+ color: #333333;
7
+ }
8
+
9
+ div {
10
+ margin: 0;
11
+ background-position: center;
12
+ background-repeat: none;
13
+ }
14
+
15
+ h1 {
16
+ font-size: 120%;
17
+ margin-top: 1.5em;
18
+ margin-bottom: .5em;
19
+ }
20
+
21
+ div#top {
22
+ background-image: url("images/top_background.png");
23
+ height: 200px;
24
+ width: 100%;
25
+ }
26
+
27
+ div#middle {
28
+ padding-top: 10px;
29
+ background-image: url("images/middle_background.png");
30
+ background-repeat: repeat-y;
31
+ }
32
+
33
+ div#bottom {
34
+ background-image: url("images/bottom_background.png");
35
+ height: 42px;
36
+ margin-bottom: 30px;
37
+ }
38
+
39
+ div#content {
40
+ width: 481px;
41
+ margin: 0 auto 0 auto;
42
+ padding: 0 60px 25px 60px;
43
+ }
44
+
45
+ p {
46
+ line-height: 150%;
47
+ }
48
+
49
+ p.intro_text {
50
+ color: #C45900;
51
+ font-size: 115%;
52
+ }
data/doc/site.html ADDED
@@ -0,0 +1,34 @@
1
+ <html><head><link type="text/css" href="./screen.css" rel="stylesheet"></link></head><body><div id="top"></div><div id="middle"><div id="content"><p class="intro_text">
2
+
3
+ Treetop is a language for describing languages. Combining the elegance of Ruby with cutting-edge <em>parsing expression grammars</em>, it helps you analyze syntax with revolutionarily ease.
4
+
5
+ </p>
6
+
7
+ <h1>Intuitive Grammar Specifications</h1>
8
+
9
+ <p>Treetop's packrat parsers use <em>memoization</em> to make the backtracking possible in linear time. This cuts the gordian knot of grammar design. There's no need to look ahead and no need to lex. Worry about the structure of the language, not the idiosyncrasies of the parser.</p>
10
+
11
+ <h1>Syntax-Oriented Programming</h1>
12
+
13
+ <p>Rather than implementing semantic actions that construct parse trees, define methods on the trees that Treetop automatically constructs–and write this code directly inside the grammar.</p>
14
+
15
+ <h1>Reusable, Composable Language Descriptions</h1>
16
+
17
+ <p>Break grammars into modules and compose them via Ruby's mixin semantics. Or combine grammars written by others in novel ways. Or extend existing grammars with your own syntactic constructs by overriding rules with access to a <code>super</code> keyword. Compositionally means your investment of time into grammar writing is secure–you can always extend and reuse your code.</p>
18
+
19
+ <h1>Acknowledgements</h1>
20
+
21
+ <p>First, thank you to my employer Rob Mee of Pivotal Labs for funding a substantial portion of Treetop's development. He gets it.</p>
22
+
23
+ <p>I'd also like to thank:</p>
24
+
25
+ <ul>
26
+ <li>Damon McCormick for several hours of pair programming.</li>
27
+ <li>Nick Kallen for lots of well-considered feedback and a few afternoons of programming.</li>
28
+ <li>Brian Takita for a night of pair programming.</li>
29
+ <li>Eliot Miranda for urging me rewrite as a compiler right away rather than putting it off.</li>
30
+ <li>Ryan Davis and Eric Hodel for hurting my code.</li>
31
+ <li>Dav Yaginuma for kicking me into action on my idea.</li>
32
+ <li>Bryan Ford for his seminal work on Packrat Parsers.</li>
33
+ <li>The editors of Lambda the Ultimate, where I discovered parsing expression grammars.</li>
34
+ </ul></div></div><div id="bottom"></div></body></html>
data/doc/site.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'rubygems'
2
+ require 'erector'
3
+
4
+ class Layout < Erector::Widget
5
+ def render
6
+ html do
7
+ head do
8
+ link :rel => "stylesheet",
9
+ :type => "text/css",
10
+ :href => "./screen.css"
11
+ end
12
+
13
+ body do
14
+ div :id => 'top' do
15
+ end
16
+ div :id => 'middle' do
17
+ div :id => 'content' do
18
+ content
19
+ end
20
+ end
21
+ div :id => 'bottom' do
22
+
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ def bluecloth(path)
29
+ File.open(path) do |file|
30
+ text BlueCloth.new(file.read).to_html
31
+ end
32
+ end
33
+ end
34
+
35
+ class Index < Layout
36
+ def content
37
+ bluecloth "index.markdown"
38
+ end
39
+ end
40
+
41
+ puts Index.new.to_s
@@ -1,5 +1,5 @@
1
1
  module LambdaCalculus
2
- include ::Treetop::Runtime
2
+ include Treetop::Runtime
3
3
 
4
4
  def root
5
5
  result = _nt_program
@@ -746,6 +746,6 @@ module LambdaCalculus
746
746
 
747
747
  end
748
748
 
749
- class LambdaCalculusParser < ::Treetop::Runtime::CompiledParser
749
+ class LambdaCalculusParser < Treetop::Runtime::CompiledParser
750
750
  include LambdaCalculus
751
751
  end
@@ -0,0 +1,37 @@
1
+ require 'rubygems'
2
+ dir = File.dirname(__FILE__)
3
+
4
+ # Loading trusted version of Treetop to compile the compiler
5
+ trusted_treetop_path = Gem.source_index.find_name('treetop').last.full_gem_path
6
+ require File.join(trusted_treetop_path, 'lib', 'treetop')
7
+
8
+ # Relocating trusted version of Treetop to Trusted::Treetop
9
+ Trusted = Module.new
10
+ Trusted::Treetop = Treetop
11
+ Object.send(:remove_const, :Treetop)
12
+ Object.send(:remove_const, :TREETOP_ROOT)
13
+
14
+ # Requiring version of Treetop that is under test
15
+ require File.expand_path(File.join(dir, '..', 'treetop'))
16
+ # Remove stale Metagrammar defined by the generated metagrammar.rb in system under test
17
+ Treetop::Compiler.send(:remove_const, :Metagrammar)
18
+ Treetop::Compiler.send(:remove_const, :MetagrammarParser)
19
+
20
+ # Compile and evaluate freshly generated metagrammar source
21
+ METAGRAMMAR_PATH = File.join(TREETOP_ROOT, 'compiler', 'metagrammar.treetop')
22
+ compiled_metagrammar_source = Trusted::Treetop::Compiler::GrammarCompiler.new.ruby_source(METAGRAMMAR_PATH)
23
+ Object.class_eval(compiled_metagrammar_source)
24
+
25
+ # The compiler under test was compiled with the trusted grammar and therefore depends on its runtime
26
+ # But the runtime in the global namespace is the new runtime. We therefore inject the tursted runtime
27
+ # into the compiler so its parser functions correctly
28
+ Treetop::Compiler::Metagrammar.module_eval do
29
+ include Trusted::Treetop::Runtime
30
+ end
31
+
32
+ Treetop::Compiler.send(:remove_const, :MetagrammarParser)
33
+ class Treetop::Compiler::MetagrammarParser < Trusted::Treetop::Runtime::CompiledParser
34
+ include Treetop::Compiler::Metagrammar
35
+ end
36
+
37
+ $bootstrapped_gen_1_metagrammar = true
File without changes
@@ -1,15 +1,10 @@
1
1
  module Treetop
2
2
  module Compiler
3
3
  module Metagrammar
4
- include ::Treetop::Runtime
4
+ include Treetop::Runtime
5
5
 
6
6
  def root
7
- result = _nt_treetop_file
8
- if index == input.size
9
- return result
10
- else
11
- return ParseFailure.new(input, index, result.nested_failures)
12
- end
7
+ @root || :treetop_file
13
8
  end
14
9
 
15
10
  module TreetopFile0
@@ -505,7 +500,23 @@ module Treetop
505
500
  if r3.success?
506
501
  s4, nr4, i4 = [], [], index
507
502
  loop do
508
- r5 = _nt_alphanumeric_char
503
+ i5, nr5 = index, []
504
+ r6 = _nt_alphanumeric_char
505
+ nr5 << r6
506
+ if r6.success?
507
+ r5 = r6
508
+ r6.update_nested_results(nr5)
509
+ else
510
+ r7 = parse_terminal('::', SyntaxNode)
511
+ nr5 << r7
512
+ if r7.success?
513
+ r5 = r7
514
+ r7.update_nested_results(nr5)
515
+ else
516
+ self.index = i5
517
+ r5 = ParseFailure.new(input, i5, nr5)
518
+ end
519
+ end
509
520
  nr4 << r5
510
521
  if r5.success?
511
522
  s4 << r5
@@ -2438,7 +2449,7 @@ module Treetop
2438
2449
 
2439
2450
  end
2440
2451
 
2441
- class MetagrammarParser < ::Treetop::Runtime::CompiledParser
2452
+ class MetagrammarParser < Treetop::Runtime::CompiledParser
2442
2453
  include Metagrammar
2443
2454
  end
2444
2455
 
@@ -47,7 +47,7 @@ module Treetop
47
47
  end
48
48
 
49
49
  rule include_declaration
50
- 'include' space [A-Z] alphanumeric_char* {
50
+ 'include' space [A-Z] (alphanumeric_char / '::')* {
51
51
  def compile(builder)
52
52
  builder << text_value
53
53
  end
@@ -5,13 +5,7 @@ module Treetop
5
5
  def compile(builder)
6
6
  unless rules.empty?
7
7
  builder.method_declaration("root") do
8
- builder.assign 'result', rules.first.method_name
9
- builder.if__ 'index == input.size' do
10
- builder << 'return result'
11
- end
12
- builder.else_ do
13
- builder << 'return ParseFailure.new(input, index, result.nested_failures)'
14
- end
8
+ builder << "@root || :#{rules.first.name}"
15
9
  end
16
10
  builder.newline
17
11
  end
@@ -6,12 +6,12 @@ module Treetop
6
6
 
7
7
  builder.module_declaration "#{grammar_name.text_value}" do
8
8
  builder.in(indent_level) # account for initial indentation of grammar declaration
9
- builder << "include ::Treetop::Runtime"
9
+ builder << "include Treetop::Runtime"
10
10
  builder.newline
11
11
  declaration_sequence.compile(builder)
12
12
  end
13
13
  builder.newline
14
- builder.class_declaration "#{parser_name} < ::Treetop::Runtime::CompiledParser" do
14
+ builder.class_declaration "#{parser_name} < Treetop::Runtime::CompiledParser" do
15
15
  builder << "include #{grammar_name.text_value}"
16
16
  end
17
17
  end
@@ -3,11 +3,24 @@ module Treetop
3
3
  class CompiledParser
4
4
  include Treetop::Runtime
5
5
 
6
+ attr_accessor :consume_all_input
7
+ attr_writer :root
8
+ alias :consume_all_input? :consume_all_input
6
9
  attr_reader :input, :index
7
10
 
8
- def parse(input)
11
+ def initialize
12
+ self.consume_all_input = true
13
+ end
14
+
15
+ def parse(input, options = {})
9
16
  prepare_to_parse(input)
10
- return root
17
+ @index = options[:index] if options[:index]
18
+ result = send("_nt_#{root}")
19
+ if consume_all_input? && index != input.size
20
+ return ParseFailure.new(input, index, result.nested_failures)
21
+ else
22
+ return result
23
+ end
11
24
  end
12
25
 
13
26
  protected
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: treetop
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.1.2
7
- date: 2007-11-05 00:00:00 -08:00
6
+ version: 1.1.4
7
+ date: 2007-12-02 00:00:00 -08:00
8
8
  summary: A Ruby-based text parsing and interpretation DSL
9
9
  require_paths:
10
10
  - lib
@@ -31,79 +31,9 @@ authors:
31
31
  files:
32
32
  - README
33
33
  - Rakefile
34
- - test/compilation_target
35
- - test/compiler
36
- - test/composition
37
- - test/parser
38
- - test/ruby_extensions
39
- - test/screw
40
- - test/test_helper.rb
41
- - test/compilation_target/target.rb
42
- - test/compilation_target/target.treetop
43
- - test/compilation_target/target_test.rb
44
- - test/compiler/and_predicate_test.rb
45
- - test/compiler/anything_symbol_test.rb
46
- - test/compiler/character_class_test.rb
47
- - test/compiler/choice_test.rb
48
- - test/compiler/circular_compilation_test.rb
49
- - test/compiler/failure_propagation_functional_test.rb
50
- - test/compiler/grammar_compiler_test.rb
51
- - test/compiler/grammar_test.rb
52
- - test/compiler/nonterminal_symbol_test.rb
53
- - test/compiler/not_predicate_test.rb
54
- - test/compiler/one_or_more_test.rb
55
- - test/compiler/optional_test.rb
56
- - test/compiler/parenthesized_expression_test.rb
57
- - test/compiler/parsing_rule_test.rb
58
- - test/compiler/sequence_test.rb
59
- - test/compiler/terminal_symbol_test.rb
60
- - test/compiler/test_grammar.treetop
61
- - test/compiler/zero_or_more_test.rb
62
- - test/composition/a.treetop
63
- - test/composition/b.treetop
64
- - test/composition/c.treetop
65
- - test/composition/d.treetop
66
- - test/composition/grammar_composition_test.rb
67
- - test/parser/syntax_node_test.rb
68
- - test/parser/terminal_parse_failure_test.rb
69
- - test/ruby_extensions/string_test.rb
70
- - test/screw/Rakefile
71
- - test/screw/unit
72
- - test/screw/unit.rb
73
- - test/screw/unit/assertion_failed_error.rb
74
- - test/screw/unit/assertions.rb
75
- - test/screw/unit/auto_runner.rb
76
- - test/screw/unit/collector
77
- - test/screw/unit/collector.rb
78
- - test/screw/unit/error.rb
79
- - test/screw/unit/failure.rb
80
- - test/screw/unit/sugar.rb
81
- - test/screw/unit/test_case.rb
82
- - test/screw/unit/test_result.rb
83
- - test/screw/unit/test_suite.rb
84
- - test/screw/unit/ui
85
- - test/screw/unit/ui.rb
86
- - test/screw/unit/util
87
- - test/screw/unit/util.rb
88
- - test/screw/unit/collector/dir.rb
89
- - test/screw/unit/collector/objectspace.rb
90
- - test/screw/unit/ui/console
91
- - test/screw/unit/ui/fox
92
- - test/screw/unit/ui/gtk
93
- - test/screw/unit/ui/gtk2
94
- - test/screw/unit/ui/test_runner_mediator.rb
95
- - test/screw/unit/ui/test_runner_utilities.rb
96
- - test/screw/unit/ui/tk
97
- - test/screw/unit/ui/console/test_runner.rb
98
- - test/screw/unit/ui/fox/test_runner.rb
99
- - test/screw/unit/ui/gtk/test_runner.rb
100
- - test/screw/unit/ui/gtk2/testrunner.rb
101
- - test/screw/unit/ui/tk/test_runner.rb
102
- - test/screw/unit/util/backtrace_filter.rb
103
- - test/screw/unit/util/observable.rb
104
- - test/screw/unit/util/proc_wrapper.rb
105
34
  - lib/treetop
106
35
  - lib/treetop.rb
36
+ - lib/treetop/bootstrap_gen_1_metagrammar.rb
107
37
  - lib/treetop/compiler
108
38
  - lib/treetop/compiler.rb
109
39
  - lib/treetop/ruby_extensions
@@ -113,6 +43,7 @@ files:
113
43
  - lib/treetop/compiler/grammar_compiler.rb
114
44
  - lib/treetop/compiler/lexical_address_space.rb
115
45
  - lib/treetop/compiler/load_grammar.rb
46
+ - lib/treetop/compiler/metagrammar.
116
47
  - lib/treetop/compiler/metagrammar.rb
117
48
  - lib/treetop/compiler/metagrammar.treetop
118
49
  - lib/treetop/compiler/node_classes
@@ -150,10 +81,17 @@ files:
150
81
  - doc/images
151
82
  - doc/index.markdown
152
83
  - doc/pitfalls_and_advanced_techniques.markdown
84
+ - doc/screen.css
153
85
  - doc/semantic_interpretation.markdown
86
+ - doc/site.html
87
+ - doc/site.rb
154
88
  - doc/syntactic_recognition.markdown
155
89
  - doc/using_in_ruby.markdown
90
+ - doc/images/bottom_background.png
91
+ - doc/images/middle_backgound.png
92
+ - doc/images/middle_background.png
156
93
  - doc/images/paren_language_output.png
94
+ - doc/images/top_background.png
157
95
  - examples/lambda_calculus
158
96
  - examples/TALK
159
97
  - examples/lambda_calculus/arithmetic.treetop