bel_parser 1.0.0.alpha.38-java → 1.0.0.alpha.39-java

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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/bel_parser/ast_filter.rb +6 -2
  4. data/lib/bel_parser/parsers/ast/node.rb +113 -58
  5. data/lib/bel_parser/parsers/bel_script/define_annotation.rb +4175 -3097
  6. data/lib/bel_parser/parsers/bel_script/define_annotation.rl +142 -49
  7. data/lib/bel_parser/parsers/bel_script/define_namespace.rb +980 -461
  8. data/lib/bel_parser/parsers/bel_script/define_namespace.rl +79 -39
  9. data/lib/bel_parser/parsers/bel_script/set.rb +4878 -2743
  10. data/lib/bel_parser/parsers/bel_script/set.rl +114 -32
  11. data/lib/bel_parser/parsers/bel_script/set_document.rb +5839 -5292
  12. data/lib/bel_parser/parsers/bel_script/set_document.rl +130 -27
  13. data/lib/bel_parser/parsers/bel_script/unset.rb +321 -234
  14. data/lib/bel_parser/parsers/bel_script/unset.rl +49 -21
  15. data/lib/bel_parser/parsers/common/blank_line.rb +12 -11
  16. data/lib/bel_parser/parsers/common/blank_line.rl +12 -12
  17. data/lib/bel_parser/parsers/common/comment_line.rb +65 -40
  18. data/lib/bel_parser/parsers/common/comment_line.rl +26 -26
  19. data/lib/bel_parser/parsers/common/common.rl +60 -0
  20. data/lib/bel_parser/parsers/common/function.rb +319 -0
  21. data/lib/bel_parser/parsers/common/function.rl +149 -0
  22. data/lib/bel_parser/parsers/common/identifier.rb +72 -68
  23. data/lib/bel_parser/parsers/common/identifier.rl +73 -29
  24. data/lib/bel_parser/parsers/common/list.rb +1617 -1243
  25. data/lib/bel_parser/parsers/common/list.rl +120 -60
  26. data/lib/bel_parser/parsers/common/string.rb +114 -41
  27. data/lib/bel_parser/parsers/common/string.rl +91 -28
  28. data/lib/bel_parser/parsers/common.rb +1 -0
  29. data/lib/bel_parser/parsers/expression/comment.rb +70 -38
  30. data/lib/bel_parser/parsers/expression/comment.rl +37 -20
  31. data/lib/bel_parser/parsers/expression/nested_statement.rb +63116 -13958
  32. data/lib/bel_parser/parsers/expression/nested_statement.rl +53 -23
  33. data/lib/bel_parser/parsers/expression/observed_term.rb +32497 -5188
  34. data/lib/bel_parser/parsers/expression/observed_term.rl +25 -20
  35. data/lib/bel_parser/parsers/expression/parameter.rb +2861 -847
  36. data/lib/bel_parser/parsers/expression/parameter.rl +178 -21
  37. data/lib/bel_parser/parsers/expression/relationship.rb +73 -55
  38. data/lib/bel_parser/parsers/expression/relationship.rl +41 -23
  39. data/lib/bel_parser/parsers/expression/simple_statement.rb +42895 -7846
  40. data/lib/bel_parser/parsers/expression/simple_statement.rl +41 -24
  41. data/lib/bel_parser/parsers/expression/term.rb +16498 -2602
  42. data/lib/bel_parser/parsers/expression/term.rl +52 -35
  43. data/lib/bel_parser/parsers/line_parser.rb +1 -0
  44. data/lib/bel_parser/parsers/mixin/buffer.rb +4 -0
  45. data/lib/bel_parser/parsers/tracer.rb +19 -0
  46. data/lib/bel_parser/script/state/namespace_definition.rb +1 -0
  47. metadata +10 -7
@@ -8,69 +8,156 @@
8
8
  include 'string.rl';
9
9
  include 'list.rl';
10
10
 
