raabro 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +5 -0
- data/lib/raabro.rb +3 -13
- data/spec/sample_xel_spec.rb +5 -2
- metadata +1 -1
data/CHANGELOG.txt
CHANGED
data/lib/raabro.rb
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
module Raabro
|
28
28
|
|
29
|
-
VERSION = '1.0.
|
29
|
+
VERSION = '1.0.3'
|
30
30
|
|
31
31
|
class Input
|
32
32
|
|
@@ -81,17 +81,6 @@ module Raabro
|
|
81
81
|
@children = successful_children
|
82
82
|
end
|
83
83
|
|
84
|
-
def shrink!
|
85
|
-
|
86
|
-
@children =
|
87
|
-
@children.inject([]) do |a, c|
|
88
|
-
a << c.shrink! if c.result == 1 && c.name
|
89
|
-
a
|
90
|
-
end
|
91
|
-
|
92
|
-
self
|
93
|
-
end
|
94
|
-
|
95
84
|
def string
|
96
85
|
|
97
86
|
@input.string[@offset, @length]
|
@@ -401,6 +390,8 @@ module Raabro
|
|
401
390
|
|
402
391
|
def parse(input, opts={})
|
403
392
|
|
393
|
+
opts[:prune] = true unless opts.has_key?(:prune)
|
394
|
+
|
404
395
|
root = self.respond_to?(:root) ? :root : @last
|
405
396
|
|
406
397
|
t =
|
@@ -413,7 +404,6 @@ module Raabro
|
|
413
404
|
return nil if opts[:prune] != false && t.result != 1
|
414
405
|
|
415
406
|
t = t.children.first if t.parter == :all
|
416
|
-
t = (opts[:prune] == false) || (opts[:shrink] == false) ? t : t.shrink!
|
417
407
|
|
418
408
|
return rewrite(t) if opts[:rewrite] != false && respond_to?(:rewrite)
|
419
409
|
|
data/spec/sample_xel_spec.rb
CHANGED
@@ -36,7 +36,7 @@ module Sample::Xel include Raabro
|
|
36
36
|
tree.string.to_i
|
37
37
|
when :fun
|
38
38
|
[ tree.children[0].string ] +
|
39
|
-
tree.children[1].children.collect { |e| rewrite(e) }
|
39
|
+
tree.children[1].children.select(&:name).collect { |e| rewrite(e) }
|
40
40
|
else
|
41
41
|
fail ArgumentError.new("cannot rewrite #{tree.to_a.inspect}")
|
42
42
|
end
|
@@ -73,7 +73,7 @@ describe Raabro do
|
|
73
73
|
expect(t.result).to eq(1)
|
74
74
|
|
75
75
|
expect(
|
76
|
-
Sample::Xel.rewrite(t
|
76
|
+
Sample::Xel.rewrite(t)
|
77
77
|
).to eq(
|
78
78
|
[ 'SUM', 1, [ 'MUL', 4, 5 ] ]
|
79
79
|
)
|
@@ -100,10 +100,13 @@ describe Raabro do
|
|
100
100
|
1 :fun 0,9
|
101
101
|
1 :funame 0,3 "MUL"
|
102
102
|
1 :args 3,6
|
103
|
+
1 nil 3,1 "("
|
103
104
|
1 :exp 4,1
|
104
105
|
1 :num 4,1 "7"
|
106
|
+
1 nil 5,1 ","
|
105
107
|
1 :exp 6,2
|
106
108
|
1 :num 6,2 "-3"
|
109
|
+
1 nil 8,1 ")"
|
107
110
|
}.strip)
|
108
111
|
end
|
109
112
|
|