treetop 1.1.2 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
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 => :
|
10
|
+
task :default => :spec
|
11
11
|
|
12
|
-
Rake::
|
13
|
-
t.pattern = '
|
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.
|
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
|
-
|
2
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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 <
|
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
|
4
|
+
include Treetop::Runtime
|
5
5
|
|
6
6
|
def root
|
7
|
-
|
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
|
-
|
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 <
|
2452
|
+
class MetagrammarParser < Treetop::Runtime::CompiledParser
|
2442
2453
|
include Metagrammar
|
2443
2454
|
end
|
2444
2455
|
|
@@ -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
|
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
|
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} <
|
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
|
11
|
+
def initialize
|
12
|
+
self.consume_all_input = true
|
13
|
+
end
|
14
|
+
|
15
|
+
def parse(input, options = {})
|
9
16
|
prepare_to_parse(input)
|
10
|
-
|
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
|
+
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.
|
7
|
-
date: 2007-
|
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
|