bel_parser 1.0.0.alpha.38 → 1.0.0.alpha.39
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/.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
|
@@ -3,89 +3,104 @@
|
|
|
3
3
|
%%{
|
|
4
4
|
machine bel;
|
|
5
5
|
|
|
6
|
+
include 'function.rl';
|
|
6
7
|
include 'parameter.rl';
|
|
7
8
|
|
|
8
|
-
action start_function {
|
|
9
|
-
@buffers[:function] = []
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
action append_function {
|
|
13
|
-
@buffers[:function] << fc
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
action finish_function {
|
|
17
|
-
@buffers[:function] = identifier(utf8_string(@buffers[:function]))
|
|
18
|
-
}
|
|
19
|
-
|
|
20
9
|
action term_init {
|
|
10
|
+
trace('TERM term_init')
|
|
21
11
|
@buffers[:term_stack] = [ term() ]
|
|
22
12
|
}
|
|
23
13
|
|
|
24
14
|
action inner_term_init {
|
|
15
|
+
trace('TERM inner_term_init')
|
|
25
16
|
@buffers[:term_stack] << term()
|
|
26
17
|
}
|
|
27
18
|
|
|
28
19
|
action term_fx {
|
|
29
|
-
|
|
30
|
-
@buffers[:term_stack][-1]
|
|
20
|
+
trace('TERM term_fx')
|
|
21
|
+
new_term = @buffers[:term_stack][-1] << @buffers[:function]
|
|
22
|
+
@buffers[:term_stack][-1] = new_term
|
|
31
23
|
}
|
|
32
24
|
|
|
33
25
|
action term_argument {
|
|
34
|
-
|
|
35
|
-
@buffers[:parameter]
|
|
26
|
+
trace('TERM term_argument')
|
|
27
|
+
arg_node = argument(@buffers[:parameter])
|
|
28
|
+
new_term = @buffers[:term_stack][-1] << arg_node
|
|
29
|
+
@buffers[:term_stack][-1] = new_term
|
|
30
|
+
@buffers[:parameter] = nil
|
|
36
31
|
}
|
|
37
32
|
|
|
38
33
|
action fxbt {
|
|
39
|
-
|
|
34
|
+
trace('TERM fxbt')
|
|
35
|
+
function_string = @buffers[:function].identifier.string_literal
|
|
36
|
+
fpc -= function_string.length + 1
|
|
40
37
|
fcall inner_term;
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
action fxret {
|
|
41
|
+
trace('TERM fxret')
|
|
44
42
|
inner_term = @buffers[:term_stack].pop
|
|
45
|
-
|
|
43
|
+
arg_node = argument(inner_term)
|
|
44
|
+
new_term = @buffers[:term_stack][-1] << arg_node
|
|
45
|
+
@buffers[:term_stack][-1] = new_term
|
|
46
46
|
fret;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
action outer_term_end {
|
|
50
|
+
trace('TERM outer_term_end')
|
|
51
|
+
term_stack = @buffers[:term_stack]
|
|
52
|
+
term_stack.each { |term| term.complete = true }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
action eof_parameter_argument {
|
|
56
|
+
trace('TERM eof_parameter_argument')
|
|
57
|
+
@buffers[:term_stack][-1].complete = false
|
|
58
|
+
yield @buffers[:term_stack][-1]
|
|
59
|
+
}
|
|
60
|
+
|
|
49
61
|
action yield_term_ast {
|
|
50
62
|
yield @buffers[:term_stack][-1]
|
|
51
63
|
}
|
|
52
64
|
|
|
53
65
|
inner_term :=
|
|
54
|
-
|
|
66
|
+
a_function >inner_term_init
|
|
55
67
|
SP*
|
|
56
68
|
'(' @term_fx
|
|
57
69
|
(
|
|
58
|
-
|
|
59
|
-
|
|
70
|
+
a_parameter %term_argument |
|
|
71
|
+
a_function '(' @fxbt
|
|
60
72
|
)
|
|
61
73
|
(
|
|
62
|
-
|
|
74
|
+
COMMA_DELIM
|
|
63
75
|
(
|
|
64
|
-
|
|
65
|
-
|
|
76
|
+
a_parameter %term_argument |
|
|
77
|
+
a_function '(' @fxbt
|
|
66
78
|
)
|
|
67
79
|
)*
|
|
68
80
|
')' @fxret;
|
|
69
81
|
|
|
70
82
|
outer_term =
|
|
71
|
-
|
|
83
|
+
a_function >term_init
|
|
72
84
|
SP*
|
|
73
85
|
'(' @term_fx
|
|
74
86
|
(
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
a_parameter %term_argument $eof(eof_parameter_argument) |
|
|
88
|
+
a_function '(' @fxbt
|
|
77
89
|
)
|
|
78
90
|
(
|
|
79
|
-
|
|
91
|
+
COMMA_DELIM
|
|
80
92
|
(
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
a_parameter %term_argument $eof(eof_parameter_argument) |
|
|
94
|
+
a_function '(' @fxbt
|
|
83
95
|
)
|
|
84
96
|
)*
|
|
85
97
|
')';
|
|
86
98
|
|
|
87
99
|
term :=
|
|
88
|
-
outer_term
|
|
100
|
+
outer_term
|
|
101
|
+
%outer_term_end
|
|
102
|
+
%yield_term_ast
|
|
103
|
+
NL?;
|
|
89
104
|
}%%
|
|
90
105
|
=end
|
|
91
106
|
# end: ragel
|
|
@@ -93,6 +108,7 @@
|
|
|
93
108
|
require_relative '../ast/node'
|
|
94
109
|
require_relative '../mixin/buffer'
|
|
95
110
|
require_relative '../nonblocking_io_wrapper'
|
|
111
|
+
require_relative '../tracer'
|
|
96
112
|
|
|
97
113
|
module BELParser
|
|
98
114
|
module Parsers
|
|
@@ -118,12 +134,13 @@ module BELParser
|
|
|
118
134
|
include Enumerable
|
|
119
135
|
include BELParser::Parsers::Buffer
|
|
120
136
|
include BELParser::Parsers::AST::Sexp
|
|
137
|
+
include BELParser::Parsers::Tracer
|
|
121
138
|
|
|
122
139
|
def initialize(content)
|
|
123
140
|
@content = content
|
|
124
|
-
# begin: ragel
|
|
141
|
+
# begin: ragel
|
|
125
142
|
%% write data;
|
|
126
|
-
# end: ragel
|
|
143
|
+
# end: ragel
|
|
127
144
|
end
|
|
128
145
|
|
|
129
146
|
def each
|
|
@@ -134,10 +151,10 @@ module BELParser
|
|
|
134
151
|
pe = data.length
|
|
135
152
|
eof = data.length
|
|
136
153
|
|
|
137
|
-
# begin: ragel
|
|
154
|
+
# begin: ragel
|
|
138
155
|
%% write init;
|
|
139
156
|
%% write exec;
|
|
140
|
-
# end: ragel
|
|
157
|
+
# end: ragel
|
|
141
158
|
end
|
|
142
159
|
end
|
|
143
160
|
end
|
|
@@ -14,6 +14,7 @@ module LINE
|
|
|
14
14
|
BELParser::Parsers::Common::Identifier,
|
|
15
15
|
BELParser::Parsers::Common::String,
|
|
16
16
|
BELParser::Parsers::Common::List,
|
|
17
|
+
BELParser::Parsers::Common::Function,
|
|
17
18
|
BELParser::Parsers::Expression::Parameter,
|
|
18
19
|
BELParser::Parsers::Expression::Term,
|
|
19
20
|
BELParser::Parsers::Expression::Relationship,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module BELParser
|
|
2
|
+
module Parsers
|
|
3
|
+
# Tracer provides a facility to trace ragel finite state machines.
|
|
4
|
+
# Tracing is enabled with using +$DEBUG+ or the environment variable
|
|
5
|
+
# +BELPARSER_PARSER_TRACE+
|
|
6
|
+
module Tracer
|
|
7
|
+
# Defines trace on require based on environment.
|
|
8
|
+
if $DEBUG || (ENV['BELPARSER_PARSER_TRACE'] =~ /^(1|yes|on|true)$/)
|
|
9
|
+
def trace(msg)
|
|
10
|
+
$stderr.puts msg
|
|
11
|
+
end
|
|
12
|
+
else
|
|
13
|
+
def trace(_)
|
|
14
|
+
# no-operation
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -18,6 +18,7 @@ module BELParser
|
|
|
18
18
|
resource_reader = script_context[:resource_reader]
|
|
19
19
|
|
|
20
20
|
keyword, domain = ast_node.children
|
|
21
|
+
require 'pry'; binding.pry unless domain
|
|
21
22
|
if domain.url?
|
|
22
23
|
prefix = keyword.identifier.string_literal
|
|
23
24
|
url = unquote(domain.child.string.string_literal)
|
metadata
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bel_parser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.0.alpha.
|
|
4
|
+
version: 1.0.0.alpha.39
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Anthony Bargnesi
|
|
8
8
|
- Nick Bargnesi
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2016-05-
|
|
12
|
+
date: 2016-05-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: sparql-client
|
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
|
16
17
|
requirements:
|
|
17
18
|
- - "~>"
|
|
18
19
|
- !ruby/object:Gem::Version
|
|
19
20
|
version: 2.0.0
|
|
20
|
-
name: sparql-client
|
|
21
|
-
prerelease: false
|
|
22
21
|
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
@@ -303,6 +303,8 @@ files:
|
|
|
303
303
|
- lib/bel_parser/parsers/common/comment_line.rl
|
|
304
304
|
- lib/bel_parser/parsers/common/common.rb
|
|
305
305
|
- lib/bel_parser/parsers/common/common.rl
|
|
306
|
+
- lib/bel_parser/parsers/common/function.rb
|
|
307
|
+
- lib/bel_parser/parsers/common/function.rl
|
|
306
308
|
- lib/bel_parser/parsers/common/identifier.rb
|
|
307
309
|
- lib/bel_parser/parsers/common/identifier.rl
|
|
308
310
|
- lib/bel_parser/parsers/common/list.rb
|
|
@@ -328,6 +330,7 @@ files:
|
|
|
328
330
|
- lib/bel_parser/parsers/mixin/buffer.rb
|
|
329
331
|
- lib/bel_parser/parsers/nonblocking_io_wrapper.rb
|
|
330
332
|
- lib/bel_parser/parsers/serializer.rb
|
|
333
|
+
- lib/bel_parser/parsers/tracer.rb
|
|
331
334
|
- lib/bel_parser/quoting.rb
|
|
332
335
|
- lib/bel_parser/resource.rb
|
|
333
336
|
- lib/bel_parser/resource/concept.rb
|
|
@@ -374,7 +377,7 @@ homepage: https://github.com/OpenBEL/bel_parser
|
|
|
374
377
|
licenses:
|
|
375
378
|
- Apache-2.0
|
|
376
379
|
metadata: {}
|
|
377
|
-
post_install_message:
|
|
380
|
+
post_install_message:
|
|
378
381
|
rdoc_options: []
|
|
379
382
|
require_paths:
|
|
380
383
|
- lib
|
|
@@ -389,9 +392,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
389
392
|
- !ruby/object:Gem::Version
|
|
390
393
|
version: 1.3.1
|
|
391
394
|
requirements: []
|
|
392
|
-
rubyforge_project:
|
|
393
|
-
rubygems_version: 2.
|
|
394
|
-
signing_key:
|
|
395
|
+
rubyforge_project:
|
|
396
|
+
rubygems_version: 2.5.1
|
|
397
|
+
signing_key:
|
|
395
398
|
specification_version: 4
|
|
396
399
|
summary: Parser for Biolgical Expression Language.
|
|
397
400
|
test_files: []
|
|
401
|
+
has_rdoc:
|