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

Sign up to get free protection for your applications and to get access to all the features.
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,44 +8,119 @@
8
8
  include 'string.rl';
9
9
  include 'list.rl';
10
10
 
11
- SET_KW = [sS][eE][tT];
12
-
13
- action set_keyword {
14
- @buffers[:set] = set()
11
+ action add_name {
12
+ trace('SET add_name')
13
+ key = @buffers.delete(:ident)
14
+ @buffers[:set_name] = key
15
15
  }
16
16
 
17
- action name {
18
- @buffers[:set] = @buffers[:set] << name(@buffers[:ident])
17
+ action add_ident_value {
18
+ trace('SET add_ident_value')
19
+ ident = @buffers.delete(:ident)
20
+ @buffers[:set_value] = ident
19
21
  }
20
22
 
21
- action string_value {
22
- @buffers[:set] = @buffers[:set] << value(@buffers[:string])
23
+ action add_string_value {
24
+ trace('SET add_string_value')
25
+ string = @buffers.delete(:string)
26
+ @buffers[:set_value] = string
23
27
  }
24
28
 
25
- action ident_value {
26
- @buffers[:set] = @buffers[:set] << value(@buffers[:ident])
29
+ action add_list_value {
30
+ trace('SET add_list_value')
31
+ list = @buffers.delete(:list)
32
+ @buffers[:set_value] = list
27
33
  }
28
34
 
29
- action list_value {
30
- @buffers[:set] = @buffers[:set] << value(@buffers[:list])
35
+ action set_end {
36
+ trace('SET set_end')
37
+ set_node = set()
38
+ completed = true
39
+
40
+ name = @buffers.delete(:set_name)
41
+ if name.nil?
42
+ completed = false
43
+ else
44
+ set_node <<= name
45
+ end
46
+
47
+ value = @buffers.delete(:set_value)
48
+ if value.nil?
49
+ completed = false
50
+ else
51
+ set_node <<= value
52
+ end
53
+ set_node.complete = completed
54
+ @buffers[:set] = set_node
31
55
  }
32
56
 
33
57
  action yield_set {
58
+ trace('SET yield_set')
34
59
  yield @buffers[:set]
35
60
  }
36
61
 
37
- set :=
38
- SET_KW %set_keyword
39
- SP+
40
- IDENT %name
62
+ action set_node_eof {
63
+ trace('SET set_node_eof')
64
+ name = @buffers.delete(:set_name)
65
+ set_node = set(name)
66
+ completed = name.complete
67
+ if @buffers.key?(:string)
68
+ value = @buffers.delete(:string)
69
+ set_node <<= value
70
+ completed = completed && value.complete
71
+ elsif @buffers.key?(:ident)
72
+ value = @buffers.delete(:ident)
73
+ set_node <<= value
74
+ completed = completed && value.complete
75
+ elsif @buffers.key?(:list)
76
+ value = @buffers.delete(:list)
77
+ set_node <<= value
78
+ completed = completed && value.complete
79
+ end
80
+ set_node.complete = completed
81
+ yield set_node
82
+ }
83
+
84
+ key =
85
+ an_ident
86
+ %add_name
87
+ ;
88
+
89
+ ident_value =
90
+ an_ident
91
+ %add_ident_value
92
+ ;
93
+
94
+ string_value =
95
+ a_string
96
+ %add_string_value
97
+ ;
98
+
99
+ list_value =
100
+ a_list
101
+ %add_list_value
102
+ ;
103
+
104
+ value =
105
+ ident_value |
106
+ string_value |
107
+ list_value
108
+ ;
109
+
110
+ set_node :=
111
+ KW_SET
41
112
  SP+
42
- EQL
113
+ an_ident
114
+ %add_name
115
+ @eof(set_node_eof)
43
116
  SP+
44
- (
45
- STRING %string_value |
46
- LIST %list_value |
47
- IDENT %ident_value
48
- ) NL @yield_set;
117
+ EQL?
118
+ SP+?
119
+ value?
120
+ @eof(set_node_eof)
121
+ %set_end
122
+ %yield_set
123
+ ;
49
124
  }%%
50
125
  =end
51
126
  # end: ragel
@@ -53,6 +128,7 @@
53
128
  require_relative '../ast/node'
54
129
  require_relative '../mixin/buffer'
55
130
  require_relative '../nonblocking_io_wrapper'
131
+ require_relative '../tracer'
56
132
 
57
133
  module BELParser
58
134
  module Parsers
@@ -78,25 +154,31 @@ module BELParser
78
154
  include Enumerable
79
155
  include BELParser::Parsers::Buffer
80
156
  include BELParser::Parsers::AST::Sexp
157
+ include BELParser::Parsers::Tracer
81
158
 
82
159
  def initialize(content)
83
160
  @content = content
84
- # begin: ragel
161
+ # begin: ragel
85
162
  %% write data;
86
- # end: ragel
163
+ # end: ragel
87
164
  end
88
165
 
89
166
  def each
90
- @buffers = {}
91
- data = @content.unpack('C*')
92
- p = 0
93
- pe = data.length
94
- eof = data.length
95
-
96
- # begin: ragel
167
+ @buffers = {}
168
+ @incomplete = {}
169
+ @accum_set = false
170
+ @have_set = false
171
+ @have_name = false
172
+ @have_value = false
173
+ data = @content.unpack('C*')
174
+ p = 0
175
+ pe = data.length
176
+ eof = data.length
177
+
178
+ # begin: ragel
97
179
  %% write init;
98
180
  %% write exec;
99
- # end: ragel
181
+ # end: ragel
100
182
  end
101
183
  end
102
184
  end