bel_parser 1.0.0.alpha.38 → 1.0.0.alpha.39
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gemspec +1 -1
- data/VERSION +1 -1
- data/lib/bel_parser/ast_filter.rb +6 -2
- data/lib/bel_parser/parsers/ast/node.rb +113 -58
- data/lib/bel_parser/parsers/bel_script/define_annotation.rb +4175 -3097
- data/lib/bel_parser/parsers/bel_script/define_annotation.rl +142 -49
- data/lib/bel_parser/parsers/bel_script/define_namespace.rb +980 -461
- data/lib/bel_parser/parsers/bel_script/define_namespace.rl +79 -39
- data/lib/bel_parser/parsers/bel_script/set.rb +4878 -2743
- data/lib/bel_parser/parsers/bel_script/set.rl +114 -32
- data/lib/bel_parser/parsers/bel_script/set_document.rb +5839 -5292
- data/lib/bel_parser/parsers/bel_script/set_document.rl +130 -27
- data/lib/bel_parser/parsers/bel_script/unset.rb +321 -234
- data/lib/bel_parser/parsers/bel_script/unset.rl +49 -21
- data/lib/bel_parser/parsers/common.rb +1 -0
- data/lib/bel_parser/parsers/common/blank_line.rb +12 -11
- data/lib/bel_parser/parsers/common/blank_line.rl +12 -12
- data/lib/bel_parser/parsers/common/comment_line.rb +65 -40
- data/lib/bel_parser/parsers/common/comment_line.rl +26 -26
- data/lib/bel_parser/parsers/common/common.rl +60 -0
- data/lib/bel_parser/parsers/common/function.rb +319 -0
- data/lib/bel_parser/parsers/common/function.rl +149 -0
- data/lib/bel_parser/parsers/common/identifier.rb +72 -68
- data/lib/bel_parser/parsers/common/identifier.rl +73 -29
- data/lib/bel_parser/parsers/common/list.rb +1617 -1243
- data/lib/bel_parser/parsers/common/list.rl +120 -60
- data/lib/bel_parser/parsers/common/string.rb +114 -41
- data/lib/bel_parser/parsers/common/string.rl +91 -28
- data/lib/bel_parser/parsers/expression/comment.rb +70 -38
- data/lib/bel_parser/parsers/expression/comment.rl +37 -20
- data/lib/bel_parser/parsers/expression/nested_statement.rb +63116 -13958
- data/lib/bel_parser/parsers/expression/nested_statement.rl +53 -23
- data/lib/bel_parser/parsers/expression/observed_term.rb +32497 -5188
- data/lib/bel_parser/parsers/expression/observed_term.rl +25 -20
- data/lib/bel_parser/parsers/expression/parameter.rb +2861 -847
- data/lib/bel_parser/parsers/expression/parameter.rl +178 -21
- data/lib/bel_parser/parsers/expression/relationship.rb +73 -55
- data/lib/bel_parser/parsers/expression/relationship.rl +41 -23
- data/lib/bel_parser/parsers/expression/simple_statement.rb +42895 -7846
- data/lib/bel_parser/parsers/expression/simple_statement.rl +41 -24
- data/lib/bel_parser/parsers/expression/term.rb +16498 -2602
- data/lib/bel_parser/parsers/expression/term.rl +52 -35
- data/lib/bel_parser/parsers/line_parser.rb +1 -0
- data/lib/bel_parser/parsers/mixin/buffer.rb +4 -0
- data/lib/bel_parser/parsers/tracer.rb +19 -0
- data/lib/bel_parser/script/state/namespace_definition.rb +1 -0
- metadata +13 -9
@@ -6,25 +6,50 @@
|
|
6
6
|
include 'common.rl';
|
7
7
|
include 'identifier.rl';
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@buffers[:
|
9
|
+
action add_name {
|
10
|
+
trace('UNSET add_name')
|
11
|
+
key = @buffers.delete(:ident)
|
12
|
+
@buffers[:unset_name] = key
|
13
13
|
}
|
14
14
|
|
15
|
-
action
|
16
|
-
|
15
|
+
action unset_end {
|
16
|
+
trace('UNSET unset_end')
|
17
|
+
name = @buffers.delete(:unset_name)
|
18
|
+
unless name.nil?
|
19
|
+
unset_node = unset(name, complete: name.complete)
|
20
|
+
else
|
21
|
+
unset_node = unset(complete: false)
|
22
|
+
end
|
23
|
+
@buffers[:unset] = unset_node
|
17
24
|
}
|
18
25
|
|
19
|
-
action
|
26
|
+
action yield_unset {
|
27
|
+
trace('UNSET yield_unset')
|
20
28
|
yield @buffers[:unset]
|
21
29
|
}
|
22
30
|
|
23
|
-
|
24
|
-
UNSET
|
31
|
+
action set_node_eof {
|
32
|
+
trace('UNSET set_node_eof')
|
33
|
+
}
|
34
|
+
|
35
|
+
an_unset =
|
36
|
+
KW_UNSET
|
25
37
|
SP+
|
26
|
-
|
27
|
-
|
38
|
+
an_ident
|
39
|
+
%add_name
|
40
|
+
@eof(set_node_eof)
|
41
|
+
%unset_end
|
42
|
+
;
|
43
|
+
|
44
|
+
unset_ast_node :=
|
45
|
+
KW_UNSET
|
46
|
+
SP+?
|
47
|
+
an_ident?
|
48
|
+
%add_name
|
49
|
+
@eof(set_node_eof)
|
50
|
+
%unset_end
|
51
|
+
%yield_unset
|
52
|
+
;
|
28
53
|
}%%
|
29
54
|
=end
|
30
55
|
# end: ragel
|
@@ -32,6 +57,7 @@
|
|
32
57
|
require_relative '../ast/node'
|
33
58
|
require_relative '../mixin/buffer'
|
34
59
|
require_relative '../nonblocking_io_wrapper'
|
60
|
+
require_relative '../tracer'
|
35
61
|
|
36
62
|
module BELParser
|
37
63
|
module Parsers
|
@@ -57,25 +83,27 @@ module BELParser
|
|
57
83
|
include Enumerable
|
58
84
|
include BELParser::Parsers::Buffer
|
59
85
|
include BELParser::Parsers::AST::Sexp
|
86
|
+
include BELParser::Parsers::Tracer
|
60
87
|
|
61
88
|
def initialize(content)
|
62
89
|
@content = content
|
63
|
-
# begin: ragel
|
90
|
+
# begin: ragel
|
64
91
|
%% write data;
|
65
|
-
# end: ragel
|
92
|
+
# end: ragel
|
66
93
|
end
|
67
94
|
|
68
95
|
def each
|
69
|
-
@buffers
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
96
|
+
@buffers = {}
|
97
|
+
@incomplete = {}
|
98
|
+
data = @content.unpack('C*')
|
99
|
+
p = 0
|
100
|
+
pe = data.length
|
101
|
+
eof = data.length
|
102
|
+
|
103
|
+
# begin: ragel
|
76
104
|
%% write init;
|
77
105
|
%% write exec;
|
78
|
-
# end: ragel
|
106
|
+
# end: ragel
|
79
107
|
end
|
80
108
|
end
|
81
109
|
end
|
@@ -37,7 +37,7 @@ module BELParser
|
|
37
37
|
|
38
38
|
def initialize(content)
|
39
39
|
@content = content
|
40
|
-
# begin: ragel
|
40
|
+
# begin: ragel
|
41
41
|
|
42
42
|
class << self
|
43
43
|
attr_accessor :_bel_trans_keys
|
@@ -98,28 +98,29 @@ self.bel_start = 1;
|
|
98
98
|
class << self
|
99
99
|
attr_accessor :bel_first_final
|
100
100
|
end
|
101
|
-
self.bel_first_final =
|
101
|
+
self.bel_first_final = 1;
|
102
102
|
class << self
|
103
103
|
attr_accessor :bel_error
|
104
104
|
end
|
105
105
|
self.bel_error = 0;
|
106
106
|
|
107
107
|
class << self
|
108
|
-
attr_accessor :
|
108
|
+
attr_accessor :bel_en_bl_ast
|
109
109
|
end
|
110
|
-
self.
|
110
|
+
self.bel_en_bl_ast = 1;
|
111
111
|
|
112
112
|
|
113
|
-
# end: ragel
|
113
|
+
# end: ragel
|
114
114
|
end
|
115
115
|
|
116
116
|
def each
|
117
|
-
@buffers
|
118
|
-
|
119
|
-
|
120
|
-
|
117
|
+
@buffers = {}
|
118
|
+
@incomplete = {}
|
119
|
+
data = @content.unpack('C*')
|
120
|
+
p = 0
|
121
|
+
pe = data.length
|
121
122
|
|
122
|
-
# begin: ragel
|
123
|
+
# begin: ragel
|
123
124
|
|
124
125
|
begin
|
125
126
|
p ||= 0
|
@@ -191,7 +192,7 @@ begin
|
|
191
192
|
end
|
192
193
|
end
|
193
194
|
|
194
|
-
# end: ragel
|
195
|
+
# end: ragel
|
195
196
|
end
|
196
197
|
end
|
197
198
|
end
|
@@ -5,13 +5,12 @@
|
|
5
5
|
|
6
6
|
include 'common.rl';
|
7
7
|
|
8
|
-
action
|
8
|
+
action blank_line_yield {
|
9
9
|
yield blank_line
|
10
10
|
}
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
blank := BLANK %yield_blank_line NL;
|
12
|
+
blank = SP*;
|
13
|
+
bl_ast := blank NL? @blank_line_yield;
|
15
14
|
}%%
|
16
15
|
=end
|
17
16
|
# end: ragel
|
@@ -47,21 +46,22 @@ module BELParser
|
|
47
46
|
|
48
47
|
def initialize(content)
|
49
48
|
@content = content
|
50
|
-
# begin: ragel
|
49
|
+
# begin: ragel
|
51
50
|
%% write data;
|
52
|
-
# end: ragel
|
51
|
+
# end: ragel
|
53
52
|
end
|
54
53
|
|
55
54
|
def each
|
56
|
-
@buffers
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
@buffers = {}
|
56
|
+
@incomplete = {}
|
57
|
+
data = @content.unpack('C*')
|
58
|
+
p = 0
|
59
|
+
pe = data.length
|
60
60
|
|
61
|
-
# begin: ragel
|
61
|
+
# begin: ragel
|
62
62
|
%% write init;
|
63
63
|
%% write exec;
|
64
|
-
# end: ragel
|
64
|
+
# end: ragel
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -37,15 +37,16 @@ module BELParser
|
|
37
37
|
|
38
38
|
def initialize(content)
|
39
39
|
@content = content
|
40
|
-
# begin: ragel
|
40
|
+
# begin: ragel
|
41
41
|
|
42
42
|
class << self
|
43
43
|
attr_accessor :_bel_trans_keys
|
44
44
|
private :_bel_trans_keys, :_bel_trans_keys=
|
45
45
|
end
|
46
46
|
self._bel_trans_keys = [
|
47
|
-
0, 0, 9, 35,
|
48
|
-
|
47
|
+
0, 0, 9, 35, 9, 35,
|
48
|
+
9, 32, 10, 10, 0,
|
49
|
+
0, 0
|
49
50
|
]
|
50
51
|
|
51
52
|
class << self
|
@@ -53,7 +54,7 @@ class << self
|
|
53
54
|
private :_bel_key_spans, :_bel_key_spans=
|
54
55
|
end
|
55
56
|
self._bel_key_spans = [
|
56
|
-
0, 27,
|
57
|
+
0, 27, 27, 24, 1, 0
|
57
58
|
]
|
58
59
|
|
59
60
|
class << self
|
@@ -61,7 +62,7 @@ class << self
|
|
61
62
|
private :_bel_index_offsets, :_bel_index_offsets=
|
62
63
|
end
|
63
64
|
self._bel_index_offsets = [
|
64
|
-
0, 0, 28,
|
65
|
+
0, 0, 28, 56, 81, 83
|
65
66
|
]
|
66
67
|
|
67
68
|
class << self
|
@@ -72,8 +73,14 @@ self._bel_indicies = [
|
|
72
73
|
0, 1, 1, 1, 1, 1, 1, 1,
|
73
74
|
1, 1, 1, 1, 1, 1, 1, 1,
|
74
75
|
1, 1, 1, 1, 1, 1, 1, 0,
|
75
|
-
1, 1, 2, 1,
|
76
|
-
1,
|
76
|
+
1, 1, 2, 1, 0, 3, 1, 1,
|
77
|
+
1, 1, 1, 1, 1, 1, 1, 1,
|
78
|
+
1, 1, 1, 1, 1, 1, 1, 1,
|
79
|
+
1, 1, 1, 0, 1, 1, 2, 1,
|
80
|
+
5, 6, 4, 4, 4, 4, 4, 4,
|
81
|
+
4, 4, 4, 4, 4, 4, 4, 4,
|
82
|
+
4, 4, 4, 4, 4, 4, 4, 5,
|
83
|
+
4, 3, 7, 1, 0
|
77
84
|
]
|
78
85
|
|
79
86
|
class << self
|
@@ -81,7 +88,7 @@ class << self
|
|
81
88
|
private :_bel_trans_targs, :_bel_trans_targs=
|
82
89
|
end
|
83
90
|
self._bel_trans_targs = [
|
84
|
-
1, 0,
|
91
|
+
1, 0, 3, 5, 4, 3, 5, 4
|
85
92
|
]
|
86
93
|
|
87
94
|
class << self
|
@@ -89,38 +96,49 @@ class << self
|
|
89
96
|
private :_bel_trans_actions, :_bel_trans_actions=
|
90
97
|
end
|
91
98
|
self._bel_trans_actions = [
|
92
|
-
0, 0, 0, 1,
|
99
|
+
0, 0, 0, 1, 3, 3, 4, 5
|
100
|
+
]
|
101
|
+
|
102
|
+
class << self
|
103
|
+
attr_accessor :_bel_eof_actions
|
104
|
+
private :_bel_eof_actions, :_bel_eof_actions=
|
105
|
+
end
|
106
|
+
self._bel_eof_actions = [
|
107
|
+
0, 0, 0, 2, 0, 0
|
93
108
|
]
|
94
109
|
|
95
110
|
class << self
|
96
111
|
attr_accessor :bel_start
|
97
112
|
end
|
98
|
-
self.bel_start =
|
113
|
+
self.bel_start = 2;
|
99
114
|
class << self
|
100
115
|
attr_accessor :bel_first_final
|
101
116
|
end
|
102
|
-
self.bel_first_final =
|
117
|
+
self.bel_first_final = 2;
|
103
118
|
class << self
|
104
119
|
attr_accessor :bel_error
|
105
120
|
end
|
106
121
|
self.bel_error = 0;
|
107
122
|
|
108
123
|
class << self
|
109
|
-
attr_accessor :
|
124
|
+
attr_accessor :bel_en_main
|
110
125
|
end
|
111
|
-
self.
|
126
|
+
self.bel_en_main = 2;
|
112
127
|
|
113
128
|
|
114
|
-
# end: ragel
|
129
|
+
# end: ragel
|
115
130
|
end
|
116
131
|
|
117
132
|
def each
|
118
|
-
@buffers
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
133
|
+
@buffers = {}
|
134
|
+
@started = false
|
135
|
+
@incomplete = {}
|
136
|
+
data = @content.unpack('C*')
|
137
|
+
p = 0
|
138
|
+
pe = data.length
|
139
|
+
eof = data.length
|
140
|
+
|
141
|
+
# begin: ragel
|
124
142
|
|
125
143
|
begin
|
126
144
|
p ||= 0
|
@@ -165,43 +183,39 @@ begin
|
|
165
183
|
cs = _bel_trans_targs[_trans]
|
166
184
|
if _bel_trans_actions[_trans] != 0
|
167
185
|
case _bel_trans_actions[_trans]
|
168
|
-
when
|
186
|
+
when 5 then
|
169
187
|
begin
|
170
188
|
|
171
|
-
@
|
189
|
+
@incomplete[:comment_line] << data[p].ord
|
172
190
|
end
|
173
191
|
when 1 then
|
174
192
|
begin
|
175
193
|
|
176
|
-
@
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
@buffers[:comment_line] << data[p].ord
|
181
|
-
end
|
182
|
-
when 4 then
|
183
|
-
begin
|
184
|
-
|
185
|
-
@buffers[:comment_line] = comment_line(
|
186
|
-
utf8_string(@buffers[:comment_line]))
|
194
|
+
cl = @incomplete.delete(:comment_line) || []
|
195
|
+
completed = @started
|
196
|
+
yield comment_line(utf8_string(cl), complete: completed)
|
187
197
|
end
|
198
|
+
when 3 then
|
188
199
|
begin
|
189
200
|
|
190
|
-
|
201
|
+
@incomplete[:comment_line] = []
|
202
|
+
@started = true
|
191
203
|
end
|
192
|
-
when 2 then
|
193
204
|
begin
|
194
205
|
|
195
|
-
@
|
206
|
+
@incomplete[:comment_line] << data[p].ord
|
196
207
|
end
|
208
|
+
when 4 then
|
197
209
|
begin
|
198
210
|
|
199
|
-
@
|
200
|
-
|
211
|
+
@incomplete[:comment_line] = []
|
212
|
+
@started = true
|
201
213
|
end
|
202
214
|
begin
|
203
215
|
|
204
|
-
|
216
|
+
cl = @incomplete.delete(:comment_line) || []
|
217
|
+
completed = @started
|
218
|
+
yield comment_line(utf8_string(cl), complete: completed)
|
205
219
|
end
|
206
220
|
end
|
207
221
|
end
|
@@ -218,6 +232,17 @@ begin
|
|
218
232
|
end
|
219
233
|
end
|
220
234
|
if _goto_level <= _test_eof
|
235
|
+
if p == eof
|
236
|
+
case _bel_eof_actions[cs]
|
237
|
+
when 2 then
|
238
|
+
begin
|
239
|
+
|
240
|
+
@incomplete[:comment_line] = []
|
241
|
+
@started = true
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
221
246
|
end
|
222
247
|
if _goto_level <= _out
|
223
248
|
break
|
@@ -225,7 +250,7 @@ begin
|
|
225
250
|
end
|
226
251
|
end
|
227
252
|
|
228
|
-
# end: ragel
|
253
|
+
# end: ragel
|
229
254
|
end
|
230
255
|
end
|
231
256
|
end
|
@@ -5,29 +5,26 @@
|
|
5
5
|
|
6
6
|
include 'common.rl';
|
7
7
|
|
8
|
-
action
|
9
|
-
@
|
8
|
+
action comment_line_start {
|
9
|
+
@incomplete[:comment_line] = []
|
10
|
+
@started = true
|
10
11
|
}
|
11
12
|
|
12
|
-
action
|
13
|
-
@
|
13
|
+
action comment_line_more {
|
14
|
+
@incomplete[:comment_line] << fc
|
14
15
|
}
|
15
16
|
|
16
|
-
action
|
17
|
-
@
|
18
|
-
|
17
|
+
action comment_line_yield {
|
18
|
+
cl = @incomplete.delete(:comment_line) || []
|
19
|
+
completed = @started
|
20
|
+
yield comment_line(utf8_string(cl), complete: completed)
|
19
21
|
}
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
SP*
|
27
|
-
NUMBER_SIGN
|
28
|
-
(any - NL)* >start_comment_line $append_comment_line %finish_comment_line;
|
29
|
-
|
30
|
-
comment_line := COMMENT_LINE %yield_comment_line NL;
|
23
|
+
comment_start = SP* NUMBER_SIGN SP*;
|
24
|
+
comment = comment_start (any - NL)*
|
25
|
+
>comment_line_start
|
26
|
+
$comment_line_more;
|
27
|
+
main := comment? NL? @comment_line_yield;
|
31
28
|
}%%
|
32
29
|
=end
|
33
30
|
# end: ragel
|
@@ -63,21 +60,24 @@ module BELParser
|
|
63
60
|
|
64
61
|
def initialize(content)
|
65
62
|
@content = content
|
66
|
-
# begin: ragel
|
63
|
+
# begin: ragel
|
67
64
|
%% write data;
|
68
|
-
# end: ragel
|
65
|
+
# end: ragel
|
69
66
|
end
|
70
67
|
|
71
68
|
def each
|
72
|
-
@buffers
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
69
|
+
@buffers = {}
|
70
|
+
@started = false
|
71
|
+
@incomplete = {}
|
72
|
+
data = @content.unpack('C*')
|
73
|
+
p = 0
|
74
|
+
pe = data.length
|
75
|
+
eof = data.length
|
76
|
+
|
77
|
+
# begin: ragel
|
78
78
|
%% write init;
|
79
79
|
%% write exec;
|
80
|
-
# end: ragel
|
80
|
+
# end: ragel
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|