treetop 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|