11
- DEFINE_KW = [dD][eE][fF][iI][nN][eE];
12
- ANNOTATION_KW = [aA][nN][nN][oO][tT][aA][tT][iI][oO][nN];
13
- AS_KW = [aA][sS];
14
- LIST_KW = [lL][iI][sS][tT];
15
- PATTERN_KW = [pP][aA][tT][tT][eE][rR][nN];
16
- URL_KW = [uU][rR][lL];
17
-
18
- action annotation_keyword {
19
- @buffers[:annotation_definition] = annotation_definition()
11
+ action add_name {
12
+ trace('DEFINE_ANNOTATION add_name')
13
+ name = @buffers.delete(:ident)
14
+ @buffers[:annotation_definition_name] = name
20
15
  }
21
16
 
22
- action keyword {
23
- @buffers[:annotation_definition] = annotation_definition(
24
- keyword(@buffers[:ident]))
17
+ action add_string_value {
18
+ trace('DEFINE_ANNOTATION add_string_value')
19
+ string_node = @buffers.delete(:string)
20
+ if @url_domain
21
+ leaf = domain(url(string_node))
22
+ leaf.complete = string_node.complete
23
+ elsif @pattern_domain
24
+ leaf = domain(pattern(string_node))
25
+ leaf.complete = string_node.complete
26
+ else
27
+ leaf = domain(string_node)
28
+ # defined as list, given string
29
+ leaf.complete = false
30
+ end
31
+ @buffers[:annotation_definition_domain] = leaf
25
32
  }
26
33
 
27
- action list_keyword {
28
- @buffers[:annotation_definition] = @buffers[:annotation_definition] << domain()
34
+ action add_list_value {
35
+ trace('DEFINE_ANNOTATION add_list_value')
36
+ list_node = @buffers.delete(:list)
37
+ if @url_domain
38
+ leaf = domain(url(list_node))
39
+ # defined as url, given list
40
+ leaf.completed = false
41
+ elsif @pattern_domain
42
+ leaf = domain(pattern(list_node))
43
+ # defined as url, given pattern
44
+ leaf.complete = false
45
+ else
46
+ leaf = domain(list_node)
47
+ leaf.complete = list_node.complete
48
+ end
49
+ @buffers[:annotation_definition_domain] = leaf
29
50
  }
30
51
 
31
- action pattern_keyword {
32
- @buffers[:annotation_definition] = @buffers[:annotation_definition] << domain(pattern())
52
+ action add_list_domain {
53
+ trace('DEFINE_ANNOTATION add_list_domain')
54
+ @list_domain = true
33
55
  }
34
56
 
35
- action url_keyword {
36
- @buffers[:annotation_definition] = @buffers[:annotation_definition] << domain(url())
57
+ action add_url_domain {
58
+ trace('DEFINE_ANNOTATION add_url_domain')
59
+ @url_domain = true
37
60
  }
38
61
 
39
- action pattern {
40
- keyword, domain = @buffers[:annotation_definition].children
41
- domain = domain(
42
- domain.children[0] << @buffers[:string])
43
- @buffers[:annotation_definition] = annotation_definition(keyword, domain)
62
+ action add_pattern_domain {
63
+ trace('DEFINE_ANNOTATION add_pattern_domain')
64
+ @pattern_domain = true
44
65
  }
45
66
 
46
- action url {
47
- keyword, domain = @buffers[:annotation_definition].children
48
- domain = domain(
49
- domain.children[0] << @buffers[:string])
50
- @buffers[:annotation_definition] = annotation_definition(keyword, domain)
67
+ action define_annotation_end {
68
+ trace('DEFINE_ANNOTATION define_annotation_end')
69
+ annotation_definition_node = annotation_definition()
70
+ domain = @buffers.delete(:annotation_definition_domain)
71
+ unless domain.nil?
72
+ annotation_definition_node <<= domain
73
+ annotation_definition_node.complete = domain.complete
74
+ end
75
+ @buffers[:annotation_definition] = annotation_definition_node
51
76
  }
52
77
 
53
- action list {
54
- keyword, domain = @buffers[:annotation_definition].children
55
- domain = domain(
56
- @buffers[:list])
57
- @buffers[:annotation_definition] = annotation_definition(keyword, domain)
78
+ action yield_define_annotation {
79
+ trace('DEFINE_ANNOTATION yield_define_annotation')
80
+ yield @buffers[:annotation_definition]
58
81
  }
59
82
 
60
- action yield_annotation_definition {
61
- yield @buffers[:annotation_definition]
83
+ action define_annotation_node_eof {
84
+ trace('DEFINE_ANNOTATION define_annotation_node_eof')
85
+ annotation_definition_node = annotation_definition()
86
+ if @url_domain
87
+ domain_node = domain(url())
88
+ elsif @pattern_domain
89
+ domain_node = domain(pattern())
90
+ else
91
+ domain_node = domain()
92
+ end
93
+
94
+ domain_node.complete = false
95
+ list_node = @buffers.delete(:list)
96
+ unless list_node.nil?
97
+ domain_node <<= list_node
98
+ domain_node.complete = list_node.complete
99
+ end
100
+ string_node = @buffers.delete(:string)
101
+ unless string_node.nil?
102
+ domain_node <<= string_node
103
+ domain_node.complete = string_node.complete
104
+ end
105
+ annotation_definition_node <<= domain_node
106
+ annotation_definition_node.complete = domain_node.complete
107
+ yield annotation_definition_node
62
108
  }
63
109
 
64
- # Define FSM
65
- annotation_definition :=
66
- DEFINE_KW SP+ ANNOTATION_KW @annotation_keyword SP+
67
- IDENT %keyword SP+
68
- AS_KW SP+
69
- (
70
- (LIST_KW %list_keyword SP+ LIST %list SP* NL @yield_annotation_definition) |
71
- (PATTERN_KW %pattern_keyword SP+ STRING %pattern SP* NL @yield_annotation_definition) |
72
- (URL_KW %url_keyword SP+ STRING %url SP* NL @yield_annotation_definition)
73
- );
110
+ string_value =
111
+ a_string
112
+ %add_string_value
113
+ ;
114
+
115
+ list_value =
116
+ a_list
117
+ %add_list_value
118
+ ;
119
+
120
+ value =
121
+ string_value |
122
+ list_value
123
+ ;
124
+
125
+ list_domain =
126
+ KW_LIST
127
+ %add_list_domain
128
+ ;
129
+
130
+ url_domain =
131
+ KW_URL
132
+ %add_url_domain
133
+ ;
134
+
135
+ pattern_domain =
136
+ KW_PATTERN
137
+ %add_pattern_domain
138
+ ;
139
+
140
+ domain =
141
+ list_domain |
142
+ url_domain |
143
+ pattern_domain
144
+ ;
145
+
146
+ define_annotation_node :=
147
+ DEFINE_ANNOTATION
148
+ SP+
149
+ an_ident
150
+ %add_name
151
+ SP+
152
+ KW_AS
153
+ SP+
154
+ domain
155
+ SP+
156
+ value
157
+ @eof(define_annotation_node_eof)
158
+ %define_annotation_end
159
+ %yield_define_annotation
160
+ ;
74
161
  }%%
75
162
  =end
76
163
  # end: ragel
@@ -78,6 +165,7 @@
78
165
  require_relative '../ast/node'
79
166
  require_relative '../mixin/buffer'
80
167
  require_relative '../nonblocking_io_wrapper'
168
+ require_relative '../tracer'
81
169
 
82
170
  module BELParser
83
171
  module Parsers
@@ -103,25 +191,30 @@ module BELParser
103
191
  include Enumerable
104
192
  include BELParser::Parsers::Buffer
105
193
  include BELParser::Parsers::AST::Sexp
194
+ include BELParser::Parsers::Tracer
106
195
 
107
196
  def initialize(content)
108
197
  @content = content
109
- # begin: ragel
198
+ # begin: ragel
110
199
  %% write data;
111
- # end: ragel
200
+ # end: ragel
112
201
  end
113
202
 
114
203
  def each
115
204
  @buffers = {}
205
+ @incomplete = {}
206
+ @list_domain = false
207
+ @url_domain = false
208
+ @pattern_domain = false
116
209
  data = @content.unpack('C*')
117
210
  p = 0
118
211
  pe = data.length
119
212
  eof = data.length
120
213
 
121
- # begin: ragel
214
+ # begin: ragel
122
215
  %% write init;
123
216
  %% write exec;
124
- # end: ragel
217
+ # end: ragel
125
218
  end
126
219
  end
127
220
  end