elparser 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/elparser.gemspec +1 -1
- data/lib/elparser/parser.tab.rb +244 -0
- data/lib/elparser/parser.y +42 -0
- data/lib/elparser/version.rb +1 -1
- data/test/test-elparser.rb +174 -0
- metadata +17 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c391d3c3b15b4a4fdceb3e25866aadce77cde8c
|
4
|
+
data.tar.gz: ec18d9c6a518d140df97f54b4c7a352483ba303e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7765f3e41cf5d867464a93328e5d9c3e4de947d17c3e4411f40447eceae16793dbd99edc0e56b738928f5c18f3dcde4c261e2dad6eb2a9f3f73e4684e534191f
|
7
|
+
data.tar.gz: 556107b0ce54435da3b0c7bc1dee040cb9eec94fa2d8b35241802e9a4384341a787fed346bae29b8d4e52c64c93f836ce20aa635d621b79de7632e8040ab6e96
|
data/README.md
CHANGED
@@ -94,8 +94,8 @@ A quoted expression is translated to an array.
|
|
94
94
|
Both `nil` and `()` are translated to `nil`.
|
95
95
|
Cons cells and lists are translated to arrays.
|
96
96
|
|
97
|
-
| type | S-exp (input) | Ruby (output)
|
98
|
-
|
97
|
+
| type | S-exp (input) | Ruby (output) |
|
98
|
+
|------------------|---------------------|---------------------|
|
99
99
|
| integer | `1` | `1` |
|
100
100
|
| float | `1.2` | `1.2` |
|
101
101
|
| float | `1e4` | `1e4` |
|
@@ -122,7 +122,7 @@ such S-expressions with creating instances of `SExpCons` and
|
|
122
122
|
`SExpQuoted` directly and calling the `to_s` method.
|
123
123
|
|
124
124
|
| type | Ruby (input) | S-exp (output) |
|
125
|
-
|
125
|
+
|------------|------------------------------------------|------------------------------|
|
126
126
|
| primitive | `[1,1.2,-4,"xxx",:www,true,nil]` | `(1 1.2 -4 "xxx" www t nil)` |
|
127
127
|
| empty list | `[]` | `nil` |
|
128
128
|
| nest list | `[1,[2,[3,4]]]` | `(1 (2 (3 4)))` |
|
data/elparser.gemspec
CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
spec.extra_rdoc_files = ['readme.html']
|
21
21
|
|
22
|
+
spec.add_runtime_dependency "racc", "~> 1.4"
|
22
23
|
spec.add_development_dependency "bundler", "~> 1.7"
|
23
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
-
spec.add_development_dependency "racc", "~> 1.4"
|
25
25
|
spec.add_development_dependency "test-unit", "~> 3.0"
|
26
26
|
end
|
@@ -0,0 +1,244 @@
|
|
1
|
+
#
|
2
|
+
# DO NOT MODIFY!!!!
|
3
|
+
# This file is automatically generated by Racc 1.4.12
|
4
|
+
# from Racc grammer file "".
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'racc/parser.rb'
|
8
|
+
module Elparser
|
9
|
+
class Parser < Racc::Parser
|
10
|
+
##### State transition tables begin ###
|
11
|
+
|
12
|
+
racc_action_table = [
|
13
|
+
10, 21, 11, 12, 16, 13, 14, 15, 10, 26,
|
14
|
+
11, 12, nil, 13, 14, 15, 10, 19, 11, 12,
|
15
|
+
nil, 13, 14, 15, 10, nil, 11, 12, nil, 13,
|
16
|
+
14, 15, 10, 24, 11, 12, 23, 13, 14, 15 ]
|
17
|
+
|
18
|
+
racc_action_check = [
|
19
|
+
0, 16, 0, 0, 1, 0, 0, 0, 23, 25,
|
20
|
+
23, 23, nil, 23, 23, 23, 10, 10, 10, 10,
|
21
|
+
nil, 10, 10, 10, 13, nil, 13, 13, nil, 13,
|
22
|
+
13, 13, 18, 18, 18, 18, 18, 18, 18, 18 ]
|
23
|
+
|
24
|
+
racc_action_pointer = [
|
25
|
+
-2, 4, nil, nil, nil, nil, nil, nil, nil, nil,
|
26
|
+
14, nil, nil, 22, nil, nil, 1, nil, 30, nil,
|
27
|
+
nil, nil, nil, 6, nil, 6, nil ]
|
28
|
+
|
29
|
+
racc_action_default = [
|
30
|
+
-19, -19, -1, -2, -3, -4, -5, -6, -7, -8,
|
31
|
+
-19, -12, -13, -19, -17, -18, -19, -9, -19, -11,
|
32
|
+
-16, 27, -10, -19, -15, -19, -14 ]
|
33
|
+
|
34
|
+
racc_goto_table = [
|
35
|
+
2, 1, 18, nil, nil, nil, nil, nil, nil, nil,
|
36
|
+
17, nil, nil, 20, nil, nil, nil, nil, 22, nil,
|
37
|
+
nil, nil, nil, 25 ]
|
38
|
+
|
39
|
+
racc_goto_check = [
|
40
|
+
2, 1, 10, nil, nil, nil, nil, nil, nil, nil,
|
41
|
+
2, nil, nil, 2, nil, nil, nil, nil, 2, nil,
|
42
|
+
nil, nil, nil, 2 ]
|
43
|
+
|
44
|
+
racc_goto_pointer = [
|
45
|
+
nil, 1, 0, nil, nil, nil, nil, nil, nil, nil,
|
46
|
+
-8 ]
|
47
|
+
|
48
|
+
racc_goto_default = [
|
49
|
+
nil, nil, nil, 3, 4, 5, 6, 7, 8, 9,
|
50
|
+
nil ]
|
51
|
+
|
52
|
+
racc_reduce_table = [
|
53
|
+
0, 0, :racc_error,
|
54
|
+
1, 11, :_reduce_1,
|
55
|
+
1, 12, :_reduce_none,
|
56
|
+
1, 12, :_reduce_none,
|
57
|
+
1, 12, :_reduce_none,
|
58
|
+
1, 12, :_reduce_none,
|
59
|
+
1, 12, :_reduce_none,
|
60
|
+
1, 12, :_reduce_none,
|
61
|
+
1, 12, :_reduce_none,
|
62
|
+
1, 20, :_reduce_9,
|
63
|
+
2, 20, :_reduce_10,
|
64
|
+
2, 13, :_reduce_11,
|
65
|
+
1, 14, :_reduce_12,
|
66
|
+
1, 14, :_reduce_13,
|
67
|
+
5, 15, :_reduce_14,
|
68
|
+
3, 18, :_reduce_15,
|
69
|
+
2, 19, :_reduce_16,
|
70
|
+
1, 16, :_reduce_17,
|
71
|
+
1, 17, :_reduce_18 ]
|
72
|
+
|
73
|
+
racc_reduce_n = 19
|
74
|
+
|
75
|
+
racc_shift_n = 27
|
76
|
+
|
77
|
+
racc_token_table = {
|
78
|
+
false => 0,
|
79
|
+
:error => 1,
|
80
|
+
"(" => 2,
|
81
|
+
")" => 3,
|
82
|
+
:INTEGER => 4,
|
83
|
+
:FLOAT => 5,
|
84
|
+
"." => 6,
|
85
|
+
"'" => 7,
|
86
|
+
:SYMBOL => 8,
|
87
|
+
:STRING => 9 }
|
88
|
+
|
89
|
+
racc_nt_base = 10
|
90
|
+
|
91
|
+
racc_use_result_var = true
|
92
|
+
|
93
|
+
Racc_arg = [
|
94
|
+
racc_action_table,
|
95
|
+
racc_action_check,
|
96
|
+
racc_action_default,
|
97
|
+
racc_action_pointer,
|
98
|
+
racc_goto_table,
|
99
|
+
racc_goto_check,
|
100
|
+
racc_goto_default,
|
101
|
+
racc_goto_pointer,
|
102
|
+
racc_nt_base,
|
103
|
+
racc_reduce_table,
|
104
|
+
racc_token_table,
|
105
|
+
racc_shift_n,
|
106
|
+
racc_reduce_n,
|
107
|
+
racc_use_result_var ]
|
108
|
+
|
109
|
+
Racc_token_to_s_table = [
|
110
|
+
"$end",
|
111
|
+
"error",
|
112
|
+
"\"(\"",
|
113
|
+
"\")\"",
|
114
|
+
"INTEGER",
|
115
|
+
"FLOAT",
|
116
|
+
"\".\"",
|
117
|
+
"\"'\"",
|
118
|
+
"SYMBOL",
|
119
|
+
"STRING",
|
120
|
+
"$start",
|
121
|
+
"target",
|
122
|
+
"sexp",
|
123
|
+
"nil",
|
124
|
+
"val",
|
125
|
+
"cons",
|
126
|
+
"symbol",
|
127
|
+
"string",
|
128
|
+
"list",
|
129
|
+
"quoted",
|
130
|
+
"sexp_seq" ]
|
131
|
+
|
132
|
+
Racc_debug_parser = false
|
133
|
+
|
134
|
+
##### State transition tables end #####
|
135
|
+
|
136
|
+
# reduce 0 omitted
|
137
|
+
|
138
|
+
module_eval(<<'.,.,', 'parser.y', 3)
|
139
|
+
def _reduce_1(val, _values, result)
|
140
|
+
|
141
|
+
result
|
142
|
+
end
|
143
|
+
.,.,
|
144
|
+
|
145
|
+
# reduce 2 omitted
|
146
|
+
|
147
|
+
# reduce 3 omitted
|
148
|
+
|
149
|
+
# reduce 4 omitted
|
150
|
+
|
151
|
+
# reduce 5 omitted
|
152
|
+
|
153
|
+
# reduce 6 omitted
|
154
|
+
|
155
|
+
# reduce 7 omitted
|
156
|
+
|
157
|
+
# reduce 8 omitted
|
158
|
+
|
159
|
+
module_eval(<<'.,.,', 'parser.y', 7)
|
160
|
+
def _reduce_9(val, _values, result)
|
161
|
+
result = [val[0]]
|
162
|
+
result
|
163
|
+
end
|
164
|
+
.,.,
|
165
|
+
|
166
|
+
module_eval(<<'.,.,', 'parser.y', 8)
|
167
|
+
def _reduce_10(val, _values, result)
|
168
|
+
result << val[1]
|
169
|
+
result
|
170
|
+
end
|
171
|
+
.,.,
|
172
|
+
|
173
|
+
module_eval(<<'.,.,', 'parser.y', 11)
|
174
|
+
def _reduce_11(val, _values, result)
|
175
|
+
result = SExpNil.new
|
176
|
+
|
177
|
+
result
|
178
|
+
end
|
179
|
+
.,.,
|
180
|
+
|
181
|
+
module_eval(<<'.,.,', 'parser.y', 14)
|
182
|
+
def _reduce_12(val, _values, result)
|
183
|
+
result = SExpNumber.int(val[0])
|
184
|
+
result
|
185
|
+
end
|
186
|
+
.,.,
|
187
|
+
|
188
|
+
module_eval(<<'.,.,', 'parser.y', 15)
|
189
|
+
def _reduce_13(val, _values, result)
|
190
|
+
result = SExpNumber.float(val[0])
|
191
|
+
result
|
192
|
+
end
|
193
|
+
.,.,
|
194
|
+
|
195
|
+
module_eval(<<'.,.,', 'parser.y', 18)
|
196
|
+
def _reduce_14(val, _values, result)
|
197
|
+
if val[1].size == 1 then
|
198
|
+
result = SExpCons.new(val[1][0], val[3])
|
199
|
+
else
|
200
|
+
result = SExpListDot.new(val[1], val[3])
|
201
|
+
end
|
202
|
+
|
203
|
+
result
|
204
|
+
end
|
205
|
+
.,.,
|
206
|
+
|
207
|
+
module_eval(<<'.,.,', 'parser.y', 26)
|
208
|
+
def _reduce_15(val, _values, result)
|
209
|
+
result = SExpList.new(val[1])
|
210
|
+
|
211
|
+
result
|
212
|
+
end
|
213
|
+
.,.,
|
214
|
+
|
215
|
+
module_eval(<<'.,.,', 'parser.y', 30)
|
216
|
+
def _reduce_16(val, _values, result)
|
217
|
+
result = SExpQuoted.new(val[1])
|
218
|
+
|
219
|
+
result
|
220
|
+
end
|
221
|
+
.,.,
|
222
|
+
|
223
|
+
module_eval(<<'.,.,', 'parser.y', 34)
|
224
|
+
def _reduce_17(val, _values, result)
|
225
|
+
result = SExpSymbol.new(val[0])
|
226
|
+
|
227
|
+
result
|
228
|
+
end
|
229
|
+
.,.,
|
230
|
+
|
231
|
+
module_eval(<<'.,.,', 'parser.y', 38)
|
232
|
+
def _reduce_18(val, _values, result)
|
233
|
+
result = SExpString.new(val[0])
|
234
|
+
|
235
|
+
result
|
236
|
+
end
|
237
|
+
.,.,
|
238
|
+
|
239
|
+
def _reduce_none(val, _values, result)
|
240
|
+
val[0]
|
241
|
+
end
|
242
|
+
|
243
|
+
end # class Parser
|
244
|
+
end # module Elparser
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Elparser::Parser
|
2
|
+
|
3
|
+
rule
|
4
|
+
target: sexp {}
|
5
|
+
|
6
|
+
sexp: nil | val | cons | symbol | string | list | quoted;
|
7
|
+
|
8
|
+
sexp_seq: sexp { result = [val[0]] }
|
9
|
+
| sexp_seq sexp { result << val[1] }
|
10
|
+
|
11
|
+
nil: "(" ")" {
|
12
|
+
result = SExpNil.new
|
13
|
+
}
|
14
|
+
|
15
|
+
val: INTEGER { result = SExpNumber.int(val[0])}
|
16
|
+
| FLOAT { result = SExpNumber.float(val[0])}
|
17
|
+
|
18
|
+
cons: "(" sexp_seq "." sexp ")" {
|
19
|
+
if val[1].size == 1 then
|
20
|
+
result = SExpCons.new(val[1][0], val[3])
|
21
|
+
else
|
22
|
+
result = SExpListDot.new(val[1], val[3])
|
23
|
+
end
|
24
|
+
}
|
25
|
+
|
26
|
+
list: "(" sexp_seq ")" {
|
27
|
+
result = SExpList.new(val[1])
|
28
|
+
}
|
29
|
+
|
30
|
+
quoted: "'" sexp {
|
31
|
+
result = SExpQuoted.new(val[1])
|
32
|
+
}
|
33
|
+
|
34
|
+
symbol: SYMBOL {
|
35
|
+
result = SExpSymbol.new(val[0])
|
36
|
+
}
|
37
|
+
|
38
|
+
string: STRING {
|
39
|
+
result = SExpString.new(val[0])
|
40
|
+
}
|
41
|
+
|
42
|
+
end
|
data/lib/elparser/version.rb
CHANGED
@@ -0,0 +1,174 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'elparser'
|
5
|
+
|
6
|
+
STDOUT.sync = true
|
7
|
+
|
8
|
+
include Elparser
|
9
|
+
|
10
|
+
# short cut functions
|
11
|
+
|
12
|
+
def _int(v)
|
13
|
+
SExpNumber.int(v.to_s)
|
14
|
+
end
|
15
|
+
def _float(v)
|
16
|
+
SExpNumber.float(v.to_s)
|
17
|
+
end
|
18
|
+
def _symbol(v)
|
19
|
+
SExpSymbol.new(v)
|
20
|
+
end
|
21
|
+
def _string(v)
|
22
|
+
SExpString.new(v)
|
23
|
+
end
|
24
|
+
def _nil
|
25
|
+
SExpNil.new
|
26
|
+
end
|
27
|
+
def _cons(a,b)
|
28
|
+
SExpCons.new(a,b)
|
29
|
+
end
|
30
|
+
def _list(*args)
|
31
|
+
SExpList.new(args)
|
32
|
+
end
|
33
|
+
def _dotlist(a,b)
|
34
|
+
SExpListDot.new(a,b)
|
35
|
+
end
|
36
|
+
def _q(a)
|
37
|
+
SExpQuoted.new(a)
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
class TestElparser < Test::Unit::TestCase
|
43
|
+
|
44
|
+
setup do
|
45
|
+
@parser = Elparser::Parser.new
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
sub_test_case "Decoder" do
|
51
|
+
|
52
|
+
sub_test_case "Primitive Decoder" do
|
53
|
+
|
54
|
+
data({
|
55
|
+
'integer' => ['123', _int("123")],
|
56
|
+
'unary-' => ['-22', _int("-22")],
|
57
|
+
'unary+' => ['+33', _int("+33")],
|
58
|
+
'float' => ['1.23', _float("1.23")],
|
59
|
+
'float period' => ['.45', _float(".45")],
|
60
|
+
'float exp+' => ['1.4e5', _float("1.4e5")],
|
61
|
+
'float exp-' => ['1.4e-5', _float("1.4e-5")],
|
62
|
+
'symbol' => ['abc', _symbol('abc')],
|
63
|
+
'symbol2' => ['$sf-/p.post', _symbol('$sf-/p.post')],
|
64
|
+
'string' => ['"qwert"', _string("qwert")],
|
65
|
+
'string2' => ['"abc\"dds\"dfff\'123\' \\n\nok?"', _string('abc\"dds\"dfff\'123\' \\n\nok?')],
|
66
|
+
'quote' => ['\'symbol', _q(_symbol('symbol'))],
|
67
|
+
'nil' => ['nil', _nil],
|
68
|
+
})
|
69
|
+
def test_primitive(data)
|
70
|
+
src, expected = data
|
71
|
+
assert_equal expected, @parser.parse(src)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
sub_test_case "List Structure" do
|
77
|
+
|
78
|
+
data({
|
79
|
+
"nil list" => ["()", _nil],
|
80
|
+
"list1" => ["(1)", _list(_int(1))],
|
81
|
+
"list2" => ["(1 2)",_list(_int(1),_int(2))],
|
82
|
+
"nest list1" => ["(1 (2 3) 4)",_list(_int(1),_list(_int(2),_int(3)),_int(4))],
|
83
|
+
"nest list2" => ["(((1)))",_list(_list(_list(_int(1))))],
|
84
|
+
"type values" => ["(1 'a \"b\" ())",_list(_int(1),_q(_symbol("a")),_string("b"),_nil)],
|
85
|
+
"calc terms" => ["(+ 1 2 (- 2 (* 3 4)))",_list(_symbol("+"),_int(1),_int(2),_list(_symbol("-"),_int(2),_list(_symbol("*"),_int(3),_int(4))))],
|
86
|
+
"reverse cons list" => ["(((1.0) 0.2) 3.4e+4)",_list(_list(_list(_float(1.0)),_float(0.2)),_float("3.4e+4"))],
|
87
|
+
"cons cell" => ["(1 . 2)",_cons(_int(1),_int(2))],
|
88
|
+
"dot list" => ["(1 2 . 3)",_dotlist([_int(1),_int(2)],_int(3))],
|
89
|
+
})
|
90
|
+
def test_list(data)
|
91
|
+
src, expected = data
|
92
|
+
assert_equal expected, @parser.parse(src)
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
sub_test_case "Cons and List operation" do
|
98
|
+
|
99
|
+
def test_cons1
|
100
|
+
v = @parser.parse("(1 . 2)")
|
101
|
+
assert_equal _int(1), v.car
|
102
|
+
assert_equal _int(2), v.cdr
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_list1
|
106
|
+
v = @parser.parse("(1 2 3)")
|
107
|
+
assert_equal _int(1), v.car
|
108
|
+
assert_equal _int(2), v.cdr.car
|
109
|
+
assert_equal _int(3), v.cdr.cdr.car
|
110
|
+
assert_equal _nil, v.cdr.cdr.cdr
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_dotlist
|
114
|
+
v = @parser.parse("(1 2 . 3)")
|
115
|
+
assert_equal _int(1), v.car
|
116
|
+
assert_equal _int(2), v.cdr.car
|
117
|
+
assert_equal _int(3), v.cdr.cdr
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_ruby_object
|
121
|
+
v = @parser.parse("(1 2.1 \"xxx\" www)")
|
122
|
+
ro = v.to_ruby
|
123
|
+
assert_equal ro.size, 4
|
124
|
+
assert_equal ro[0], 1
|
125
|
+
assert_equal ro[1], 2.1
|
126
|
+
assert_equal ro[2], "xxx"
|
127
|
+
assert_equal ro[3], :www
|
128
|
+
|
129
|
+
v = @parser.parse("(1 (2 3 (4)))")
|
130
|
+
ro = v.to_ruby
|
131
|
+
assert_equal ro.size, 2
|
132
|
+
assert_equal ro[0], 1
|
133
|
+
assert_equal ro[1][0], 2
|
134
|
+
assert_equal ro[1][1], 3
|
135
|
+
assert_equal ro[1][2][0], 4
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_alist
|
139
|
+
v = @parser.parse("( (a . 1) (b . \"xxx\") (c 3 4) (\"d\" . \"e\"))")
|
140
|
+
assert_true v.alist?
|
141
|
+
hash = v.to_h
|
142
|
+
assert_equal hash[:a], 1
|
143
|
+
assert_equal hash[:b], "xxx"
|
144
|
+
assert_equal hash[:c], [3,4]
|
145
|
+
assert_equal hash["d"], "e"
|
146
|
+
|
147
|
+
v = @parser.parse("((a . 1) (b))")
|
148
|
+
assert_true v.alist?
|
149
|
+
v = @parser.parse("((a . 1) b)")
|
150
|
+
assert_false v.alist?
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
sub_test_case "Encoder" do
|
160
|
+
|
161
|
+
data({
|
162
|
+
"primitive and list" => [[1,1.2,-4,"xxx",:www,true,nil], "(1 1.2 -4 \"xxx\" www t nil)"],
|
163
|
+
"nested list" => [[1,[2,[3,4]]], "(1 (2 (3 4)))"],
|
164
|
+
"hash1" => [{"a" => "b", "c" => "d"}, "((\"a\" . \"b\") (\"c\" . \"d\"))"],
|
165
|
+
"hash2" => [{:a => [1,2,3], :b => {:c => [4,5,6]}}, "((a 1 2 3) (b (c 4 5 6)))"],
|
166
|
+
})
|
167
|
+
def test_encode(data)
|
168
|
+
src, expected = data
|
169
|
+
assert_equal(expected, Elparser.encode(src))
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elparser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SAKURAI Masashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: racc
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
20
|
-
type: :
|
19
|
+
version: '1.4'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.7'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: test-unit
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,8 +81,11 @@ files:
|
|
81
81
|
- Rakefile
|
82
82
|
- elparser.gemspec
|
83
83
|
- lib/elparser.rb
|
84
|
+
- lib/elparser/parser.tab.rb
|
85
|
+
- lib/elparser/parser.y
|
84
86
|
- lib/elparser/version.rb
|
85
87
|
- readme.html
|
88
|
+
- test/test-elparser.rb
|
86
89
|
homepage: https://github.com/kiwanami/ruby-elparser
|
87
90
|
licenses:
|
88
91
|
- MIT
|
@@ -107,4 +110,5 @@ rubygems_version: 2.4.3
|
|
107
110
|
signing_key:
|
108
111
|
specification_version: 4
|
109
112
|
summary: A parser for S-expression of emacs lisp
|
110
|
-
test_files:
|
113
|
+
test_files:
|
114
|
+
- test/test-elparser.rb
|