treetop 1.1.0 → 1.1.1
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 +1 -1
- data/examples/lambda_calculus/arithmetic.treetop +9 -11
- data/examples/lambda_calculus/lambda_calculus.treetop +10 -16
- data/lib/treetop/compiler/metagrammar.rb +3 -3
- data/lib/treetop/compiler/metagrammar.treetop +3 -3
- data/test/compiler/parenthesized_expression_test.rb +17 -0
- metadata +28 -27
data/Rakefile
CHANGED
@@ -4,9 +4,13 @@ grammar Arithmetic
|
|
4
4
|
end
|
5
5
|
|
6
6
|
rule comparative
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
operand_1:additive space operator:equality_op space operand_2:additive <BinaryOperation>
|
8
|
+
end
|
9
|
+
|
10
|
+
rule equality_op
|
11
|
+
'==' {
|
12
|
+
def apply(a, b)
|
13
|
+
a == b
|
10
14
|
end
|
11
15
|
}
|
12
16
|
end
|
@@ -68,7 +72,7 @@ grammar Arithmetic
|
|
68
72
|
end
|
69
73
|
|
70
74
|
rule variable
|
71
|
-
[a-z] {
|
75
|
+
[a-z]+ {
|
72
76
|
def eval(env={})
|
73
77
|
env[name]
|
74
78
|
end
|
@@ -80,13 +84,7 @@ grammar Arithmetic
|
|
80
84
|
end
|
81
85
|
|
82
86
|
rule number
|
83
|
-
[1-9] [0-9]* {
|
84
|
-
def eval(env={})
|
85
|
-
text_value.to_i
|
86
|
-
end
|
87
|
-
}
|
88
|
-
/
|
89
|
-
'0' {
|
87
|
+
([1-9] [0-9]* / '0') {
|
90
88
|
def eval(env={})
|
91
89
|
text_value.to_i
|
92
90
|
end
|
@@ -105,23 +105,17 @@ grammar LambdaCalculus
|
|
105
105
|
end
|
106
106
|
|
107
107
|
rule variable
|
108
|
-
!keyword
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
env
|
115
|
-
|
116
|
-
|
117
|
-
def name
|
118
|
-
text_value
|
119
|
-
end
|
120
|
-
|
121
|
-
def to_s(env={})
|
122
|
-
env.has_key?(name) ? env[name].to_s : name
|
108
|
+
!keyword (
|
109
|
+
super {
|
110
|
+
def bind(value, env)
|
111
|
+
env.merge(name => value)
|
112
|
+
end
|
113
|
+
|
114
|
+
def to_s(env={})
|
115
|
+
env.has_key?(name) ? env[name].to_s : name
|
123
116
|
end
|
124
|
-
|
117
|
+
}
|
118
|
+
)
|
125
119
|
end
|
126
120
|
|
127
121
|
rule keyword
|
@@ -893,7 +893,7 @@ module Treetop
|
|
893
893
|
end
|
894
894
|
|
895
895
|
module Primary1
|
896
|
-
def compile(address, builder)
|
896
|
+
def compile(address, builder, parent_expression=nil)
|
897
897
|
prefix.compile(address, builder, self)
|
898
898
|
end
|
899
899
|
|
@@ -925,7 +925,7 @@ module Treetop
|
|
925
925
|
end
|
926
926
|
|
927
927
|
module Primary3
|
928
|
-
def compile(address, builder)
|
928
|
+
def compile(address, builder, parent_expression=nil)
|
929
929
|
suffix.compile(address, builder, self)
|
930
930
|
end
|
931
931
|
|
@@ -957,7 +957,7 @@ module Treetop
|
|
957
957
|
end
|
958
958
|
|
959
959
|
module Primary5
|
960
|
-
def compile(address, builder)
|
960
|
+
def compile(address, builder, parent_expression=nil)
|
961
961
|
atomic.compile(address, builder, self)
|
962
962
|
end
|
963
963
|
|
@@ -106,7 +106,7 @@ module Treetop
|
|
106
106
|
|
107
107
|
rule primary
|
108
108
|
prefix atomic {
|
109
|
-
def compile(address, builder)
|
109
|
+
def compile(address, builder, parent_expression=nil)
|
110
110
|
prefix.compile(address, builder, self)
|
111
111
|
end
|
112
112
|
|
@@ -124,7 +124,7 @@ module Treetop
|
|
124
124
|
}
|
125
125
|
/
|
126
126
|
atomic suffix node_class_declarations {
|
127
|
-
def compile(address, builder)
|
127
|
+
def compile(address, builder, parent_expression=nil)
|
128
128
|
suffix.compile(address, builder, self)
|
129
129
|
end
|
130
130
|
|
@@ -146,7 +146,7 @@ module Treetop
|
|
146
146
|
}
|
147
147
|
/
|
148
148
|
atomic node_class_declarations {
|
149
|
-
def compile(address, builder)
|
149
|
+
def compile(address, builder, parent_expression=nil)
|
150
150
|
atomic.compile(address, builder, self)
|
151
151
|
end
|
152
152
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'test_helper')
|
2
|
+
|
3
|
+
describe "An unadorned expression inside of parentheses", :extend => CompilerTestCase do
|
4
|
+
testing_expression '("foo")'
|
5
|
+
|
6
|
+
it "should behave as normal" do
|
7
|
+
parse('foo').should be_success
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "A prefixed-expression inside of parentheses", :extend => CompilerTestCase do
|
12
|
+
testing_expression '(!"foo")'
|
13
|
+
|
14
|
+
it "should behave as normal" do
|
15
|
+
parse('foo').should_not be_success
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
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.1
|
7
|
+
date: 2007-11-05 00:00:00 -08:00
|
8
8
|
summary: A Ruby-based text parsing and interpretation DSL
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -32,10 +32,15 @@ files:
|
|
32
32
|
- README
|
33
33
|
- Rakefile
|
34
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
|
35
41
|
- test/compilation_target/target.rb
|
36
42
|
- test/compilation_target/target.treetop
|
37
43
|
- test/compilation_target/target_test.rb
|
38
|
-
- test/compiler
|
39
44
|
- test/compiler/and_predicate_test.rb
|
40
45
|
- test/compiler/anything_symbol_test.rb
|
41
46
|
- test/compiler/character_class_test.rb
|
@@ -48,31 +53,27 @@ files:
|
|
48
53
|
- test/compiler/not_predicate_test.rb
|
49
54
|
- test/compiler/one_or_more_test.rb
|
50
55
|
- test/compiler/optional_test.rb
|
56
|
+
- test/compiler/parenthesized_expression_test.rb
|
51
57
|
- test/compiler/parsing_rule_test.rb
|
52
58
|
- test/compiler/sequence_test.rb
|
53
59
|
- test/compiler/terminal_symbol_test.rb
|
54
60
|
- test/compiler/test_grammar.treetop
|
55
61
|
- test/compiler/zero_or_more_test.rb
|
56
|
-
- test/composition
|
57
62
|
- test/composition/a.treetop
|
58
63
|
- test/composition/b.treetop
|
59
64
|
- test/composition/c.treetop
|
60
65
|
- test/composition/d.treetop
|
61
66
|
- test/composition/grammar_composition_test.rb
|
62
|
-
- test/parser
|
63
67
|
- test/parser/syntax_node_test.rb
|
64
68
|
- test/parser/terminal_parse_failure_test.rb
|
65
|
-
- test/ruby_extensions
|
66
69
|
- test/ruby_extensions/string_test.rb
|
67
|
-
- test/screw
|
68
70
|
- test/screw/Rakefile
|
69
71
|
- test/screw/unit
|
72
|
+
- test/screw/unit.rb
|
70
73
|
- test/screw/unit/assertion_failed_error.rb
|
71
74
|
- test/screw/unit/assertions.rb
|
72
75
|
- test/screw/unit/auto_runner.rb
|
73
76
|
- test/screw/unit/collector
|
74
|
-
- test/screw/unit/collector/dir.rb
|
75
|
-
- test/screw/unit/collector/objectspace.rb
|
76
77
|
- test/screw/unit/collector.rb
|
77
78
|
- test/screw/unit/error.rb
|
78
79
|
- test/screw/unit/failure.rb
|
@@ -81,34 +82,42 @@ files:
|
|
81
82
|
- test/screw/unit/test_result.rb
|
82
83
|
- test/screw/unit/test_suite.rb
|
83
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
|
84
90
|
- test/screw/unit/ui/console
|
85
|
-
- test/screw/unit/ui/console/test_runner.rb
|
86
91
|
- test/screw/unit/ui/fox
|
87
|
-
- test/screw/unit/ui/fox/test_runner.rb
|
88
92
|
- test/screw/unit/ui/gtk
|
89
|
-
- test/screw/unit/ui/gtk/test_runner.rb
|
90
93
|
- test/screw/unit/ui/gtk2
|
91
|
-
- test/screw/unit/ui/gtk2/testrunner.rb
|
92
94
|
- test/screw/unit/ui/test_runner_mediator.rb
|
93
95
|
- test/screw/unit/ui/test_runner_utilities.rb
|
94
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
|
95
101
|
- test/screw/unit/ui/tk/test_runner.rb
|
96
|
-
- test/screw/unit/ui.rb
|
97
|
-
- test/screw/unit/util
|
98
102
|
- test/screw/unit/util/backtrace_filter.rb
|
99
103
|
- test/screw/unit/util/observable.rb
|
100
104
|
- test/screw/unit/util/proc_wrapper.rb
|
101
|
-
- test/screw/unit/util.rb
|
102
|
-
- test/screw/unit.rb
|
103
|
-
- test/test_helper.rb
|
104
105
|
- lib/treetop
|
106
|
+
- lib/treetop.rb
|
105
107
|
- lib/treetop/compiler
|
108
|
+
- lib/treetop/compiler.rb
|
109
|
+
- lib/treetop/ruby_extensions
|
110
|
+
- lib/treetop/ruby_extensions.rb
|
111
|
+
- lib/treetop/runtime
|
112
|
+
- lib/treetop/runtime.rb
|
106
113
|
- lib/treetop/compiler/grammar_compiler.rb
|
107
114
|
- lib/treetop/compiler/lexical_address_space.rb
|
108
115
|
- lib/treetop/compiler/load_grammar.rb
|
109
116
|
- lib/treetop/compiler/metagrammar.rb
|
110
117
|
- lib/treetop/compiler/metagrammar.treetop
|
111
118
|
- lib/treetop/compiler/node_classes
|
119
|
+
- lib/treetop/compiler/node_classes.rb
|
120
|
+
- lib/treetop/compiler/ruby_builder.rb
|
112
121
|
- lib/treetop/compiler/node_classes/anything_symbol.rb
|
113
122
|
- lib/treetop/compiler/node_classes/atomic_expression.rb
|
114
123
|
- lib/treetop/compiler/node_classes/character_class.rb
|
@@ -126,13 +135,7 @@ files:
|
|
126
135
|
- lib/treetop/compiler/node_classes/sequence.rb
|
127
136
|
- lib/treetop/compiler/node_classes/terminal.rb
|
128
137
|
- lib/treetop/compiler/node_classes/treetop_file.rb
|
129
|
-
- lib/treetop/compiler/node_classes.rb
|
130
|
-
- lib/treetop/compiler/ruby_builder.rb
|
131
|
-
- lib/treetop/compiler.rb
|
132
|
-
- lib/treetop/ruby_extensions
|
133
138
|
- lib/treetop/ruby_extensions/string.rb
|
134
|
-
- lib/treetop/ruby_extensions.rb
|
135
|
-
- lib/treetop/runtime
|
136
139
|
- lib/treetop/runtime/compiled_parser.rb
|
137
140
|
- lib/treetop/runtime/node_cache.rb
|
138
141
|
- lib/treetop/runtime/parse_cache.rb
|
@@ -141,10 +144,9 @@ files:
|
|
141
144
|
- lib/treetop/runtime/syntax_node.rb
|
142
145
|
- lib/treetop/runtime/terminal_parse_failure.rb
|
143
146
|
- lib/treetop/runtime/terminal_syntax_node.rb
|
144
|
-
- lib/treetop/runtime.rb
|
145
|
-
- lib/treetop.rb
|
146
147
|
- bin/tt
|
147
148
|
- examples/lambda_calculus
|
149
|
+
- examples/TALK
|
148
150
|
- examples/lambda_calculus/arithmetic.treetop
|
149
151
|
- examples/lambda_calculus/arithmetic_node_classes.rb
|
150
152
|
- examples/lambda_calculus/arithmetic_test.rb
|
@@ -152,7 +154,6 @@ files:
|
|
152
154
|
- examples/lambda_calculus/lambda_calculus_node_classes.rb
|
153
155
|
- examples/lambda_calculus/lambda_calculus_test.rb
|
154
156
|
- examples/lambda_calculus/test_helper.rb
|
155
|
-
- examples/TALK
|
156
157
|
test_files: []
|
157
158
|
|
158
159
|
rdoc_options: []
|