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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gemspec +1 -1
  3. data/VERSION +1 -1
  4. data/lib/bel_parser/ast_filter.rb +6 -2
  5. data/lib/bel_parser/parsers/ast/node.rb +113 -58
  6. data/lib/bel_parser/parsers/bel_script/define_annotation.rb +4175 -3097
  7. data/lib/bel_parser/parsers/bel_script/define_annotation.rl +142 -49
  8. data/lib/bel_parser/parsers/bel_script/define_namespace.rb +980 -461
  9. data/lib/bel_parser/parsers/bel_script/define_namespace.rl +79 -39
  10. data/lib/bel_parser/parsers/bel_script/set.rb +4878 -2743
  11. data/lib/bel_parser/parsers/bel_script/set.rl +114 -32
  12. data/lib/bel_parser/parsers/bel_script/set_document.rb +5839 -5292
  13. data/lib/bel_parser/parsers/bel_script/set_document.rl +130 -27
  14. data/lib/bel_parser/parsers/bel_script/unset.rb +321 -234
  15. data/lib/bel_parser/parsers/bel_script/unset.rl +49 -21
  16. data/lib/bel_parser/parsers/common.rb +1 -0
  17. data/lib/bel_parser/parsers/common/blank_line.rb +12 -11
  18. data/lib/bel_parser/parsers/common/blank_line.rl +12 -12
  19. data/lib/bel_parser/parsers/common/comment_line.rb +65 -40
  20. data/lib/bel_parser/parsers/common/comment_line.rl +26 -26
  21. data/lib/bel_parser/parsers/common/common.rl +60 -0
  22. data/lib/bel_parser/parsers/common/function.rb +319 -0
  23. data/lib/bel_parser/parsers/common/function.rl +149 -0
  24. data/lib/bel_parser/parsers/common/identifier.rb +72 -68
  25. data/lib/bel_parser/parsers/common/identifier.rl +73 -29
  26. data/lib/bel_parser/parsers/common/list.rb +1617 -1243
  27. data/lib/bel_parser/parsers/common/list.rl +120 -60
  28. data/lib/bel_parser/parsers/common/string.rb +114 -41
  29. data/lib/bel_parser/parsers/common/string.rl +91 -28
  30. data/lib/bel_parser/parsers/expression/comment.rb +70 -38
  31. data/lib/bel_parser/parsers/expression/comment.rl +37 -20
  32. data/lib/bel_parser/parsers/expression/nested_statement.rb +63116 -13958
  33. data/lib/bel_parser/parsers/expression/nested_statement.rl +53 -23
  34. data/lib/bel_parser/parsers/expression/observed_term.rb +32497 -5188
  35. data/lib/bel_parser/parsers/expression/observed_term.rl +25 -20
  36. data/lib/bel_parser/parsers/expression/parameter.rb +2861 -847
  37. data/lib/bel_parser/parsers/expression/parameter.rl +178 -21
  38. data/lib/bel_parser/parsers/expression/relationship.rb +73 -55
  39. data/lib/bel_parser/parsers/expression/relationship.rl +41 -23
  40. data/lib/bel_parser/parsers/expression/simple_statement.rb +42895 -7846
  41. data/lib/bel_parser/parsers/expression/simple_statement.rl +41 -24
  42. data/lib/bel_parser/parsers/expression/term.rb +16498 -2602
  43. data/lib/bel_parser/parsers/expression/term.rl +52 -35
  44. data/lib/bel_parser/parsers/line_parser.rb +1 -0
  45. data/lib/bel_parser/parsers/mixin/buffer.rb +4 -0
  46. data/lib/bel_parser/parsers/tracer.rb +19 -0
  47. data/lib/bel_parser/script/state/namespace_definition.rb +1 -0
  48. metadata +13 -9
@@ -8,19 +8,21 @@
8
8
 
9
9
  action yield_observed_term {
10
10
  @buffers[:comment] ||= comment(nil)
11
- yield observed_term(
12
- statement(
13
- subject(@buffers[:term_stack][-1]),
14
- relationship(nil),
15
- object(nil),
16
- @buffers[:comment]))
11
+ comment = @buffers[:comment]
12
+ term = @buffers[:term_stack][-1]
13
+ subject_term = subject(term)
14
+ rel = relationship(nil)
15
+ obj = object(nil)
16
+ stmt = observed_term(statement(subject_term, rel, obj, comment))
17
+ stmt.complete = true
18
+ yield stmt
17
19
  }
18
20
 
19
21
  observed_term :=
20
- outer_term
22
+ outer_term
21
23
  SP*
22
- COMMENT? %yield_observed_term
23
- NL;
24
+ comment? %yield_observed_term
25
+ NL?;
24
26
  }%%
25
27
  =end
26
28
  # end: ragel
@@ -28,6 +30,7 @@
28
30
  require_relative '../ast/node'
29
31
  require_relative '../mixin/buffer'
30
32
  require_relative '../nonblocking_io_wrapper'
33
+ require_relative '../tracer'
31
34
 
32
35
  module BELParser
33
36
  module Parsers
@@ -53,26 +56,28 @@ module BELParser
53
56
  include Enumerable
54
57
  include BELParser::Parsers::Buffer
55
58
  include BELParser::Parsers::AST::Sexp
59
+ include BELParser::Parsers::Tracer
56
60
 
57
61
  def initialize(content)
58
62
  @content = content
59
- # begin: ragel
63
+ # begin: ragel
60
64
  %% write data;
61
- # end: ragel
65
+ # end: ragel
62
66
  end
63
67
 
64
68
  def each
65
- @buffers = {}
66
- stack = []
67
- data = @content.unpack('C*')
68
- p = 0
69
- pe = data.length
70
- eof = data.length
71
-
72
- # begin: ragel
69
+ @buffers = {}
70
+ @incomplete = {}
71
+ stack = []
72
+ data = @content.unpack('C*')
73
+ p = 0
74
+ pe = data.length
75
+ eof = data.length
76
+
77
+ # begin: ragel
73
78
  %% write init;
74
79
  %% write exec;
75
- # end: ragel
80
+ # end: ragel
76
81
  end
77
82
  end
78
83
  end
@@ -8,12 +8,14 @@ class << self
8
8
  end
9
9
  self._bel_trans_keys = [
10
10
  0, 0, 9, 122, 9, 122,
11
- 34, 92, 10, 10, 92,
12
- 92, 10, 122, 10, 122,
13
- 48, 122, 10, 122, 34, 34,
14
- 34, 92, 10, 10, 92,
15
- 92, 0, 0, 0, 0,
16
- 0, 0, 0
11
+ 9, 34, 34, 92, 34,
12
+ 92, 0, 0, 48, 122,
13
+ 9, 34, 34, 92, 34, 92,
14
+ 0, 0, 10, 10, 0,
15
+ 0, 10, 122, 10, 122,
16
+ 9, 122, 9, 122, 9, 34,
17
+ 10, 122, 0, 0, 0,
18
+ 0, 0
17
19
  ]
18
20
 
19
21
  class << self
@@ -21,9 +23,9 @@ class << self
21
23
  private :_bel_key_spans, :_bel_key_spans=
22
24
  end
23
25
  self._bel_key_spans = [
24
- 0, 114, 114, 59, 1, 1, 113, 113,
25
- 75, 113, 1, 59, 1, 1, 0, 0,
26
- 0
26
+ 0, 114, 114, 26, 59, 59, 0, 75,
27
+ 26, 59, 59, 0, 1, 0, 113, 113,
28
+ 114, 114, 26, 113, 0, 0
27
29
  ]
28
30
 
29
31
  class << self
@@ -31,9 +33,9 @@ class << self
31
33
  private :_bel_index_offsets, :_bel_index_offsets=
32
34
  end
33
35
  self._bel_index_offsets = [
34
- 0, 0, 115, 230, 290, 292, 294, 408,
35
- 522, 598, 712, 714, 774, 776, 778, 779,
36
- 780
36
+ 0, 0, 115, 230, 257, 317, 377, 378,
37
+ 454, 481, 541, 601, 602, 604, 605, 719,
38
+ 833, 948, 1063, 1090, 1204, 1205
37
39
  ]
38
40
 
39
41
  class << self
@@ -41,104 +43,157 @@ class << self
41
43
  private :_bel_indicies, :_bel_indicies=
42
44
  end
43
45
  self._bel_indicies = [
44
- 1, 0, 0, 0, 0, 0, 0, 0,
46
+ 1, 2, 2, 2, 2, 0, 0, 0,
45
47
  0, 0, 0, 0, 0, 0, 0, 0,
46
48
  0, 0, 0, 0, 0, 0, 0, 1,
47
- 0, 2, 0, 0, 0, 0, 0, 0,
48
- 0, 0, 0, 0, 0, 0, 0, 3,
49
- 3, 3, 3, 3, 3, 3, 3, 3,
50
- 3, 0, 0, 0, 0, 0, 0, 0,
51
- 3, 3, 3, 3, 3, 3, 3, 3,
52
- 3, 3, 3, 3, 3, 3, 3, 3,
53
- 3, 3, 3, 3, 3, 3, 3, 3,
54
- 3, 3, 0, 0, 0, 0, 3, 0,
55
- 3, 3, 3, 3, 3, 3, 3, 3,
56
- 3, 3, 3, 3, 3, 3, 3, 3,
57
- 3, 3, 3, 3, 3, 3, 3, 3,
58
- 3, 3, 0, 1, 4, 4, 4, 4,
49
+ 0, 3, 0, 0, 0, 0, 0, 0,
50
+ 0, 0, 0, 0, 0, 0, 0, 4,
59
51
  4, 4, 4, 4, 4, 4, 4, 4,
52
+ 4, 0, 0, 0, 0, 0, 0, 0,
60
53
  4, 4, 4, 4, 4, 4, 4, 4,
61
- 4, 4, 1, 4, 2, 4, 4, 4,
62
54
  4, 4, 4, 4, 4, 4, 4, 4,
63
- 4, 4, 5, 5, 5, 5, 5, 5,
64
- 5, 5, 5, 5, 4, 4, 4, 4,
65
- 4, 4, 4, 5, 5, 5, 5, 5,
55
+ 4, 4, 4, 4, 4, 4, 4, 4,
56
+ 4, 4, 0, 0, 0, 0, 4, 0,
57
+ 4, 4, 4, 4, 4, 4, 4, 4,
58
+ 4, 4, 4, 4, 4, 4, 4, 4,
59
+ 4, 4, 4, 4, 4, 4, 4, 4,
60
+ 4, 4, 0, 1, 2, 2, 2, 2,
61
+ 0, 0, 0, 0, 0, 0, 0, 0,
62
+ 0, 0, 0, 0, 0, 0, 0, 0,
63
+ 0, 0, 1, 0, 3, 0, 0, 0,
64
+ 0, 0, 0, 0, 0, 0, 0, 0,
65
+ 0, 0, 5, 5, 5, 5, 5, 5,
66
+ 5, 5, 5, 5, 0, 0, 0, 0,
67
+ 0, 0, 0, 5, 5, 5, 5, 5,
66
68
  5, 5, 5, 5, 5, 5, 5, 5,
67
69
  5, 5, 5, 5, 5, 5, 5, 5,
68
- 5, 5, 5, 5, 5, 4, 4, 4,
69
- 4, 5, 4, 5, 5, 5, 5, 5,
70
+ 5, 5, 5, 5, 5, 0, 0, 0,
71
+ 0, 5, 0, 5, 5, 5, 5, 5,
70
72
  5, 5, 5, 5, 5, 5, 5, 5,
71
73
  5, 5, 5, 5, 5, 5, 5, 5,
72
- 5, 5, 5, 5, 5, 4, 7, 6,
73
- 6, 6, 6, 6, 6, 6, 6, 6,
74
+ 5, 5, 5, 5, 5, 0, 2, 2,
75
+ 2, 2, 2, 6, 6, 6, 6, 6,
74
76
  6, 6, 6, 6, 6, 6, 6, 6,
75
- 6, 6, 6, 6, 6, 6, 6, 6,
76
- 6, 6, 6, 6, 6, 6, 6, 6,
77
- 6, 6, 6, 6, 6, 6, 6, 6,
78
- 6, 6, 6, 6, 6, 6, 6, 6,
79
- 6, 6, 6, 6, 6, 6, 6, 6,
80
- 8, 6, 10, 9, 8, 6, 12, 11,
81
- 11, 11, 11, 11, 11, 11, 11, 11,
82
- 11, 11, 11, 11, 11, 11, 11, 11,
83
- 11, 11, 11, 11, 11, 11, 11, 11,
84
- 11, 11, 11, 11, 11, 11, 11, 11,
85
- 11, 11, 11, 11, 13, 13, 13, 13,
86
- 13, 13, 13, 13, 13, 13, 11, 11,
87
- 11, 11, 11, 11, 11, 13, 13, 13,
77
+ 6, 6, 6, 6, 6, 2, 6, 3,
78
+ 6, 8, 7, 7, 7, 7, 7, 7,
79
+ 7, 7, 7, 7, 7, 7, 7, 7,
80
+ 7, 7, 7, 7, 7, 7, 7, 7,
81
+ 7, 7, 7, 7, 7, 7, 7, 7,
82
+ 7, 7, 7, 7, 7, 7, 7, 7,
83
+ 7, 7, 7, 7, 7, 7, 7, 7,
84
+ 7, 7, 7, 7, 7, 7, 7, 7,
85
+ 7, 7, 7, 9, 7, 11, 10, 10,
86
+ 10, 10, 10, 10, 10, 10, 10, 10,
87
+ 10, 10, 10, 10, 10, 10, 10, 10,
88
+ 10, 10, 10, 10, 10, 10, 10, 10,
89
+ 10, 10, 10, 10, 10, 10, 10, 10,
90
+ 10, 10, 10, 10, 10, 10, 10, 10,
91
+ 10, 10, 10, 10, 10, 10, 10, 10,
92
+ 10, 10, 10, 10, 10, 10, 10, 12,
93
+ 10, 10, 13, 13, 13, 13, 13, 13,
94
+ 13, 13, 13, 13, 14, 14, 14, 14,
95
+ 14, 14, 14, 13, 13, 13, 13, 13,
88
96
  13, 13, 13, 13, 13, 13, 13, 13,
89
97
  13, 13, 13, 13, 13, 13, 13, 13,
90
- 13, 13, 13, 13, 13, 13, 13, 11,
91
- 11, 11, 11, 13, 11, 13, 13, 13,
98
+ 13, 13, 13, 13, 13, 14, 14, 14,
99
+ 14, 13, 14, 13, 13, 13, 13, 13,
92
100
  13, 13, 13, 13, 13, 13, 13, 13,
93
101
  13, 13, 13, 13, 13, 13, 13, 13,
94
- 13, 13, 13, 13, 13, 13, 13, 11,
95
- 12, 11, 11, 11, 11, 11, 11, 11,
96
- 11, 11, 11, 11, 11, 11, 11, 11,
97
- 11, 11, 11, 11, 11, 11, 11, 11,
98
- 11, 11, 11, 11, 11, 11, 11, 11,
99
- 11, 11, 11, 11, 11, 11, 14, 14,
100
- 14, 14, 14, 14, 14, 14, 14, 14,
101
- 15, 11, 11, 11, 11, 11, 11, 14,
102
- 14, 14, 14, 14, 14, 14, 14, 14,
103
- 14, 14, 14, 14, 14, 14, 14, 14,
104
- 14, 14, 14, 14, 14, 14, 14, 14,
105
- 14, 11, 11, 11, 11, 14, 11, 14,
106
- 14, 14, 14, 14, 14, 14, 14, 14,
107
- 14, 14, 14, 14, 14, 14, 14, 14,
108
- 14, 14, 14, 14, 14, 14, 14, 14,
109
- 14, 11, 17, 17, 17, 17, 17, 17,
110
- 17, 17, 17, 17, 16, 16, 16, 16,
111
- 16, 16, 16, 17, 17, 17, 17, 17,
112
- 17, 17, 17, 17, 17, 17, 17, 17,
113
- 17, 17, 17, 17, 17, 17, 17, 17,
114
- 17, 17, 17, 17, 17, 16, 16, 16,
115
- 16, 17, 16, 17, 17, 17, 17, 17,
116
- 17, 17, 17, 17, 17, 17, 17, 17,
117
- 17, 17, 17, 17, 17, 17, 17, 17,
118
- 17, 17, 17, 17, 17, 16, 18, 16,
119
- 16, 16, 16, 16, 16, 16, 16, 16,
120
- 16, 16, 16, 16, 16, 16, 16, 16,
121
- 16, 16, 16, 16, 16, 16, 16, 16,
122
- 16, 16, 16, 16, 16, 16, 16, 16,
123
- 16, 16, 16, 16, 19, 19, 19, 19,
124
- 19, 19, 19, 19, 19, 19, 16, 16,
125
- 16, 16, 16, 16, 16, 19, 19, 19,
126
- 19, 19, 19, 19, 19, 19, 19, 19,
127
- 19, 19, 19, 19, 19, 19, 19, 19,
128
- 19, 19, 19, 19, 19, 19, 19, 16,
129
- 16, 16, 16, 19, 16, 19, 19, 19,
130
- 19, 19, 19, 19, 19, 19, 19, 19,
131
- 19, 19, 19, 19, 19, 19, 19, 19,
132
- 19, 19, 19, 19, 19, 19, 19, 16,
133
- 21, 20, 23, 22, 22, 22, 22, 22,
134
- 22, 22, 22, 22, 22, 22, 22, 22,
135
- 22, 22, 22, 22, 22, 22, 22, 22,
136
- 22, 22, 22, 22, 22, 22, 22, 22,
137
- 22, 22, 22, 22, 22, 22, 22, 22,
138
- 22, 22, 22, 22, 22, 22, 22, 22,
139
- 22, 22, 22, 22, 22, 22, 22, 22,
140
- 22, 22, 22, 22, 24, 22, 25, 20,
141
- 24, 22, 26, 26, 26, 0
102
+ 13, 13, 13, 13, 13, 14, 16, 16,
103
+ 16, 16, 16, 15, 15, 15, 15, 15,
104
+ 15, 15, 15, 15, 15, 15, 15, 15,
105
+ 15, 15, 15, 15, 15, 16, 15, 17,
106
+ 15, 19, 18, 18, 18, 18, 18, 18,
107
+ 18, 18, 18, 18, 18, 18, 18, 18,
108
+ 18, 18, 18, 18, 18, 18, 18, 18,
109
+ 18, 18, 18, 18, 18, 18, 18, 18,
110
+ 18, 18, 18, 18, 18, 18, 18, 18,
111
+ 18, 18, 18, 18, 18, 18, 18, 18,
112
+ 18, 18, 18, 18, 18, 18, 18, 18,
113
+ 18, 18, 18, 20, 18, 22, 21, 21,
114
+ 21, 21, 21, 21, 21, 21, 21, 21,
115
+ 21, 21, 21, 21, 21, 21, 21, 21,
116
+ 21, 21, 21, 21, 21, 21, 21, 21,
117
+ 21, 21, 21, 21, 21, 21, 21, 21,
118
+ 21, 21, 21, 21, 21, 21, 21, 21,
119
+ 21, 21, 21, 21, 21, 21, 21, 21,
120
+ 21, 21, 21, 21, 21, 21, 21, 23,
121
+ 21, 21, 24, 6, 14, 26, 25, 25,
122
+ 25, 25, 25, 25, 25, 25, 25, 25,
123
+ 25, 25, 25, 25, 25, 25, 25, 25,
124
+ 25, 25, 25, 25, 25, 25, 25, 25,
125
+ 25, 25, 25, 25, 25, 25, 25, 25,
126
+ 25, 25, 25, 27, 27, 27, 27, 27,
127
+ 27, 27, 27, 27, 27, 25, 25, 25,
128
+ 25, 25, 25, 25, 27, 27, 27, 27,
129
+ 27, 27, 27, 27, 27, 27, 27, 27,
130
+ 27, 27, 27, 27, 27, 27, 27, 27,
131
+ 27, 27, 27, 27, 27, 27, 25, 25,
132
+ 25, 25, 27, 25, 27, 27, 27, 27,
133
+ 27, 27, 27, 27, 27, 27, 27, 27,
134
+ 27, 27, 27, 27, 27, 27, 27, 27,
135
+ 27, 27, 27, 27, 27, 27, 25, 26,
136
+ 25, 25, 25, 25, 25, 25, 25, 25,
137
+ 25, 25, 25, 25, 25, 25, 25, 25,
138
+ 25, 25, 25, 25, 25, 25, 25, 25,
139
+ 25, 25, 25, 25, 25, 25, 25, 25,
140
+ 25, 25, 25, 25, 25, 28, 28, 28,
141
+ 28, 28, 28, 28, 28, 28, 28, 29,
142
+ 25, 25, 25, 25, 25, 25, 28, 28,
143
+ 28, 28, 28, 28, 28, 28, 28, 28,
144
+ 28, 28, 28, 28, 28, 28, 28, 28,
145
+ 28, 28, 28, 28, 28, 28, 28, 28,
146
+ 25, 25, 25, 25, 28, 25, 28, 28,
147
+ 28, 28, 28, 28, 28, 28, 28, 28,
148
+ 28, 28, 28, 28, 28, 28, 28, 28,
149
+ 28, 28, 28, 28, 28, 28, 28, 28,
150
+ 25, 30, 31, 32, 32, 32, 0, 0,
151
+ 0, 0, 0, 0, 0, 0, 0, 0,
152
+ 0, 0, 0, 0, 0, 0, 0, 0,
153
+ 30, 0, 33, 0, 0, 0, 0, 0,
154
+ 0, 0, 0, 0, 0, 0, 0, 0,
155
+ 34, 34, 34, 34, 34, 34, 34, 34,
156
+ 34, 34, 0, 0, 0, 0, 0, 0,
157
+ 0, 34, 34, 34, 34, 34, 34, 34,
158
+ 34, 34, 34, 34, 34, 34, 34, 34,
159
+ 34, 34, 34, 34, 34, 34, 34, 34,
160
+ 34, 34, 34, 0, 0, 0, 0, 34,
161
+ 0, 34, 34, 34, 34, 34, 34, 34,
162
+ 34, 34, 34, 34, 34, 34, 34, 34,
163
+ 34, 34, 34, 34, 34, 34, 34, 34,
164
+ 34, 34, 34, 0, 35, 36, 2, 2,
165
+ 2, 0, 0, 0, 0, 0, 0, 0,
166
+ 0, 0, 0, 0, 0, 0, 0, 0,
167
+ 0, 0, 0, 35, 0, 3, 0, 0,
168
+ 0, 0, 0, 0, 0, 0, 0, 0,
169
+ 0, 0, 0, 5, 5, 5, 5, 5,
170
+ 5, 5, 5, 5, 5, 0, 0, 0,
171
+ 0, 0, 0, 0, 5, 5, 5, 5,
172
+ 5, 5, 5, 5, 5, 5, 5, 5,
173
+ 5, 5, 5, 5, 5, 5, 5, 5,
174
+ 5, 5, 5, 5, 5, 5, 0, 0,
175
+ 0, 0, 5, 0, 5, 5, 5, 5,
176
+ 5, 5, 5, 5, 5, 5, 5, 5,
177
+ 5, 5, 5, 5, 5, 5, 5, 5,
178
+ 5, 5, 5, 5, 5, 5, 0, 2,
179
+ 2, 2, 2, 2, 6, 6, 6, 6,
180
+ 6, 6, 6, 6, 6, 6, 6, 6,
181
+ 6, 6, 6, 6, 6, 6, 2, 6,
182
+ 3, 6, 38, 37, 37, 37, 37, 37,
183
+ 37, 37, 37, 37, 37, 37, 37, 37,
184
+ 37, 37, 37, 37, 37, 37, 37, 37,
185
+ 37, 37, 37, 37, 37, 37, 37, 37,
186
+ 37, 37, 37, 37, 37, 37, 37, 37,
187
+ 39, 39, 39, 39, 39, 39, 39, 39,
188
+ 39, 39, 37, 37, 37, 37, 37, 37,
189
+ 37, 39, 39, 39, 39, 39, 39, 39,
190
+ 39, 39, 39, 39, 39, 39, 39, 39,
191
+ 39, 39, 39, 39, 39, 39, 39, 39,
192
+ 39, 39, 39, 37, 37, 37, 37, 39,
193
+ 37, 39, 39, 39, 39, 39, 39, 39,
194
+ 39, 39, 39, 39, 39, 39, 39, 39,
195
+ 39, 39, 39, 39, 39, 39, 39, 39,
196
+ 39, 39, 39, 37, 37, 15, 0
142
197
  ]
143
198
 
144
199
  class << self
@@ -146,10 +201,11 @@ class << self
146
201
  private :_bel_trans_targs, :_bel_trans_targs=
147
202
  end
148
203
  self._bel_trans_targs = [
149
- 0, 2, 3, 7, 0, 6, 3, 4,
150
- 5, 0, 14, 0, 14, 6, 7, 2,
151
- 0, 9, 15, 9, 0, 11, 11, 12,
152
- 13, 16, 0
204
+ 0, 2, 3, 4, 15, 14, 0, 5,
205
+ 12, 6, 5, 12, 6, 19, 0, 0,
206
+ 8, 9, 10, 21, 11, 10, 21, 11,
207
+ 13, 0, 13, 14, 15, 16, 17, 18,
208
+ 3, 4, 14, 17, 18, 0, 20, 19
153
209
  ]
154
210
 
155
211
  class << self
@@ -157,10 +213,11 @@ class << self
157
213
  private :_bel_trans_actions, :_bel_trans_actions=
158
214
  end
159
215
  self._bel_trans_actions = [
160
- 1, 0, 2, 3, 4, 3, 6, 6,
161
- 6, 5, 7, 8, 9, 10, 10, 11,
162
- 12, 3, 13, 10, 14, 2, 6, 6,
163
- 6, 15, 0
216
+ 2, 0, 0, 0, 3, 3, 5, 7,
217
+ 8, 7, 0, 9, 0, 3, 0, 11,
218
+ 0, 0, 7, 13, 7, 0, 14, 0,
219
+ 15, 17, 18, 0, 0, 20, 22, 23,
220
+ 22, 22, 24, 0, 26, 29, 20, 0
164
221
  ]
165
222
 
166
223
  class << self
@@ -168,9 +225,9 @@ class << self
168
225
  private :_bel_eof_actions, :_bel_eof_actions=
169
226
  end
170
227
  self._bel_eof_actions = [
171
- 0, 1, 4, 5, 5, 5, 8, 8,
172
- 12, 12, 14, 14, 14, 14, 0, 0,
173
- 0
228
+ 0, 1, 1, 4, 6, 6, 6, 0,
229
+ 10, 12, 12, 12, 15, 0, 16, 19,
230
+ 21, 25, 27, 28, 30, 0
174
231
  ]
175
232
 
176
233
  class << self
@@ -180,24 +237,24 @@ self.bel_start = 1;
180
237
  class << self
181
238
  attr_accessor :bel_first_final
182
239
  end
183
- self.bel_first_final = 14;
240
+ self.bel_first_final = 12;
184
241
  class << self
185
242
  attr_accessor :bel_error
186
243
  end
187
244
  self.bel_error = 0;
188
245
 
189
246
  class << self
190
- attr_accessor :bel_en_ident
247
+ attr_accessor :bel_en_ident_node
191
248
  end
192
- self.bel_en_ident = 8;
249
+ self.bel_en_ident_node = 7;
193
250
  class << self
194
- attr_accessor :bel_en_string
251
+ attr_accessor :bel_en_string_node
195
252
  end
196
- self.bel_en_string = 10;
253
+ self.bel_en_string_node = 8;
197
254
  class << self
198
- attr_accessor :bel_en_bel_parameter
255
+ attr_accessor :bel_en_parameter_node
199
256
  end
200
- self.bel_en_bel_parameter = 1;
257
+ self.bel_en_parameter_node = 1;
201
258
 
202
259
 
203
260
  begin
@@ -242,153 +299,353 @@ begin
242
299
  cs = _bel_trans_targs[_trans]
243
300
  if _bel_trans_actions[_trans] != 0
244
301
  case _bel_trans_actions[_trans]
245
- when 10 then
302
+ when 3 then
246
303
  begin
247
304
 
248
- (@buffers[:ident] ||= []) << data[p].ord
305
+ trace('IDENTIFIER start_identifier')
306
+ @identifier_started = true
307
+ id_start = p;
249
308
  end
250
- when 8 then
309
+ when 20 then
251
310
  begin
252
311
 
253
- unless @buffers[:ident].is_a?(::AST::Node)
254
- @buffers[:ident] ||= []
255
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
256
- end
312
+ trace('IDENTIFIER end_identifier')
313
+ id_end = p
314
+ chars = data[id_start...id_end]
315
+ completed = !chars.empty?
316
+ ast_node = identifier(utf8_string(chars), complete: completed)
317
+ @buffers[:ident] = ast_node
257
318
  end
258
- when 6 then
319
+ when 17 then
320
+ begin
321
+
322
+ trace('IDENTIFIER an_ident_err')
323
+ id_end = p
324
+ chars = data[id_start...id_end]
325
+ ast_node = identifier(utf8_string(chars), complete: false)
326
+ @buffers[:ident] = ast_node
327
+ end
328
+ when 29 then
329
+ begin
330
+
331
+ trace('IDENTIFIER ident_node_err')
332
+ id_end = p
333
+ chars = data[id_start...id_end]
334
+ ast_node = identifier(utf8_string(chars), complete: false)
335
+ yield ast_node
336
+ end
337
+ when 7 then
259
338
  begin
260
339
 
261
- (@buffers[:string] ||= []) << data[p].ord
340
+ trace('STRING start_string')
341
+ @string_opened = true
342
+ p_start = p
262
343
  end
263
344
  when 5 then
264
345
  begin
265
346
 
266
- @buffers[:string] ||= []
267
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
347
+ trace('STRING a_string_err')
348
+ p_end = p
349
+ chars = data[p_start...p_end]
350
+ ast_node = string(utf8_string(chars), complete: false)
351
+ @buffers[:string] = ast_node
268
352
  end
269
- when 3 then
353
+ when 11 then
270
354
  begin
271
355
 
272
- @buffers[:ident] = []
356
+ trace('STRING string_node_err')
357
+ p_end = p
358
+ chars = data[p_start...p_end]
359
+ ast_node = string(utf8_string(chars), complete: false)
360
+ yield ast_node
273
361
  end
362
+ when 22 then
274
363
  begin
275
364
 
276
- (@buffers[:ident] ||= []) << data[p].ord
365
+ trace('PARAMETER add_prefix')
366
+ ident = @buffers.delete(:ident)
367
+ prefix_node = prefix(ident, complete: ident.complete)
368
+ @buffers[:param_prefix] = prefix_node
277
369
  end
278
- when 13 then
370
+ when 2 then
279
371
  begin
280
372
 
281
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
373
+ trace('IDENTIFIER an_ident_err')
374
+ id_end = p
375
+ chars = data[id_start...id_end]
376
+ ast_node = identifier(utf8_string(chars), complete: false)
377
+ @buffers[:ident] = ast_node
282
378
  end
283
379
  begin
284
380
 
285
- yield @buffers[:ident]
381
+ trace('STRING a_string_err')
382
+ p_end = p
383
+ chars = data[p_start...p_end]
384
+ ast_node = string(utf8_string(chars), complete: false)
385
+ @buffers[:string] = ast_node
286
386
  end
287
- when 11 then
387
+ when 9 then
288
388
  begin
289
389
 
290
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
390
+ trace('STRING stop_string')
391
+ @string_closed = true
392
+ p_end = p
291
393
  end
292
394
  begin
293
395
 
294
- @buffers[:parameter] = parameter(prefix(@buffers[:ident]))
396
+ trace('STRING string_end')
397
+ completed = @string_opened && @string_closed
398
+ chars = data[p_start...p_end]
399
+ ast_node = string(utf8_string(chars), complete: true)
400
+ @buffers[:string] = ast_node
295
401
  end
296
- when 12 then
402
+ when 26 then
297
403
  begin
298
404
 
299
- unless @buffers[:ident].is_a?(::AST::Node)
300
- @buffers[:ident] ||= []
301
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
405
+ trace('PARAMETER parameter_end')
406
+ param_node = parameter()
407
+ completed = true
408
+ prefix_node = @buffers.delete(:param_prefix)
409
+ unless prefix_node.nil?
410
+ param_node <<= prefix_node
411
+ unless prefix_node.complete
412
+ trace('PN incomplete')
413
+ completed = false
414
+ end
415
+ end
416
+
417
+ value_node = @buffers.delete(:param_value)
418
+ unless value_node.nil?
419
+ param_node <<= value_node
420
+ unless value_node.complete
421
+ trace('VN incomplete')
422
+ completed = false
423
+ end
424
+ else
425
+ completed = false
302
426
  end
427
+
428
+ param_node.complete = completed
429
+ @buffers[:parameter] = param_node
303
430
  end
304
431
  begin
305
432
 
306
- @buffers[:ident] ||= []
307
- yield @buffers[:ident]
433
+ trace('PARAMETER yield_parameter')
434
+ yield @buffers[:parameter]
308
435
  end
309
- when 1 then
436
+ when 24 then
310
437
  begin
311
438
 
312
- unless @buffers[:ident].is_a?(::AST::Node)
313
- @buffers[:ident] ||= []
314
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
315
- end
439
+ trace('PARAMETER add_prefix')
440
+ ident = @buffers.delete(:ident)
441
+ prefix_node = prefix(ident, complete: ident.complete)
442
+ @buffers[:param_prefix] = prefix_node
316
443
  end
317
444
  begin
318
445
 
319
- @buffers[:string] ||= []
320
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
446
+ trace('IDENTIFIER start_identifier')
447
+ @identifier_started = true
448
+ id_start = p;
321
449
  end
322
- when 2 then
450
+ when 8 then
323
451
  begin
324
452
 
325
- @buffers[:string] = []
453
+ trace('STRING start_string')
454
+ @string_opened = true
455
+ p_start = p
326
456
  end
327
457
  begin
328
458
 
329
- (@buffers[:string] ||= []) << data[p].ord
459
+ trace('STRING stop_string')
460
+ @string_closed = true
461
+ p_end = p
462
+ end
463
+ begin
464
+
465
+ trace('STRING string_end')
466
+ completed = @string_opened && @string_closed
467
+ chars = data[p_start...p_end]
468
+ ast_node = string(utf8_string(chars), complete: true)
469
+ @buffers[:string] = ast_node
470
+ end
471
+ when 14 then
472
+ begin
473
+
474
+ trace('STRING stop_string')
475
+ @string_closed = true
476
+ p_end = p
330
477
  end
331
- when 15 then
332
478
  begin
333
479
 
334
- @buffers[:string] = string(utf8_string(@buffers[:string]))
480
+ trace('STRING string_end')
481
+ completed = @string_opened && @string_closed
482
+ chars = data[p_start...p_end]
483
+ ast_node = string(utf8_string(chars), complete: true)
484
+ @buffers[:string] = ast_node
335
485
  end
336
486
  begin
337
487
 
488
+ trace('STRING yield_string')
338
489
  yield @buffers[:string]
339
490
  end
340
- when 4 then
491
+ when 15 then
341
492
  begin
342
493
 
343
- @buffers[:string] ||= []
344
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
494
+ trace('PARAMETER add_string_param_value')
495
+ string_node = @buffers.delete(:string)
496
+ value_node = value(string_node, complete: string_node.complete)
497
+ @buffers[:param_value] = value_node
345
498
  end
346
499
  begin
347
500
 
348
- unless @buffers[:ident].is_a?(::AST::Node)
349
- @buffers[:ident] ||= []
350
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
501
+ trace('PARAMETER parameter_end')
502
+ param_node = parameter()
503
+ completed = true
504
+ prefix_node = @buffers.delete(:param_prefix)
505
+ unless prefix_node.nil?
506
+ param_node <<= prefix_node
507
+ unless prefix_node.complete
508
+ trace('PN incomplete')
509
+ completed = false
510
+ end
511
+ end
512
+
513
+ value_node = @buffers.delete(:param_value)
514
+ unless value_node.nil?
515
+ param_node <<= value_node
516
+ unless value_node.complete
517
+ trace('VN incomplete')
518
+ completed = false
519
+ end
520
+ else
521
+ completed = false
351
522
  end
523
+
524
+ param_node.complete = completed
525
+ @buffers[:parameter] = param_node
352
526
  end
353
- when 14 then
354
527
  begin
355
528
 
356
- @buffers[:string] ||= []
357
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
529
+ trace('PARAMETER yield_parameter')
530
+ yield @buffers[:parameter]
358
531
  end
532
+ when 23 then
359
533
  begin
360
534
 
361
- @buffers[:string] ||= []
362
- yield @buffers[:string]
535
+ trace('PARAMETER add_prefix')
536
+ ident = @buffers.delete(:ident)
537
+ prefix_node = prefix(ident, complete: ident.complete)
538
+ @buffers[:param_prefix] = prefix_node
363
539
  end
364
- when 9 then
365
540
  begin
366
541
 
367
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
542
+ trace('PARAMETER parameter_end')
543
+ param_node = parameter()
544
+ completed = true
545
+ prefix_node = @buffers.delete(:param_prefix)
546
+ unless prefix_node.nil?
547
+ param_node <<= prefix_node
548
+ unless prefix_node.complete
549
+ trace('PN incomplete')
550
+ completed = false
551
+ end
552
+ end
553
+
554
+ value_node = @buffers.delete(:param_value)
555
+ unless value_node.nil?
556
+ param_node <<= value_node
557
+ unless value_node.complete
558
+ trace('VN incomplete')
559
+ completed = false
560
+ end
561
+ else
562
+ completed = false
563
+ end
564
+
565
+ param_node.complete = completed
566
+ @buffers[:parameter] = param_node
368
567
  end
369
568
  begin
370
569
 
371
- @buffers[:parameter] ||= parameter(prefix(nil))
372
- @buffers[:parameter] = @buffers[:parameter] << value(@buffers[:ident])
570
+ trace('PARAMETER yield_parameter')
571
+ yield @buffers[:parameter]
373
572
  end
573
+ when 18 then
374
574
  begin
375
575
 
376
- yield @buffers[:parameter]
576
+ trace('IDENTIFIER end_identifier')
577
+ id_end = p
578
+ chars = data[id_start...id_end]
579
+ completed = !chars.empty?
580
+ ast_node = identifier(utf8_string(chars), complete: completed)
581
+ @buffers[:ident] = ast_node
377
582
  end
378
- when 7 then
379
583
  begin
380
584
 
381
- @buffers[:string] = string(utf8_string(@buffers[:string]))
585
+ trace('PARAMETER add_ident_param_value')
586
+ ident = @buffers.delete(:ident)
587
+ value_node = value(ident, complete: ident.complete)
588
+ @buffers[:param_value] = value_node
382
589
  end
383
590
  begin
384
591
 
385
- @buffers[:parameter] ||= parameter(prefix(nil))
386
- @buffers[:parameter] = @buffers[:parameter] << value(@buffers[:string])
592
+ trace('PARAMETER parameter_end')
593
+ param_node = parameter()
594
+ completed = true
595
+ prefix_node = @buffers.delete(:param_prefix)
596
+ unless prefix_node.nil?
597
+ param_node <<= prefix_node
598
+ unless prefix_node.complete
599
+ trace('PN incomplete')
600
+ completed = false
601
+ end
602
+ end
603
+
604
+ value_node = @buffers.delete(:param_value)
605
+ unless value_node.nil?
606
+ param_node <<= value_node
607
+ unless value_node.complete
608
+ trace('VN incomplete')
609
+ completed = false
610
+ end
611
+ else
612
+ completed = false
613
+ end
614
+
615
+ param_node.complete = completed
616
+ @buffers[:parameter] = param_node
387
617
  end
388
618
  begin
389
619
 
620
+ trace('PARAMETER yield_parameter')
390
621
  yield @buffers[:parameter]
391
622
  end
623
+ when 13 then
624
+ begin
625
+
626
+ trace('STRING start_string')
627
+ @string_opened = true
628
+ p_start = p
629
+ end
630
+ begin
631
+
632
+ trace('STRING stop_string')
633
+ @string_closed = true
634
+ p_end = p
635
+ end
636
+ begin
637
+
638
+ trace('STRING string_end')
639
+ completed = @string_opened && @string_closed
640
+ chars = data[p_start...p_end]
641
+ ast_node = string(utf8_string(chars), complete: true)
642
+ @buffers[:string] = ast_node
643
+ end
644
+ begin
645
+
646
+ trace('STRING yield_string')
647
+ yield @buffers[:string]
648
+ end
392
649
  end
393
650
  end
394
651
  end
@@ -406,547 +663,481 @@ begin
406
663
  if _goto_level <= _test_eof
407
664
  if p == eof
408
665
  case _bel_eof_actions[cs]
409
- when 8 then
666
+ when 30 then
410
667
  begin
411
668
 
412
- unless @buffers[:ident].is_a?(::AST::Node)
413
- @buffers[:ident] ||= []
414
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
415
- end
669
+ trace('IDENTIFIER yield_identifier')
670
+ yield @buffers[:ident]
416
671
  end
417
- when 5 then
672
+ when 27 then
418
673
  begin
419
674
 
420
- @buffers[:string] ||= []
421
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
675
+ trace("PARAMETER parameter_node_eof")
676
+ param_node = parameter()
677
+ completed = true
678
+ prefix_node = @buffers.delete(:param_prefix)
679
+ unless prefix_node.nil?
680
+ param_node <<= prefix_node
681
+ unless prefix_node.complete
682
+ completed = false
683
+ end
684
+ end
685
+
686
+ string_value_node = @buffers.delete(:string)
687
+ unless string_value_node.nil?
688
+ param_node <<= string_value_node
689
+ unless string_value_node.complete
690
+ completed = false
691
+ end
692
+ else
693
+ completed = false
694
+ end
695
+
696
+ param_node.complete = completed
697
+ yield param_node
422
698
  end
423
- when 12 then
699
+ when 28 then
424
700
  begin
425
701
 
426
- unless @buffers[:ident].is_a?(::AST::Node)
427
- @buffers[:ident] ||= []
428
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
429
- end
702
+ trace('IDENTIFIER end_identifier')
703
+ id_end = p
704
+ chars = data[id_start...id_end]
705
+ completed = !chars.empty?
706
+ ast_node = identifier(utf8_string(chars), complete: completed)
707
+ @buffers[:ident] = ast_node
430
708
  end
431
709
  begin
432
710
 
433
- @buffers[:ident] ||= []
711
+ trace('IDENTIFIER yield_identifier')
434
712
  yield @buffers[:ident]
435
713
  end
436
- when 1 then
714
+ when 4 then
437
715
  begin
438
716
 
439
- unless @buffers[:ident].is_a?(::AST::Node)
440
- @buffers[:ident] ||= []
441
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
717
+ trace('STRING a_string_err')
718
+ p_end = p
719
+ chars = data[p_start...p_end]
720
+ ast_node = string(utf8_string(chars), complete: false)
721
+ @buffers[:string] = ast_node
722
+ end
723
+ begin
724
+
725
+ trace("PARAMETER parameter_node_eof")
726
+ param_node = parameter()
727
+ completed = true
728
+ prefix_node = @buffers.delete(:param_prefix)
729
+ unless prefix_node.nil?
730
+ param_node <<= prefix_node
731
+ unless prefix_node.complete
732
+ completed = false
733
+ end
734
+ end
735
+
736
+ string_value_node = @buffers.delete(:string)
737
+ unless string_value_node.nil?
738
+ param_node <<= string_value_node
739
+ unless string_value_node.complete
740
+ completed = false
741
+ end
742
+ else
743
+ completed = false
442
744
  end
745
+
746
+ param_node.complete = completed
747
+ yield param_node
443
748
  end
749
+ when 10 then
444
750
  begin
445
751
 
446
- @buffers[:string] ||= []
447
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
752
+ trace('STRING string_node_err')
753
+ p_end = p
754
+ chars = data[p_start...p_end]
755
+ ast_node = string(utf8_string(chars), complete: false)
756
+ yield ast_node
448
757
  end
449
- when 4 then
450
758
  begin
451
759
 
452
- @buffers[:string] ||= []
453
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
760
+ trace('STRING string_node_eof')
761
+ yield @buffers[:string]
454
762
  end
763
+ when 25 then
455
764
  begin
456
765
 
457
- unless @buffers[:ident].is_a?(::AST::Node)
458
- @buffers[:ident] ||= []
459
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
766
+ trace('IDENTIFIER an_ident_eof')
767
+ if @identifier_started
768
+ id_end = p
769
+ chars = data[id_start...id_end]
770
+ completed = !chars.empty?
771
+ ast_node = identifier(utf8_string(chars), complete: completed)
772
+ @buffers[:ident] = ast_node
460
773
  end
461
774
  end
462
- when 14 then
463
775
  begin
464
776
 
465
- @buffers[:string] ||= []
466
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
777
+ trace('PARAMETER parameter_end')
778
+ param_node = parameter()
779
+ completed = true
780
+ prefix_node = @buffers.delete(:param_prefix)
781
+ unless prefix_node.nil?
782
+ param_node <<= prefix_node
783
+ unless prefix_node.complete
784
+ trace('PN incomplete')
785
+ completed = false
786
+ end
787
+ end
788
+
789
+ value_node = @buffers.delete(:param_value)
790
+ unless value_node.nil?
791
+ param_node <<= value_node
792
+ unless value_node.complete
793
+ trace('VN incomplete')
794
+ completed = false
795
+ end
796
+ else
797
+ completed = false
798
+ end
799
+
800
+ param_node.complete = completed
801
+ @buffers[:parameter] = param_node
467
802
  end
468
803
  begin
469
804
 
470
- @buffers[:string] ||= []
471
- yield @buffers[:string]
805
+ trace('PARAMETER yield_parameter')
806
+ yield @buffers[:parameter]
472
807
  end
473
- end
474
- end
808
+ when 6 then
809
+ begin
475
810
 
476
- end
477
- if _goto_level <= _out
478
- break
479
- end
480
- end
481
- end
811
+ trace('STRING eof_string')
812
+ p_end = p
813
+ chars = data[p_start...p_end]
814
+ ast_node = string(utf8_string(chars), complete: false)
815
+ @buffers[:string] = ast_node
816
+ end
817
+ begin
482
818
 
483
- class << self
484
- attr_accessor :_bel_trans_keys
485
- private :_bel_trans_keys, :_bel_trans_keys=
486
- end
487
- self._bel_trans_keys = [
488
- 0, 0, 9, 122, 9, 122,
489
- 34, 92, 10, 10, 92,
490
- 92, 10, 122, 10, 122,
491
- 48, 122, 10, 122, 34, 34,
492
- 34, 92, 10, 10, 92,
493
- 92, 0, 0, 0, 0,
494
- 0, 0, 0
495
- ]
819
+ trace('STRING a_string_err')
820
+ p_end = p
821
+ chars = data[p_start...p_end]
822
+ ast_node = string(utf8_string(chars), complete: false)
823
+ @buffers[:string] = ast_node
824
+ end
825
+ begin
496
826
 
497
- class << self
498
- attr_accessor :_bel_key_spans
499
- private :_bel_key_spans, :_bel_key_spans=
500
- end
501
- self._bel_key_spans = [
502
- 0, 114, 114, 59, 1, 1, 113, 113,
503
- 75, 113, 1, 59, 1, 1, 0, 0,
504
- 0
505
- ]
827
+ trace("PARAMETER parameter_node_eof")
828
+ param_node = parameter()
829
+ completed = true
830
+ prefix_node = @buffers.delete(:param_prefix)
831
+ unless prefix_node.nil?
832
+ param_node <<= prefix_node
833
+ unless prefix_node.complete
834
+ completed = false
835
+ end
836
+ end
506
837
 
507
- class << self
508
- attr_accessor :_bel_index_offsets
509
- private :_bel_index_offsets, :_bel_index_offsets=
510
- end
511
- self._bel_index_offsets = [
512
- 0, 0, 115, 230, 290, 292, 294, 408,
513
- 522, 598, 712, 714, 774, 776, 778, 779,
514
- 780
515
- ]
838
+ string_value_node = @buffers.delete(:string)
839
+ unless string_value_node.nil?
840
+ param_node <<= string_value_node
841
+ unless string_value_node.complete
842
+ completed = false
843
+ end
844
+ else
845
+ completed = false
846
+ end
516
847
 
517
- class << self
518
- attr_accessor :_bel_indicies
519
- private :_bel_indicies, :_bel_indicies=
520
- end
521
- self._bel_indicies = [
522
- 1, 0, 0, 0, 0, 0, 0, 0,
523
- 0, 0, 0, 0, 0, 0, 0, 0,
524
- 0, 0, 0, 0, 0, 0, 0, 1,
525
- 0, 2, 0, 0, 0, 0, 0, 0,
526
- 0, 0, 0, 0, 0, 0, 0, 3,
527
- 3, 3, 3, 3, 3, 3, 3, 3,
528
- 3, 0, 0, 0, 0, 0, 0, 0,
529
- 3, 3, 3, 3, 3, 3, 3, 3,
530
- 3, 3, 3, 3, 3, 3, 3, 3,
531
- 3, 3, 3, 3, 3, 3, 3, 3,
532
- 3, 3, 0, 0, 0, 0, 3, 0,
533
- 3, 3, 3, 3, 3, 3, 3, 3,
534
- 3, 3, 3, 3, 3, 3, 3, 3,
535
- 3, 3, 3, 3, 3, 3, 3, 3,
536
- 3, 3, 0, 1, 4, 4, 4, 4,
537
- 4, 4, 4, 4, 4, 4, 4, 4,
538
- 4, 4, 4, 4, 4, 4, 4, 4,
539
- 4, 4, 1, 4, 2, 4, 4, 4,
540
- 4, 4, 4, 4, 4, 4, 4, 4,
541
- 4, 4, 5, 5, 5, 5, 5, 5,
542
- 5, 5, 5, 5, 4, 4, 4, 4,
543
- 4, 4, 4, 5, 5, 5, 5, 5,
544
- 5, 5, 5, 5, 5, 5, 5, 5,
545
- 5, 5, 5, 5, 5, 5, 5, 5,
546
- 5, 5, 5, 5, 5, 4, 4, 4,
547
- 4, 5, 4, 5, 5, 5, 5, 5,
548
- 5, 5, 5, 5, 5, 5, 5, 5,
549
- 5, 5, 5, 5, 5, 5, 5, 5,
550
- 5, 5, 5, 5, 5, 4, 7, 6,
551
- 6, 6, 6, 6, 6, 6, 6, 6,
552
- 6, 6, 6, 6, 6, 6, 6, 6,
553
- 6, 6, 6, 6, 6, 6, 6, 6,
554
- 6, 6, 6, 6, 6, 6, 6, 6,
555
- 6, 6, 6, 6, 6, 6, 6, 6,
556
- 6, 6, 6, 6, 6, 6, 6, 6,
557
- 6, 6, 6, 6, 6, 6, 6, 6,
558
- 8, 6, 10, 9, 8, 6, 12, 11,
559
- 11, 11, 11, 11, 11, 11, 11, 11,
560
- 11, 11, 11, 11, 11, 11, 11, 11,
561
- 11, 11, 11, 11, 11, 11, 11, 11,
562
- 11, 11, 11, 11, 11, 11, 11, 11,
563
- 11, 11, 11, 11, 13, 13, 13, 13,
564
- 13, 13, 13, 13, 13, 13, 11, 11,
565
- 11, 11, 11, 11, 11, 13, 13, 13,
566
- 13, 13, 13, 13, 13, 13, 13, 13,
567
- 13, 13, 13, 13, 13, 13, 13, 13,
568
- 13, 13, 13, 13, 13, 13, 13, 11,
569
- 11, 11, 11, 13, 11, 13, 13, 13,
570
- 13, 13, 13, 13, 13, 13, 13, 13,
571
- 13, 13, 13, 13, 13, 13, 13, 13,
572
- 13, 13, 13, 13, 13, 13, 13, 11,
573
- 12, 11, 11, 11, 11, 11, 11, 11,
574
- 11, 11, 11, 11, 11, 11, 11, 11,
575
- 11, 11, 11, 11, 11, 11, 11, 11,
576
- 11, 11, 11, 11, 11, 11, 11, 11,
577
- 11, 11, 11, 11, 11, 11, 14, 14,
578
- 14, 14, 14, 14, 14, 14, 14, 14,
579
- 15, 11, 11, 11, 11, 11, 11, 14,
580
- 14, 14, 14, 14, 14, 14, 14, 14,
581
- 14, 14, 14, 14, 14, 14, 14, 14,
582
- 14, 14, 14, 14, 14, 14, 14, 14,
583
- 14, 11, 11, 11, 11, 14, 11, 14,
584
- 14, 14, 14, 14, 14, 14, 14, 14,
585
- 14, 14, 14, 14, 14, 14, 14, 14,
586
- 14, 14, 14, 14, 14, 14, 14, 14,
587
- 14, 11, 17, 17, 17, 17, 17, 17,
588
- 17, 17, 17, 17, 16, 16, 16, 16,
589
- 16, 16, 16, 17, 17, 17, 17, 17,
590
- 17, 17, 17, 17, 17, 17, 17, 17,
591
- 17, 17, 17, 17, 17, 17, 17, 17,
592
- 17, 17, 17, 17, 17, 16, 16, 16,
593
- 16, 17, 16, 17, 17, 17, 17, 17,
594
- 17, 17, 17, 17, 17, 17, 17, 17,
595
- 17, 17, 17, 17, 17, 17, 17, 17,
596
- 17, 17, 17, 17, 17, 16, 18, 16,
597
- 16, 16, 16, 16, 16, 16, 16, 16,
598
- 16, 16, 16, 16, 16, 16, 16, 16,
599
- 16, 16, 16, 16, 16, 16, 16, 16,
600
- 16, 16, 16, 16, 16, 16, 16, 16,
601
- 16, 16, 16, 16, 19, 19, 19, 19,
602
- 19, 19, 19, 19, 19, 19, 16, 16,
603
- 16, 16, 16, 16, 16, 19, 19, 19,
604
- 19, 19, 19, 19, 19, 19, 19, 19,
605
- 19, 19, 19, 19, 19, 19, 19, 19,
606
- 19, 19, 19, 19, 19, 19, 19, 16,
607
- 16, 16, 16, 19, 16, 19, 19, 19,
608
- 19, 19, 19, 19, 19, 19, 19, 19,
609
- 19, 19, 19, 19, 19, 19, 19, 19,
610
- 19, 19, 19, 19, 19, 19, 19, 16,
611
- 21, 20, 23, 22, 22, 22, 22, 22,
612
- 22, 22, 22, 22, 22, 22, 22, 22,
613
- 22, 22, 22, 22, 22, 22, 22, 22,
614
- 22, 22, 22, 22, 22, 22, 22, 22,
615
- 22, 22, 22, 22, 22, 22, 22, 22,
616
- 22, 22, 22, 22, 22, 22, 22, 22,
617
- 22, 22, 22, 22, 22, 22, 22, 22,
618
- 22, 22, 22, 22, 24, 22, 25, 20,
619
- 24, 22, 26, 26, 26, 0
620
- ]
848
+ param_node.complete = completed
849
+ yield param_node
850
+ end
851
+ when 12 then
852
+ begin
621
853
 
622
- class << self
623
- attr_accessor :_bel_trans_targs
624
- private :_bel_trans_targs, :_bel_trans_targs=
625
- end
626
- self._bel_trans_targs = [
627
- 0, 2, 3, 7, 0, 6, 3, 4,
628
- 5, 0, 14, 0, 14, 6, 7, 2,
629
- 0, 9, 15, 9, 0, 11, 11, 12,
630
- 13, 16, 0
631
- ]
854
+ trace('STRING eof_string')
855
+ p_end = p
856
+ chars = data[p_start...p_end]
857
+ ast_node = string(utf8_string(chars), complete: false)
858
+ @buffers[:string] = ast_node
859
+ end
860
+ begin
632
861
 
633
- class << self
634
- attr_accessor :_bel_trans_actions
635
- private :_bel_trans_actions, :_bel_trans_actions=
636
- end
637
- self._bel_trans_actions = [
638
- 1, 0, 2, 3, 4, 3, 6, 6,
639
- 6, 5, 7, 8, 9, 10, 10, 11,
640
- 12, 3, 13, 10, 14, 2, 6, 6,
641
- 6, 15, 0
642
- ]
862
+ trace('STRING string_node_err')
863
+ p_end = p
864
+ chars = data[p_start...p_end]
865
+ ast_node = string(utf8_string(chars), complete: false)
866
+ yield ast_node
867
+ end
868
+ begin
643
869
 
644
- class << self
645
- attr_accessor :_bel_eof_actions
646
- private :_bel_eof_actions, :_bel_eof_actions=
647
- end
648
- self._bel_eof_actions = [
649
- 0, 1, 4, 5, 5, 5, 8, 8,
650
- 12, 12, 14, 14, 14, 14, 0, 0,
651
- 0
652
- ]
870
+ trace('STRING string_node_eof')
871
+ yield @buffers[:string]
872
+ end
873
+ when 15 then
874
+ begin
653
875
 
654
- class << self
655
- attr_accessor :bel_start
656
- end
657
- self.bel_start = 1;
658
- class << self
659
- attr_accessor :bel_first_final
660
- end
661
- self.bel_first_final = 14;
662
- class << self
663
- attr_accessor :bel_error
664
- end
665
- self.bel_error = 0;
876
+ trace('PARAMETER add_string_param_value')
877
+ string_node = @buffers.delete(:string)
878
+ value_node = value(string_node, complete: string_node.complete)
879
+ @buffers[:param_value] = value_node
880
+ end
881
+ begin
666
882
 
667
- class << self
668
- attr_accessor :bel_en_ident
669
- end
670
- self.bel_en_ident = 8;
671
- class << self
672
- attr_accessor :bel_en_string
673
- end
674
- self.bel_en_string = 10;
675
- class << self
676
- attr_accessor :bel_en_bel_parameter
677
- end
678
- self.bel_en_bel_parameter = 1;
883
+ trace('PARAMETER parameter_end')
884
+ param_node = parameter()
885
+ completed = true
886
+ prefix_node = @buffers.delete(:param_prefix)
887
+ unless prefix_node.nil?
888
+ param_node <<= prefix_node
889
+ unless prefix_node.complete
890
+ trace('PN incomplete')
891
+ completed = false
892
+ end
893
+ end
679
894
 
895
+ value_node = @buffers.delete(:param_value)
896
+ unless value_node.nil?
897
+ param_node <<= value_node
898
+ unless value_node.complete
899
+ trace('VN incomplete')
900
+ completed = false
901
+ end
902
+ else
903
+ completed = false
904
+ end
680
905
 
681
- begin
682
- p ||= 0
683
- pe ||= data.length
684
- cs = bel_start
685
- end
686
-
687
- begin
688
- testEof = false
689
- _slen, _trans, _keys, _inds, _acts, _nacts = nil
690
- _goto_level = 0
691
- _resume = 10
692
- _eof_trans = 15
693
- _again = 20
694
- _test_eof = 30
695
- _out = 40
696
- while true
697
- if _goto_level <= 0
698
- if p == pe
699
- _goto_level = _test_eof
700
- next
701
- end
702
- if cs == 0
703
- _goto_level = _out
704
- next
705
- end
706
- end
707
- if _goto_level <= _resume
708
- _keys = cs << 1
709
- _inds = _bel_index_offsets[cs]
710
- _slen = _bel_key_spans[cs]
711
- _wide = data[p].ord
712
- _trans = if ( _slen > 0 &&
713
- _bel_trans_keys[_keys] <= _wide &&
714
- _wide <= _bel_trans_keys[_keys + 1]
715
- ) then
716
- _bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ]
717
- else
718
- _bel_indicies[ _inds + _slen ]
719
- end
720
- cs = _bel_trans_targs[_trans]
721
- if _bel_trans_actions[_trans] != 0
722
- case _bel_trans_actions[_trans]
723
- when 10 then
724
- begin
725
-
726
- (@buffers[:ident] ||= []) << data[p].ord
727
- end
728
- when 8 then
729
- begin
730
-
731
- unless @buffers[:ident].is_a?(::AST::Node)
732
- @buffers[:ident] ||= []
733
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
734
- end
735
- end
736
- when 6 then
737
- begin
738
-
739
- (@buffers[:string] ||= []) << data[p].ord
740
- end
741
- when 5 then
742
- begin
743
-
744
- @buffers[:string] ||= []
745
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
746
- end
747
- when 3 then
748
- begin
749
-
750
- @buffers[:ident] = []
906
+ param_node.complete = completed
907
+ @buffers[:parameter] = param_node
751
908
  end
752
909
  begin
753
910
 
754
- (@buffers[:ident] ||= []) << data[p].ord
911
+ trace('PARAMETER yield_parameter')
912
+ yield @buffers[:parameter]
755
913
  end
756
- when 13 then
914
+ when 1 then
757
915
  begin
758
916
 
759
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
917
+ trace('IDENTIFIER an_ident_eof')
918
+ if @identifier_started
919
+ id_end = p
920
+ chars = data[id_start...id_end]
921
+ completed = !chars.empty?
922
+ ast_node = identifier(utf8_string(chars), complete: completed)
923
+ @buffers[:ident] = ast_node
924
+ end
760
925
  end
761
926
  begin
762
927
 
763
- yield @buffers[:ident]
928
+ trace('IDENTIFIER an_ident_err')
929
+ id_end = p
930
+ chars = data[id_start...id_end]
931
+ ast_node = identifier(utf8_string(chars), complete: false)
932
+ @buffers[:ident] = ast_node
764
933
  end
765
- when 11 then
766
934
  begin
767
935
 
768
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
936
+ trace('STRING a_string_err')
937
+ p_end = p
938
+ chars = data[p_start...p_end]
939
+ ast_node = string(utf8_string(chars), complete: false)
940
+ @buffers[:string] = ast_node
769
941
  end
770
942
  begin
771
943
 
772
- @buffers[:parameter] = parameter(prefix(@buffers[:ident]))
773
- end
774
- when 12 then
775
- begin
944
+ trace("PARAMETER parameter_node_eof")
945
+ param_node = parameter()
946
+ completed = true
947
+ prefix_node = @buffers.delete(:param_prefix)
948
+ unless prefix_node.nil?
949
+ param_node <<= prefix_node
950
+ unless prefix_node.complete
951
+ completed = false
952
+ end
953
+ end
776
954
 
777
- unless @buffers[:ident].is_a?(::AST::Node)
778
- @buffers[:ident] ||= []
779
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
955
+ string_value_node = @buffers.delete(:string)
956
+ unless string_value_node.nil?
957
+ param_node <<= string_value_node
958
+ unless string_value_node.complete
959
+ completed = false
960
+ end
961
+ else
962
+ completed = false
780
963
  end
781
- end
782
- begin
783
964
 
784
- @buffers[:ident] ||= []
785
- yield @buffers[:ident]
965
+ param_node.complete = completed
966
+ yield param_node
786
967
  end
787
- when 1 then
968
+ when 21 then
788
969
  begin
789
970
 
790
- unless @buffers[:ident].is_a?(::AST::Node)
791
- @buffers[:ident] ||= []
792
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
971
+ trace('IDENTIFIER an_ident_eof')
972
+ if @identifier_started
973
+ id_end = p
974
+ chars = data[id_start...id_end]
975
+ completed = !chars.empty?
976
+ ast_node = identifier(utf8_string(chars), complete: completed)
977
+ @buffers[:ident] = ast_node
793
978
  end
794
979
  end
795
980
  begin
796
981
 
797
- @buffers[:string] ||= []
798
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
982
+ trace('PARAMETER add_prefix')
983
+ ident = @buffers.delete(:ident)
984
+ prefix_node = prefix(ident, complete: ident.complete)
985
+ @buffers[:param_prefix] = prefix_node
799
986
  end
800
- when 2 then
801
987
  begin
802
988
 
803
- @buffers[:string] = []
804
- end
805
- begin
989
+ trace('PARAMETER parameter_end')
990
+ param_node = parameter()
991
+ completed = true
992
+ prefix_node = @buffers.delete(:param_prefix)
993
+ unless prefix_node.nil?
994
+ param_node <<= prefix_node
995
+ unless prefix_node.complete
996
+ trace('PN incomplete')
997
+ completed = false
998
+ end
999
+ end
806
1000
 
807
- (@buffers[:string] ||= []) << data[p].ord
808
- end
809
- when 15 then
810
- begin
1001
+ value_node = @buffers.delete(:param_value)
1002
+ unless value_node.nil?
1003
+ param_node <<= value_node
1004
+ unless value_node.complete
1005
+ trace('VN incomplete')
1006
+ completed = false
1007
+ end
1008
+ else
1009
+ completed = false
1010
+ end
811
1011
 
812
- @buffers[:string] = string(utf8_string(@buffers[:string]))
1012
+ param_node.complete = completed
1013
+ @buffers[:parameter] = param_node
813
1014
  end
814
1015
  begin
815
1016
 
816
- yield @buffers[:string]
1017
+ trace('PARAMETER yield_parameter')
1018
+ yield @buffers[:parameter]
817
1019
  end
818
- when 4 then
1020
+ when 16 then
819
1021
  begin
820
1022
 
821
- @buffers[:string] ||= []
822
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1023
+ trace('IDENTIFIER end_identifier')
1024
+ id_end = p
1025
+ chars = data[id_start...id_end]
1026
+ completed = !chars.empty?
1027
+ ast_node = identifier(utf8_string(chars), complete: completed)
1028
+ @buffers[:ident] = ast_node
823
1029
  end
824
1030
  begin
825
1031
 
826
- unless @buffers[:ident].is_a?(::AST::Node)
827
- @buffers[:ident] ||= []
828
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1032
+ trace('IDENTIFIER an_ident_eof')
1033
+ if @identifier_started
1034
+ id_end = p
1035
+ chars = data[id_start...id_end]
1036
+ completed = !chars.empty?
1037
+ ast_node = identifier(utf8_string(chars), complete: completed)
1038
+ @buffers[:ident] = ast_node
829
1039
  end
830
1040
  end
831
- when 14 then
832
- begin
833
-
834
- @buffers[:string] ||= []
835
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
836
- end
837
- begin
838
-
839
- @buffers[:string] ||= []
840
- yield @buffers[:string]
841
- end
842
- when 9 then
843
- begin
844
-
845
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
846
- end
847
1041
  begin
848
1042
 
849
- @buffers[:parameter] ||= parameter(prefix(nil))
850
- @buffers[:parameter] = @buffers[:parameter] << value(@buffers[:ident])
1043
+ trace('PARAMETER add_ident_param_value')
1044
+ ident = @buffers.delete(:ident)
1045
+ value_node = value(ident, complete: ident.complete)
1046
+ @buffers[:param_value] = value_node
851
1047
  end
852
1048
  begin
853
1049
 
854
- yield @buffers[:parameter]
855
- end
856
- when 7 then
857
- begin
1050
+ trace('PARAMETER parameter_end')
1051
+ param_node = parameter()
1052
+ completed = true
1053
+ prefix_node = @buffers.delete(:param_prefix)
1054
+ unless prefix_node.nil?
1055
+ param_node <<= prefix_node
1056
+ unless prefix_node.complete
1057
+ trace('PN incomplete')
1058
+ completed = false
1059
+ end
1060
+ end
858
1061
 
859
- @buffers[:string] = string(utf8_string(@buffers[:string]))
860
- end
861
- begin
1062
+ value_node = @buffers.delete(:param_value)
1063
+ unless value_node.nil?
1064
+ param_node <<= value_node
1065
+ unless value_node.complete
1066
+ trace('VN incomplete')
1067
+ completed = false
1068
+ end
1069
+ else
1070
+ completed = false
1071
+ end
862
1072
 
863
- @buffers[:parameter] ||= parameter(prefix(nil))
864
- @buffers[:parameter] = @buffers[:parameter] << value(@buffers[:string])
1073
+ param_node.complete = completed
1074
+ @buffers[:parameter] = param_node
865
1075
  end
866
1076
  begin
867
1077
 
1078
+ trace('PARAMETER yield_parameter')
868
1079
  yield @buffers[:parameter]
869
1080
  end
870
- end
871
- end
872
- end
873
- if _goto_level <= _again
874
- if cs == 0
875
- _goto_level = _out
876
- next
877
- end
878
- p += 1
879
- if p != pe
880
- _goto_level = _resume
881
- next
882
- end
883
- end
884
- if _goto_level <= _test_eof
885
- if p == eof
886
- case _bel_eof_actions[cs]
887
- when 8 then
1081
+ when 19 then
888
1082
  begin
889
1083
 
890
- unless @buffers[:ident].is_a?(::AST::Node)
891
- @buffers[:ident] ||= []
892
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1084
+ trace('IDENTIFIER an_ident_eof')
1085
+ if @identifier_started
1086
+ id_end = p
1087
+ chars = data[id_start...id_end]
1088
+ completed = !chars.empty?
1089
+ ast_node = identifier(utf8_string(chars), complete: completed)
1090
+ @buffers[:ident] = ast_node
893
1091
  end
894
1092
  end
895
- when 5 then
896
- begin
897
-
898
- @buffers[:string] ||= []
899
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
900
- end
901
- when 12 then
902
1093
  begin
903
1094
 
904
- unless @buffers[:ident].is_a?(::AST::Node)
905
- @buffers[:ident] ||= []
906
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
907
- end
1095
+ trace('IDENTIFIER end_identifier')
1096
+ id_end = p
1097
+ chars = data[id_start...id_end]
1098
+ completed = !chars.empty?
1099
+ ast_node = identifier(utf8_string(chars), complete: completed)
1100
+ @buffers[:ident] = ast_node
908
1101
  end
909
1102
  begin
910
1103
 
911
- @buffers[:ident] ||= []
912
- yield @buffers[:ident]
1104
+ trace('PARAMETER add_ident_param_value')
1105
+ ident = @buffers.delete(:ident)
1106
+ value_node = value(ident, complete: ident.complete)
1107
+ @buffers[:param_value] = value_node
913
1108
  end
914
- when 1 then
915
1109
  begin
916
1110
 
917
- unless @buffers[:ident].is_a?(::AST::Node)
918
- @buffers[:ident] ||= []
919
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1111
+ trace('PARAMETER parameter_end')
1112
+ param_node = parameter()
1113
+ completed = true
1114
+ prefix_node = @buffers.delete(:param_prefix)
1115
+ unless prefix_node.nil?
1116
+ param_node <<= prefix_node
1117
+ unless prefix_node.complete
1118
+ trace('PN incomplete')
1119
+ completed = false
1120
+ end
920
1121
  end
921
- end
922
- begin
923
-
924
- @buffers[:string] ||= []
925
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
926
- end
927
- when 4 then
928
- begin
929
-
930
- @buffers[:string] ||= []
931
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
932
- end
933
- begin
934
1122
 
935
- unless @buffers[:ident].is_a?(::AST::Node)
936
- @buffers[:ident] ||= []
937
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1123
+ value_node = @buffers.delete(:param_value)
1124
+ unless value_node.nil?
1125
+ param_node <<= value_node
1126
+ unless value_node.complete
1127
+ trace('VN incomplete')
1128
+ completed = false
1129
+ end
1130
+ else
1131
+ completed = false
938
1132
  end
939
- end
940
- when 14 then
941
- begin
942
1133
 
943
- @buffers[:string] ||= []
944
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1134
+ param_node.complete = completed
1135
+ @buffers[:parameter] = param_node
945
1136
  end
946
1137
  begin
947
1138
 
948
- @buffers[:string] ||= []
949
- yield @buffers[:string]
1139
+ trace('PARAMETER yield_parameter')
1140
+ yield @buffers[:parameter]
950
1141
  end
951
1142
  end
952
1143
  end
@@ -958,55 +1149,20 @@ begin
958
1149
  end
959
1150
  end
960
1151
 
961
-
962
- =end
963
- # end: ragel
964
-
965
- require_relative '../ast/node'
966
- require_relative '../mixin/buffer'
967
- require_relative '../nonblocking_io_wrapper'
968
-
969
- module BELParser
970
- module Parsers
971
- module Expression
972
- module Parameter
973
-
974
- class << self
975
-
976
- MAX_LENGTH = 1024 * 128 # 128K
977
-
978
- def parse(content)
979
- return nil unless content
980
-
981
- Parser.new(content).each do |obj|
982
- yield obj
983
- end
984
- end
985
- end
986
-
987
- private
988
-
989
- class Parser
990
- include Enumerable
991
- include BELParser::Parsers::Buffer
992
- include BELParser::Parsers::AST::Sexp
993
-
994
- def initialize(content)
995
- @content = content
996
- # begin: ragel
997
-
998
1152
  class << self
999
1153
  attr_accessor :_bel_trans_keys
1000
1154
  private :_bel_trans_keys, :_bel_trans_keys=
1001
1155
  end
1002
1156
  self._bel_trans_keys = [
1003
1157
  0, 0, 9, 122, 9, 122,
1004
- 34, 92, 10, 10, 92,
1005
- 92, 10, 122, 10, 122,
1006
- 48, 122, 10, 122, 34, 34,
1007
- 34, 92, 10, 10, 92,
1008
- 92, 0, 0, 0, 0,
1009
- 0, 0, 0
1158
+ 9, 34, 34, 92, 34,
1159
+ 92, 0, 0, 48, 122,
1160
+ 9, 34, 34, 92, 34, 92,
1161
+ 0, 0, 10, 10, 0,
1162
+ 0, 10, 122, 10, 122,
1163
+ 9, 122, 9, 122, 9, 34,
1164
+ 10, 122, 0, 0, 0,
1165
+ 0, 0
1010
1166
  ]
1011
1167
 
1012
1168
  class << self
@@ -1014,9 +1170,9 @@ class << self
1014
1170
  private :_bel_key_spans, :_bel_key_spans=
1015
1171
  end
1016
1172
  self._bel_key_spans = [
1017
- 0, 114, 114, 59, 1, 1, 113, 113,
1018
- 75, 113, 1, 59, 1, 1, 0, 0,
1019
- 0
1173
+ 0, 114, 114, 26, 59, 59, 0, 75,
1174
+ 26, 59, 59, 0, 1, 0, 113, 113,
1175
+ 114, 114, 26, 113, 0, 0
1020
1176
  ]
1021
1177
 
1022
1178
  class << self
@@ -1024,9 +1180,9 @@ class << self
1024
1180
  private :_bel_index_offsets, :_bel_index_offsets=
1025
1181
  end
1026
1182
  self._bel_index_offsets = [
1027
- 0, 0, 115, 230, 290, 292, 294, 408,
1028
- 522, 598, 712, 714, 774, 776, 778, 779,
1029
- 780
1183
+ 0, 0, 115, 230, 257, 317, 377, 378,
1184
+ 454, 481, 541, 601, 602, 604, 605, 719,
1185
+ 833, 948, 1063, 1090, 1204, 1205
1030
1186
  ]
1031
1187
 
1032
1188
  class << self
@@ -1034,104 +1190,157 @@ class << self
1034
1190
  private :_bel_indicies, :_bel_indicies=
1035
1191
  end
1036
1192
  self._bel_indicies = [
1037
- 1, 0, 0, 0, 0, 0, 0, 0,
1193
+ 1, 2, 2, 2, 2, 0, 0, 0,
1038
1194
  0, 0, 0, 0, 0, 0, 0, 0,
1039
1195
  0, 0, 0, 0, 0, 0, 0, 1,
1040
- 0, 2, 0, 0, 0, 0, 0, 0,
1041
- 0, 0, 0, 0, 0, 0, 0, 3,
1042
- 3, 3, 3, 3, 3, 3, 3, 3,
1043
- 3, 0, 0, 0, 0, 0, 0, 0,
1044
- 3, 3, 3, 3, 3, 3, 3, 3,
1045
- 3, 3, 3, 3, 3, 3, 3, 3,
1046
- 3, 3, 3, 3, 3, 3, 3, 3,
1047
- 3, 3, 0, 0, 0, 0, 3, 0,
1048
- 3, 3, 3, 3, 3, 3, 3, 3,
1049
- 3, 3, 3, 3, 3, 3, 3, 3,
1050
- 3, 3, 3, 3, 3, 3, 3, 3,
1051
- 3, 3, 0, 1, 4, 4, 4, 4,
1196
+ 0, 3, 0, 0, 0, 0, 0, 0,
1197
+ 0, 0, 0, 0, 0, 0, 0, 4,
1198
+ 4, 4, 4, 4, 4, 4, 4, 4,
1199
+ 4, 0, 0, 0, 0, 0, 0, 0,
1200
+ 4, 4, 4, 4, 4, 4, 4, 4,
1052
1201
  4, 4, 4, 4, 4, 4, 4, 4,
1053
1202
  4, 4, 4, 4, 4, 4, 4, 4,
1054
- 4, 4, 1, 4, 2, 4, 4, 4,
1203
+ 4, 4, 0, 0, 0, 0, 4, 0,
1055
1204
  4, 4, 4, 4, 4, 4, 4, 4,
1056
- 4, 4, 5, 5, 5, 5, 5, 5,
1057
- 5, 5, 5, 5, 4, 4, 4, 4,
1058
- 4, 4, 4, 5, 5, 5, 5, 5,
1205
+ 4, 4, 4, 4, 4, 4, 4, 4,
1206
+ 4, 4, 4, 4, 4, 4, 4, 4,
1207
+ 4, 4, 0, 1, 2, 2, 2, 2,
1208
+ 0, 0, 0, 0, 0, 0, 0, 0,
1209
+ 0, 0, 0, 0, 0, 0, 0, 0,
1210
+ 0, 0, 1, 0, 3, 0, 0, 0,
1211
+ 0, 0, 0, 0, 0, 0, 0, 0,
1212
+ 0, 0, 5, 5, 5, 5, 5, 5,
1213
+ 5, 5, 5, 5, 0, 0, 0, 0,
1214
+ 0, 0, 0, 5, 5, 5, 5, 5,
1059
1215
  5, 5, 5, 5, 5, 5, 5, 5,
1060
1216
  5, 5, 5, 5, 5, 5, 5, 5,
1061
- 5, 5, 5, 5, 5, 4, 4, 4,
1062
- 4, 5, 4, 5, 5, 5, 5, 5,
1217
+ 5, 5, 5, 5, 5, 0, 0, 0,
1218
+ 0, 5, 0, 5, 5, 5, 5, 5,
1063
1219
  5, 5, 5, 5, 5, 5, 5, 5,
1064
1220
  5, 5, 5, 5, 5, 5, 5, 5,
1065
- 5, 5, 5, 5, 5, 4, 7, 6,
1066
- 6, 6, 6, 6, 6, 6, 6, 6,
1067
- 6, 6, 6, 6, 6, 6, 6, 6,
1068
- 6, 6, 6, 6, 6, 6, 6, 6,
1221
+ 5, 5, 5, 5, 5, 0, 2, 2,
1222
+ 2, 2, 2, 6, 6, 6, 6, 6,
1069
1223
  6, 6, 6, 6, 6, 6, 6, 6,
1070
- 6, 6, 6, 6, 6, 6, 6, 6,
1071
- 6, 6, 6, 6, 6, 6, 6, 6,
1072
- 6, 6, 6, 6, 6, 6, 6, 6,
1073
- 8, 6, 10, 9, 8, 6, 12, 11,
1074
- 11, 11, 11, 11, 11, 11, 11, 11,
1075
- 11, 11, 11, 11, 11, 11, 11, 11,
1076
- 11, 11, 11, 11, 11, 11, 11, 11,
1077
- 11, 11, 11, 11, 11, 11, 11, 11,
1078
- 11, 11, 11, 11, 13, 13, 13, 13,
1079
- 13, 13, 13, 13, 13, 13, 11, 11,
1080
- 11, 11, 11, 11, 11, 13, 13, 13,
1224
+ 6, 6, 6, 6, 6, 2, 6, 3,
1225
+ 6, 8, 7, 7, 7, 7, 7, 7,
1226
+ 7, 7, 7, 7, 7, 7, 7, 7,
1227
+ 7, 7, 7, 7, 7, 7, 7, 7,
1228
+ 7, 7, 7, 7, 7, 7, 7, 7,
1229
+ 7, 7, 7, 7, 7, 7, 7, 7,
1230
+ 7, 7, 7, 7, 7, 7, 7, 7,
1231
+ 7, 7, 7, 7, 7, 7, 7, 7,
1232
+ 7, 7, 7, 9, 7, 11, 10, 10,
1233
+ 10, 10, 10, 10, 10, 10, 10, 10,
1234
+ 10, 10, 10, 10, 10, 10, 10, 10,
1235
+ 10, 10, 10, 10, 10, 10, 10, 10,
1236
+ 10, 10, 10, 10, 10, 10, 10, 10,
1237
+ 10, 10, 10, 10, 10, 10, 10, 10,
1238
+ 10, 10, 10, 10, 10, 10, 10, 10,
1239
+ 10, 10, 10, 10, 10, 10, 10, 12,
1240
+ 10, 10, 13, 13, 13, 13, 13, 13,
1241
+ 13, 13, 13, 13, 14, 14, 14, 14,
1242
+ 14, 14, 14, 13, 13, 13, 13, 13,
1081
1243
  13, 13, 13, 13, 13, 13, 13, 13,
1082
1244
  13, 13, 13, 13, 13, 13, 13, 13,
1083
- 13, 13, 13, 13, 13, 13, 13, 11,
1084
- 11, 11, 11, 13, 11, 13, 13, 13,
1245
+ 13, 13, 13, 13, 13, 14, 14, 14,
1246
+ 14, 13, 14, 13, 13, 13, 13, 13,
1085
1247
  13, 13, 13, 13, 13, 13, 13, 13,
1086
1248
  13, 13, 13, 13, 13, 13, 13, 13,
1087
- 13, 13, 13, 13, 13, 13, 13, 11,
1088
- 12, 11, 11, 11, 11, 11, 11, 11,
1089
- 11, 11, 11, 11, 11, 11, 11, 11,
1090
- 11, 11, 11, 11, 11, 11, 11, 11,
1091
- 11, 11, 11, 11, 11, 11, 11, 11,
1092
- 11, 11, 11, 11, 11, 11, 14, 14,
1093
- 14, 14, 14, 14, 14, 14, 14, 14,
1094
- 15, 11, 11, 11, 11, 11, 11, 14,
1095
- 14, 14, 14, 14, 14, 14, 14, 14,
1096
- 14, 14, 14, 14, 14, 14, 14, 14,
1097
- 14, 14, 14, 14, 14, 14, 14, 14,
1098
- 14, 11, 11, 11, 11, 14, 11, 14,
1099
- 14, 14, 14, 14, 14, 14, 14, 14,
1100
- 14, 14, 14, 14, 14, 14, 14, 14,
1101
- 14, 14, 14, 14, 14, 14, 14, 14,
1102
- 14, 11, 17, 17, 17, 17, 17, 17,
1103
- 17, 17, 17, 17, 16, 16, 16, 16,
1104
- 16, 16, 16, 17, 17, 17, 17, 17,
1105
- 17, 17, 17, 17, 17, 17, 17, 17,
1106
- 17, 17, 17, 17, 17, 17, 17, 17,
1107
- 17, 17, 17, 17, 17, 16, 16, 16,
1108
- 16, 17, 16, 17, 17, 17, 17, 17,
1109
- 17, 17, 17, 17, 17, 17, 17, 17,
1110
- 17, 17, 17, 17, 17, 17, 17, 17,
1111
- 17, 17, 17, 17, 17, 16, 18, 16,
1112
- 16, 16, 16, 16, 16, 16, 16, 16,
1113
- 16, 16, 16, 16, 16, 16, 16, 16,
1114
- 16, 16, 16, 16, 16, 16, 16, 16,
1115
- 16, 16, 16, 16, 16, 16, 16, 16,
1116
- 16, 16, 16, 16, 19, 19, 19, 19,
1117
- 19, 19, 19, 19, 19, 19, 16, 16,
1118
- 16, 16, 16, 16, 16, 19, 19, 19,
1119
- 19, 19, 19, 19, 19, 19, 19, 19,
1120
- 19, 19, 19, 19, 19, 19, 19, 19,
1121
- 19, 19, 19, 19, 19, 19, 19, 16,
1122
- 16, 16, 16, 19, 16, 19, 19, 19,
1123
- 19, 19, 19, 19, 19, 19, 19, 19,
1124
- 19, 19, 19, 19, 19, 19, 19, 19,
1125
- 19, 19, 19, 19, 19, 19, 19, 16,
1126
- 21, 20, 23, 22, 22, 22, 22, 22,
1127
- 22, 22, 22, 22, 22, 22, 22, 22,
1128
- 22, 22, 22, 22, 22, 22, 22, 22,
1129
- 22, 22, 22, 22, 22, 22, 22, 22,
1130
- 22, 22, 22, 22, 22, 22, 22, 22,
1131
- 22, 22, 22, 22, 22, 22, 22, 22,
1132
- 22, 22, 22, 22, 22, 22, 22, 22,
1133
- 22, 22, 22, 22, 24, 22, 25, 20,
1134
- 24, 22, 26, 26, 26, 0
1249
+ 13, 13, 13, 13, 13, 14, 16, 16,
1250
+ 16, 16, 16, 15, 15, 15, 15, 15,
1251
+ 15, 15, 15, 15, 15, 15, 15, 15,
1252
+ 15, 15, 15, 15, 15, 16, 15, 17,
1253
+ 15, 19, 18, 18, 18, 18, 18, 18,
1254
+ 18, 18, 18, 18, 18, 18, 18, 18,
1255
+ 18, 18, 18, 18, 18, 18, 18, 18,
1256
+ 18, 18, 18, 18, 18, 18, 18, 18,
1257
+ 18, 18, 18, 18, 18, 18, 18, 18,
1258
+ 18, 18, 18, 18, 18, 18, 18, 18,
1259
+ 18, 18, 18, 18, 18, 18, 18, 18,
1260
+ 18, 18, 18, 20, 18, 22, 21, 21,
1261
+ 21, 21, 21, 21, 21, 21, 21, 21,
1262
+ 21, 21, 21, 21, 21, 21, 21, 21,
1263
+ 21, 21, 21, 21, 21, 21, 21, 21,
1264
+ 21, 21, 21, 21, 21, 21, 21, 21,
1265
+ 21, 21, 21, 21, 21, 21, 21, 21,
1266
+ 21, 21, 21, 21, 21, 21, 21, 21,
1267
+ 21, 21, 21, 21, 21, 21, 21, 23,
1268
+ 21, 21, 24, 6, 14, 26, 25, 25,
1269
+ 25, 25, 25, 25, 25, 25, 25, 25,
1270
+ 25, 25, 25, 25, 25, 25, 25, 25,
1271
+ 25, 25, 25, 25, 25, 25, 25, 25,
1272
+ 25, 25, 25, 25, 25, 25, 25, 25,
1273
+ 25, 25, 25, 27, 27, 27, 27, 27,
1274
+ 27, 27, 27, 27, 27, 25, 25, 25,
1275
+ 25, 25, 25, 25, 27, 27, 27, 27,
1276
+ 27, 27, 27, 27, 27, 27, 27, 27,
1277
+ 27, 27, 27, 27, 27, 27, 27, 27,
1278
+ 27, 27, 27, 27, 27, 27, 25, 25,
1279
+ 25, 25, 27, 25, 27, 27, 27, 27,
1280
+ 27, 27, 27, 27, 27, 27, 27, 27,
1281
+ 27, 27, 27, 27, 27, 27, 27, 27,
1282
+ 27, 27, 27, 27, 27, 27, 25, 26,
1283
+ 25, 25, 25, 25, 25, 25, 25, 25,
1284
+ 25, 25, 25, 25, 25, 25, 25, 25,
1285
+ 25, 25, 25, 25, 25, 25, 25, 25,
1286
+ 25, 25, 25, 25, 25, 25, 25, 25,
1287
+ 25, 25, 25, 25, 25, 28, 28, 28,
1288
+ 28, 28, 28, 28, 28, 28, 28, 29,
1289
+ 25, 25, 25, 25, 25, 25, 28, 28,
1290
+ 28, 28, 28, 28, 28, 28, 28, 28,
1291
+ 28, 28, 28, 28, 28, 28, 28, 28,
1292
+ 28, 28, 28, 28, 28, 28, 28, 28,
1293
+ 25, 25, 25, 25, 28, 25, 28, 28,
1294
+ 28, 28, 28, 28, 28, 28, 28, 28,
1295
+ 28, 28, 28, 28, 28, 28, 28, 28,
1296
+ 28, 28, 28, 28, 28, 28, 28, 28,
1297
+ 25, 30, 31, 32, 32, 32, 0, 0,
1298
+ 0, 0, 0, 0, 0, 0, 0, 0,
1299
+ 0, 0, 0, 0, 0, 0, 0, 0,
1300
+ 30, 0, 33, 0, 0, 0, 0, 0,
1301
+ 0, 0, 0, 0, 0, 0, 0, 0,
1302
+ 34, 34, 34, 34, 34, 34, 34, 34,
1303
+ 34, 34, 0, 0, 0, 0, 0, 0,
1304
+ 0, 34, 34, 34, 34, 34, 34, 34,
1305
+ 34, 34, 34, 34, 34, 34, 34, 34,
1306
+ 34, 34, 34, 34, 34, 34, 34, 34,
1307
+ 34, 34, 34, 0, 0, 0, 0, 34,
1308
+ 0, 34, 34, 34, 34, 34, 34, 34,
1309
+ 34, 34, 34, 34, 34, 34, 34, 34,
1310
+ 34, 34, 34, 34, 34, 34, 34, 34,
1311
+ 34, 34, 34, 0, 35, 36, 2, 2,
1312
+ 2, 0, 0, 0, 0, 0, 0, 0,
1313
+ 0, 0, 0, 0, 0, 0, 0, 0,
1314
+ 0, 0, 0, 35, 0, 3, 0, 0,
1315
+ 0, 0, 0, 0, 0, 0, 0, 0,
1316
+ 0, 0, 0, 5, 5, 5, 5, 5,
1317
+ 5, 5, 5, 5, 5, 0, 0, 0,
1318
+ 0, 0, 0, 0, 5, 5, 5, 5,
1319
+ 5, 5, 5, 5, 5, 5, 5, 5,
1320
+ 5, 5, 5, 5, 5, 5, 5, 5,
1321
+ 5, 5, 5, 5, 5, 5, 0, 0,
1322
+ 0, 0, 5, 0, 5, 5, 5, 5,
1323
+ 5, 5, 5, 5, 5, 5, 5, 5,
1324
+ 5, 5, 5, 5, 5, 5, 5, 5,
1325
+ 5, 5, 5, 5, 5, 5, 0, 2,
1326
+ 2, 2, 2, 2, 6, 6, 6, 6,
1327
+ 6, 6, 6, 6, 6, 6, 6, 6,
1328
+ 6, 6, 6, 6, 6, 6, 2, 6,
1329
+ 3, 6, 38, 37, 37, 37, 37, 37,
1330
+ 37, 37, 37, 37, 37, 37, 37, 37,
1331
+ 37, 37, 37, 37, 37, 37, 37, 37,
1332
+ 37, 37, 37, 37, 37, 37, 37, 37,
1333
+ 37, 37, 37, 37, 37, 37, 37, 37,
1334
+ 39, 39, 39, 39, 39, 39, 39, 39,
1335
+ 39, 39, 37, 37, 37, 37, 37, 37,
1336
+ 37, 39, 39, 39, 39, 39, 39, 39,
1337
+ 39, 39, 39, 39, 39, 39, 39, 39,
1338
+ 39, 39, 39, 39, 39, 39, 39, 39,
1339
+ 39, 39, 39, 37, 37, 37, 37, 39,
1340
+ 37, 39, 39, 39, 39, 39, 39, 39,
1341
+ 39, 39, 39, 39, 39, 39, 39, 39,
1342
+ 39, 39, 39, 39, 39, 39, 39, 39,
1343
+ 39, 39, 39, 37, 37, 15, 0
1135
1344
  ]
1136
1345
 
1137
1346
  class << self
@@ -1139,10 +1348,11 @@ class << self
1139
1348
  private :_bel_trans_targs, :_bel_trans_targs=
1140
1349
  end
1141
1350
  self._bel_trans_targs = [
1142
- 0, 2, 3, 7, 0, 6, 3, 4,
1143
- 5, 0, 14, 0, 14, 6, 7, 2,
1144
- 0, 9, 15, 9, 0, 11, 11, 12,
1145
- 13, 16, 0
1351
+ 0, 2, 3, 4, 15, 14, 0, 5,
1352
+ 12, 6, 5, 12, 6, 19, 0, 0,
1353
+ 8, 9, 10, 21, 11, 10, 21, 11,
1354
+ 13, 0, 13, 14, 15, 16, 17, 18,
1355
+ 3, 4, 14, 17, 18, 0, 20, 19
1146
1356
  ]
1147
1357
 
1148
1358
  class << self
@@ -1150,10 +1360,11 @@ class << self
1150
1360
  private :_bel_trans_actions, :_bel_trans_actions=
1151
1361
  end
1152
1362
  self._bel_trans_actions = [
1153
- 1, 0, 2, 3, 4, 3, 6, 6,
1154
- 6, 5, 7, 8, 9, 10, 10, 11,
1155
- 12, 3, 13, 10, 14, 2, 6, 6,
1156
- 6, 15, 0
1363
+ 2, 0, 0, 0, 3, 3, 5, 7,
1364
+ 8, 7, 0, 9, 0, 3, 0, 11,
1365
+ 0, 0, 7, 13, 7, 0, 14, 0,
1366
+ 15, 17, 18, 0, 0, 20, 22, 23,
1367
+ 22, 22, 24, 0, 26, 29, 20, 0
1157
1368
  ]
1158
1369
 
1159
1370
  class << self
@@ -1161,9 +1372,9 @@ class << self
1161
1372
  private :_bel_eof_actions, :_bel_eof_actions=
1162
1373
  end
1163
1374
  self._bel_eof_actions = [
1164
- 0, 1, 4, 5, 5, 5, 8, 8,
1165
- 12, 12, 14, 14, 14, 14, 0, 0,
1166
- 0
1375
+ 0, 1, 1, 4, 6, 6, 6, 0,
1376
+ 10, 12, 12, 12, 15, 0, 16, 19,
1377
+ 21, 25, 27, 28, 30, 0
1167
1378
  ]
1168
1379
 
1169
1380
  class << self
@@ -1173,45 +1384,32 @@ self.bel_start = 1;
1173
1384
  class << self
1174
1385
  attr_accessor :bel_first_final
1175
1386
  end
1176
- self.bel_first_final = 14;
1387
+ self.bel_first_final = 12;
1177
1388
  class << self
1178
1389
  attr_accessor :bel_error
1179
1390
  end
1180
1391
  self.bel_error = 0;
1181
1392
 
1182
1393
  class << self
1183
- attr_accessor :bel_en_ident
1394
+ attr_accessor :bel_en_ident_node
1184
1395
  end
1185
- self.bel_en_ident = 8;
1396
+ self.bel_en_ident_node = 7;
1186
1397
  class << self
1187
- attr_accessor :bel_en_string
1398
+ attr_accessor :bel_en_string_node
1188
1399
  end
1189
- self.bel_en_string = 10;
1400
+ self.bel_en_string_node = 8;
1190
1401
  class << self
1191
- attr_accessor :bel_en_bel_parameter
1402
+ attr_accessor :bel_en_parameter_node
1192
1403
  end
1193
- self.bel_en_bel_parameter = 1;
1194
-
1195
-
1196
- # end: ragel
1197
- end
1404
+ self.bel_en_parameter_node = 1;
1198
1405
 
1199
- def each
1200
- @buffers = {}
1201
- data = @content.unpack('C*')
1202
- p = 0
1203
- pe = data.length
1204
- eof = data.length
1205
1406
 
1206
- # begin: ragel
1207
-
1208
1407
  begin
1209
1408
  p ||= 0
1210
1409
  pe ||= data.length
1211
1410
  cs = bel_start
1212
1411
  end
1213
1412
 
1214
-
1215
1413
  begin
1216
1414
  testEof = false
1217
1415
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1248,153 +1446,1557 @@ begin
1248
1446
  cs = _bel_trans_targs[_trans]
1249
1447
  if _bel_trans_actions[_trans] != 0
1250
1448
  case _bel_trans_actions[_trans]
1251
- when 10 then
1449
+ when 3 then
1252
1450
  begin
1253
1451
 
1254
- (@buffers[:ident] ||= []) << data[p].ord
1452
+ trace('IDENTIFIER start_identifier')
1453
+ @identifier_started = true
1454
+ id_start = p;
1255
1455
  end
1256
- when 8 then
1456
+ when 20 then
1257
1457
  begin
1258
1458
 
1259
- unless @buffers[:ident].is_a?(::AST::Node)
1260
- @buffers[:ident] ||= []
1261
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1262
- end
1459
+ trace('IDENTIFIER end_identifier')
1460
+ id_end = p
1461
+ chars = data[id_start...id_end]
1462
+ completed = !chars.empty?
1463
+ ast_node = identifier(utf8_string(chars), complete: completed)
1464
+ @buffers[:ident] = ast_node
1263
1465
  end
1264
- when 6 then
1466
+ when 17 then
1265
1467
  begin
1266
1468
 
1267
- (@buffers[:string] ||= []) << data[p].ord
1469
+ trace('IDENTIFIER an_ident_err')
1470
+ id_end = p
1471
+ chars = data[id_start...id_end]
1472
+ ast_node = identifier(utf8_string(chars), complete: false)
1473
+ @buffers[:ident] = ast_node
1268
1474
  end
1269
- when 5 then
1475
+ when 29 then
1270
1476
  begin
1271
1477
 
1272
- @buffers[:string] ||= []
1273
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1478
+ trace('IDENTIFIER ident_node_err')
1479
+ id_end = p
1480
+ chars = data[id_start...id_end]
1481
+ ast_node = identifier(utf8_string(chars), complete: false)
1482
+ yield ast_node
1274
1483
  end
1275
- when 3 then
1484
+ when 7 then
1276
1485
  begin
1277
1486
 
1278
- @buffers[:ident] = []
1487
+ trace('STRING start_string')
1488
+ @string_opened = true
1489
+ p_start = p
1279
1490
  end
1491
+ when 5 then
1280
1492
  begin
1281
1493
 
1282
- (@buffers[:ident] ||= []) << data[p].ord
1494
+ trace('STRING a_string_err')
1495
+ p_end = p
1496
+ chars = data[p_start...p_end]
1497
+ ast_node = string(utf8_string(chars), complete: false)
1498
+ @buffers[:string] = ast_node
1283
1499
  end
1284
- when 13 then
1500
+ when 11 then
1285
1501
  begin
1286
1502
 
1287
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1503
+ trace('STRING string_node_err')
1504
+ p_end = p
1505
+ chars = data[p_start...p_end]
1506
+ ast_node = string(utf8_string(chars), complete: false)
1507
+ yield ast_node
1288
1508
  end
1509
+ when 22 then
1289
1510
  begin
1290
1511
 
1291
- yield @buffers[:ident]
1512
+ trace('PARAMETER add_prefix')
1513
+ ident = @buffers.delete(:ident)
1514
+ prefix_node = prefix(ident, complete: ident.complete)
1515
+ @buffers[:param_prefix] = prefix_node
1292
1516
  end
1293
- when 11 then
1517
+ when 2 then
1294
1518
  begin
1295
1519
 
1296
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1520
+ trace('IDENTIFIER an_ident_err')
1521
+ id_end = p
1522
+ chars = data[id_start...id_end]
1523
+ ast_node = identifier(utf8_string(chars), complete: false)
1524
+ @buffers[:ident] = ast_node
1297
1525
  end
1298
1526
  begin
1299
1527
 
1300
- @buffers[:parameter] = parameter(prefix(@buffers[:ident]))
1528
+ trace('STRING a_string_err')
1529
+ p_end = p
1530
+ chars = data[p_start...p_end]
1531
+ ast_node = string(utf8_string(chars), complete: false)
1532
+ @buffers[:string] = ast_node
1301
1533
  end
1302
- when 12 then
1534
+ when 9 then
1303
1535
  begin
1304
1536
 
1305
- unless @buffers[:ident].is_a?(::AST::Node)
1306
- @buffers[:ident] ||= []
1307
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1308
- end
1537
+ trace('STRING stop_string')
1538
+ @string_closed = true
1539
+ p_end = p
1309
1540
  end
1310
1541
  begin
1311
1542
 
1312
- @buffers[:ident] ||= []
1313
- yield @buffers[:ident]
1543
+ trace('STRING string_end')
1544
+ completed = @string_opened && @string_closed
1545
+ chars = data[p_start...p_end]
1546
+ ast_node = string(utf8_string(chars), complete: true)
1547
+ @buffers[:string] = ast_node
1314
1548
  end
1315
- when 1 then
1549
+ when 26 then
1316
1550
  begin
1317
1551
 
1318
- unless @buffers[:ident].is_a?(::AST::Node)
1319
- @buffers[:ident] ||= []
1320
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1552
+ trace('PARAMETER parameter_end')
1553
+ param_node = parameter()
1554
+ completed = true
1555
+ prefix_node = @buffers.delete(:param_prefix)
1556
+ unless prefix_node.nil?
1557
+ param_node <<= prefix_node
1558
+ unless prefix_node.complete
1559
+ trace('PN incomplete')
1560
+ completed = false
1561
+ end
1562
+ end
1563
+
1564
+ value_node = @buffers.delete(:param_value)
1565
+ unless value_node.nil?
1566
+ param_node <<= value_node
1567
+ unless value_node.complete
1568
+ trace('VN incomplete')
1569
+ completed = false
1570
+ end
1571
+ else
1572
+ completed = false
1321
1573
  end
1574
+
1575
+ param_node.complete = completed
1576
+ @buffers[:parameter] = param_node
1322
1577
  end
1323
1578
  begin
1324
1579
 
1325
- @buffers[:string] ||= []
1326
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1580
+ trace('PARAMETER yield_parameter')
1581
+ yield @buffers[:parameter]
1327
1582
  end
1328
- when 2 then
1583
+ when 24 then
1329
1584
  begin
1330
1585
 
1331
- @buffers[:string] = []
1586
+ trace('PARAMETER add_prefix')
1587
+ ident = @buffers.delete(:ident)
1588
+ prefix_node = prefix(ident, complete: ident.complete)
1589
+ @buffers[:param_prefix] = prefix_node
1332
1590
  end
1333
1591
  begin
1334
1592
 
1335
- (@buffers[:string] ||= []) << data[p].ord
1593
+ trace('IDENTIFIER start_identifier')
1594
+ @identifier_started = true
1595
+ id_start = p;
1336
1596
  end
1337
- when 15 then
1597
+ when 8 then
1338
1598
  begin
1339
1599
 
1340
- @buffers[:string] = string(utf8_string(@buffers[:string]))
1600
+ trace('STRING start_string')
1601
+ @string_opened = true
1602
+ p_start = p
1341
1603
  end
1342
1604
  begin
1343
1605
 
1344
- yield @buffers[:string]
1606
+ trace('STRING stop_string')
1607
+ @string_closed = true
1608
+ p_end = p
1345
1609
  end
1346
- when 4 then
1347
1610
  begin
1348
1611
 
1349
- @buffers[:string] ||= []
1350
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1612
+ trace('STRING string_end')
1613
+ completed = @string_opened && @string_closed
1614
+ chars = data[p_start...p_end]
1615
+ ast_node = string(utf8_string(chars), complete: true)
1616
+ @buffers[:string] = ast_node
1351
1617
  end
1618
+ when 14 then
1352
1619
  begin
1353
1620
 
1354
- unless @buffers[:ident].is_a?(::AST::Node)
1355
- @buffers[:ident] ||= []
1356
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1357
- end
1621
+ trace('STRING stop_string')
1622
+ @string_closed = true
1623
+ p_end = p
1358
1624
  end
1359
- when 14 then
1360
1625
  begin
1361
1626
 
1362
- @buffers[:string] ||= []
1363
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1627
+ trace('STRING string_end')
1628
+ completed = @string_opened && @string_closed
1629
+ chars = data[p_start...p_end]
1630
+ ast_node = string(utf8_string(chars), complete: true)
1631
+ @buffers[:string] = ast_node
1364
1632
  end
1365
1633
  begin
1366
1634
 
1367
- @buffers[:string] ||= []
1635
+ trace('STRING yield_string')
1368
1636
  yield @buffers[:string]
1369
1637
  end
1370
- when 9 then
1638
+ when 15 then
1371
1639
  begin
1372
1640
 
1373
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1641
+ trace('PARAMETER add_string_param_value')
1642
+ string_node = @buffers.delete(:string)
1643
+ value_node = value(string_node, complete: string_node.complete)
1644
+ @buffers[:param_value] = value_node
1374
1645
  end
1375
1646
  begin
1376
1647
 
1377
- @buffers[:parameter] ||= parameter(prefix(nil))
1378
- @buffers[:parameter] = @buffers[:parameter] << value(@buffers[:ident])
1648
+ trace('PARAMETER parameter_end')
1649
+ param_node = parameter()
1650
+ completed = true
1651
+ prefix_node = @buffers.delete(:param_prefix)
1652
+ unless prefix_node.nil?
1653
+ param_node <<= prefix_node
1654
+ unless prefix_node.complete
1655
+ trace('PN incomplete')
1656
+ completed = false
1657
+ end
1658
+ end
1659
+
1660
+ value_node = @buffers.delete(:param_value)
1661
+ unless value_node.nil?
1662
+ param_node <<= value_node
1663
+ unless value_node.complete
1664
+ trace('VN incomplete')
1665
+ completed = false
1666
+ end
1667
+ else
1668
+ completed = false
1669
+ end
1670
+
1671
+ param_node.complete = completed
1672
+ @buffers[:parameter] = param_node
1379
1673
  end
1380
1674
  begin
1381
1675
 
1676
+ trace('PARAMETER yield_parameter')
1382
1677
  yield @buffers[:parameter]
1383
1678
  end
1679
+ when 23 then
1680
+ begin
1681
+
1682
+ trace('PARAMETER add_prefix')
1683
+ ident = @buffers.delete(:ident)
1684
+ prefix_node = prefix(ident, complete: ident.complete)
1685
+ @buffers[:param_prefix] = prefix_node
1686
+ end
1687
+ begin
1688
+
1689
+ trace('PARAMETER parameter_end')
1690
+ param_node = parameter()
1691
+ completed = true
1692
+ prefix_node = @buffers.delete(:param_prefix)
1693
+ unless prefix_node.nil?
1694
+ param_node <<= prefix_node
1695
+ unless prefix_node.complete
1696
+ trace('PN incomplete')
1697
+ completed = false
1698
+ end
1699
+ end
1700
+
1701
+ value_node = @buffers.delete(:param_value)
1702
+ unless value_node.nil?
1703
+ param_node <<= value_node
1704
+ unless value_node.complete
1705
+ trace('VN incomplete')
1706
+ completed = false
1707
+ end
1708
+ else
1709
+ completed = false
1710
+ end
1711
+
1712
+ param_node.complete = completed
1713
+ @buffers[:parameter] = param_node
1714
+ end
1715
+ begin
1716
+
1717
+ trace('PARAMETER yield_parameter')
1718
+ yield @buffers[:parameter]
1719
+ end
1720
+ when 18 then
1721
+ begin
1722
+
1723
+ trace('IDENTIFIER end_identifier')
1724
+ id_end = p
1725
+ chars = data[id_start...id_end]
1726
+ completed = !chars.empty?
1727
+ ast_node = identifier(utf8_string(chars), complete: completed)
1728
+ @buffers[:ident] = ast_node
1729
+ end
1730
+ begin
1731
+
1732
+ trace('PARAMETER add_ident_param_value')
1733
+ ident = @buffers.delete(:ident)
1734
+ value_node = value(ident, complete: ident.complete)
1735
+ @buffers[:param_value] = value_node
1736
+ end
1737
+ begin
1738
+
1739
+ trace('PARAMETER parameter_end')
1740
+ param_node = parameter()
1741
+ completed = true
1742
+ prefix_node = @buffers.delete(:param_prefix)
1743
+ unless prefix_node.nil?
1744
+ param_node <<= prefix_node
1745
+ unless prefix_node.complete
1746
+ trace('PN incomplete')
1747
+ completed = false
1748
+ end
1749
+ end
1750
+
1751
+ value_node = @buffers.delete(:param_value)
1752
+ unless value_node.nil?
1753
+ param_node <<= value_node
1754
+ unless value_node.complete
1755
+ trace('VN incomplete')
1756
+ completed = false
1757
+ end
1758
+ else
1759
+ completed = false
1760
+ end
1761
+
1762
+ param_node.complete = completed
1763
+ @buffers[:parameter] = param_node
1764
+ end
1765
+ begin
1766
+
1767
+ trace('PARAMETER yield_parameter')
1768
+ yield @buffers[:parameter]
1769
+ end
1770
+ when 13 then
1771
+ begin
1772
+
1773
+ trace('STRING start_string')
1774
+ @string_opened = true
1775
+ p_start = p
1776
+ end
1777
+ begin
1778
+
1779
+ trace('STRING stop_string')
1780
+ @string_closed = true
1781
+ p_end = p
1782
+ end
1783
+ begin
1784
+
1785
+ trace('STRING string_end')
1786
+ completed = @string_opened && @string_closed
1787
+ chars = data[p_start...p_end]
1788
+ ast_node = string(utf8_string(chars), complete: true)
1789
+ @buffers[:string] = ast_node
1790
+ end
1791
+ begin
1792
+
1793
+ trace('STRING yield_string')
1794
+ yield @buffers[:string]
1795
+ end
1796
+ end
1797
+ end
1798
+ end
1799
+ if _goto_level <= _again
1800
+ if cs == 0
1801
+ _goto_level = _out
1802
+ next
1803
+ end
1804
+ p += 1
1805
+ if p != pe
1806
+ _goto_level = _resume
1807
+ next
1808
+ end
1809
+ end
1810
+ if _goto_level <= _test_eof
1811
+ if p == eof
1812
+ case _bel_eof_actions[cs]
1813
+ when 30 then
1814
+ begin
1815
+
1816
+ trace('IDENTIFIER yield_identifier')
1817
+ yield @buffers[:ident]
1818
+ end
1819
+ when 27 then
1820
+ begin
1821
+
1822
+ trace("PARAMETER parameter_node_eof")
1823
+ param_node = parameter()
1824
+ completed = true
1825
+ prefix_node = @buffers.delete(:param_prefix)
1826
+ unless prefix_node.nil?
1827
+ param_node <<= prefix_node
1828
+ unless prefix_node.complete
1829
+ completed = false
1830
+ end
1831
+ end
1832
+
1833
+ string_value_node = @buffers.delete(:string)
1834
+ unless string_value_node.nil?
1835
+ param_node <<= string_value_node
1836
+ unless string_value_node.complete
1837
+ completed = false
1838
+ end
1839
+ else
1840
+ completed = false
1841
+ end
1842
+
1843
+ param_node.complete = completed
1844
+ yield param_node
1845
+ end
1846
+ when 28 then
1847
+ begin
1848
+
1849
+ trace('IDENTIFIER end_identifier')
1850
+ id_end = p
1851
+ chars = data[id_start...id_end]
1852
+ completed = !chars.empty?
1853
+ ast_node = identifier(utf8_string(chars), complete: completed)
1854
+ @buffers[:ident] = ast_node
1855
+ end
1856
+ begin
1857
+
1858
+ trace('IDENTIFIER yield_identifier')
1859
+ yield @buffers[:ident]
1860
+ end
1861
+ when 4 then
1862
+ begin
1863
+
1864
+ trace('STRING a_string_err')
1865
+ p_end = p
1866
+ chars = data[p_start...p_end]
1867
+ ast_node = string(utf8_string(chars), complete: false)
1868
+ @buffers[:string] = ast_node
1869
+ end
1870
+ begin
1871
+
1872
+ trace("PARAMETER parameter_node_eof")
1873
+ param_node = parameter()
1874
+ completed = true
1875
+ prefix_node = @buffers.delete(:param_prefix)
1876
+ unless prefix_node.nil?
1877
+ param_node <<= prefix_node
1878
+ unless prefix_node.complete
1879
+ completed = false
1880
+ end
1881
+ end
1882
+
1883
+ string_value_node = @buffers.delete(:string)
1884
+ unless string_value_node.nil?
1885
+ param_node <<= string_value_node
1886
+ unless string_value_node.complete
1887
+ completed = false
1888
+ end
1889
+ else
1890
+ completed = false
1891
+ end
1892
+
1893
+ param_node.complete = completed
1894
+ yield param_node
1895
+ end
1896
+ when 10 then
1897
+ begin
1898
+
1899
+ trace('STRING string_node_err')
1900
+ p_end = p
1901
+ chars = data[p_start...p_end]
1902
+ ast_node = string(utf8_string(chars), complete: false)
1903
+ yield ast_node
1904
+ end
1905
+ begin
1906
+
1907
+ trace('STRING string_node_eof')
1908
+ yield @buffers[:string]
1909
+ end
1910
+ when 25 then
1911
+ begin
1912
+
1913
+ trace('IDENTIFIER an_ident_eof')
1914
+ if @identifier_started
1915
+ id_end = p
1916
+ chars = data[id_start...id_end]
1917
+ completed = !chars.empty?
1918
+ ast_node = identifier(utf8_string(chars), complete: completed)
1919
+ @buffers[:ident] = ast_node
1920
+ end
1921
+ end
1922
+ begin
1923
+
1924
+ trace('PARAMETER parameter_end')
1925
+ param_node = parameter()
1926
+ completed = true
1927
+ prefix_node = @buffers.delete(:param_prefix)
1928
+ unless prefix_node.nil?
1929
+ param_node <<= prefix_node
1930
+ unless prefix_node.complete
1931
+ trace('PN incomplete')
1932
+ completed = false
1933
+ end
1934
+ end
1935
+
1936
+ value_node = @buffers.delete(:param_value)
1937
+ unless value_node.nil?
1938
+ param_node <<= value_node
1939
+ unless value_node.complete
1940
+ trace('VN incomplete')
1941
+ completed = false
1942
+ end
1943
+ else
1944
+ completed = false
1945
+ end
1946
+
1947
+ param_node.complete = completed
1948
+ @buffers[:parameter] = param_node
1949
+ end
1950
+ begin
1951
+
1952
+ trace('PARAMETER yield_parameter')
1953
+ yield @buffers[:parameter]
1954
+ end
1955
+ when 6 then
1956
+ begin
1957
+
1958
+ trace('STRING eof_string')
1959
+ p_end = p
1960
+ chars = data[p_start...p_end]
1961
+ ast_node = string(utf8_string(chars), complete: false)
1962
+ @buffers[:string] = ast_node
1963
+ end
1964
+ begin
1965
+
1966
+ trace('STRING a_string_err')
1967
+ p_end = p
1968
+ chars = data[p_start...p_end]
1969
+ ast_node = string(utf8_string(chars), complete: false)
1970
+ @buffers[:string] = ast_node
1971
+ end
1972
+ begin
1973
+
1974
+ trace("PARAMETER parameter_node_eof")
1975
+ param_node = parameter()
1976
+ completed = true
1977
+ prefix_node = @buffers.delete(:param_prefix)
1978
+ unless prefix_node.nil?
1979
+ param_node <<= prefix_node
1980
+ unless prefix_node.complete
1981
+ completed = false
1982
+ end
1983
+ end
1984
+
1985
+ string_value_node = @buffers.delete(:string)
1986
+ unless string_value_node.nil?
1987
+ param_node <<= string_value_node
1988
+ unless string_value_node.complete
1989
+ completed = false
1990
+ end
1991
+ else
1992
+ completed = false
1993
+ end
1994
+
1995
+ param_node.complete = completed
1996
+ yield param_node
1997
+ end
1998
+ when 12 then
1999
+ begin
2000
+
2001
+ trace('STRING eof_string')
2002
+ p_end = p
2003
+ chars = data[p_start...p_end]
2004
+ ast_node = string(utf8_string(chars), complete: false)
2005
+ @buffers[:string] = ast_node
2006
+ end
2007
+ begin
2008
+
2009
+ trace('STRING string_node_err')
2010
+ p_end = p
2011
+ chars = data[p_start...p_end]
2012
+ ast_node = string(utf8_string(chars), complete: false)
2013
+ yield ast_node
2014
+ end
2015
+ begin
2016
+
2017
+ trace('STRING string_node_eof')
2018
+ yield @buffers[:string]
2019
+ end
2020
+ when 15 then
2021
+ begin
2022
+
2023
+ trace('PARAMETER add_string_param_value')
2024
+ string_node = @buffers.delete(:string)
2025
+ value_node = value(string_node, complete: string_node.complete)
2026
+ @buffers[:param_value] = value_node
2027
+ end
2028
+ begin
2029
+
2030
+ trace('PARAMETER parameter_end')
2031
+ param_node = parameter()
2032
+ completed = true
2033
+ prefix_node = @buffers.delete(:param_prefix)
2034
+ unless prefix_node.nil?
2035
+ param_node <<= prefix_node
2036
+ unless prefix_node.complete
2037
+ trace('PN incomplete')
2038
+ completed = false
2039
+ end
2040
+ end
2041
+
2042
+ value_node = @buffers.delete(:param_value)
2043
+ unless value_node.nil?
2044
+ param_node <<= value_node
2045
+ unless value_node.complete
2046
+ trace('VN incomplete')
2047
+ completed = false
2048
+ end
2049
+ else
2050
+ completed = false
2051
+ end
2052
+
2053
+ param_node.complete = completed
2054
+ @buffers[:parameter] = param_node
2055
+ end
2056
+ begin
2057
+
2058
+ trace('PARAMETER yield_parameter')
2059
+ yield @buffers[:parameter]
2060
+ end
2061
+ when 1 then
2062
+ begin
2063
+
2064
+ trace('IDENTIFIER an_ident_eof')
2065
+ if @identifier_started
2066
+ id_end = p
2067
+ chars = data[id_start...id_end]
2068
+ completed = !chars.empty?
2069
+ ast_node = identifier(utf8_string(chars), complete: completed)
2070
+ @buffers[:ident] = ast_node
2071
+ end
2072
+ end
2073
+ begin
2074
+
2075
+ trace('IDENTIFIER an_ident_err')
2076
+ id_end = p
2077
+ chars = data[id_start...id_end]
2078
+ ast_node = identifier(utf8_string(chars), complete: false)
2079
+ @buffers[:ident] = ast_node
2080
+ end
2081
+ begin
2082
+
2083
+ trace('STRING a_string_err')
2084
+ p_end = p
2085
+ chars = data[p_start...p_end]
2086
+ ast_node = string(utf8_string(chars), complete: false)
2087
+ @buffers[:string] = ast_node
2088
+ end
2089
+ begin
2090
+
2091
+ trace("PARAMETER parameter_node_eof")
2092
+ param_node = parameter()
2093
+ completed = true
2094
+ prefix_node = @buffers.delete(:param_prefix)
2095
+ unless prefix_node.nil?
2096
+ param_node <<= prefix_node
2097
+ unless prefix_node.complete
2098
+ completed = false
2099
+ end
2100
+ end
2101
+
2102
+ string_value_node = @buffers.delete(:string)
2103
+ unless string_value_node.nil?
2104
+ param_node <<= string_value_node
2105
+ unless string_value_node.complete
2106
+ completed = false
2107
+ end
2108
+ else
2109
+ completed = false
2110
+ end
2111
+
2112
+ param_node.complete = completed
2113
+ yield param_node
2114
+ end
2115
+ when 21 then
2116
+ begin
2117
+
2118
+ trace('IDENTIFIER an_ident_eof')
2119
+ if @identifier_started
2120
+ id_end = p
2121
+ chars = data[id_start...id_end]
2122
+ completed = !chars.empty?
2123
+ ast_node = identifier(utf8_string(chars), complete: completed)
2124
+ @buffers[:ident] = ast_node
2125
+ end
2126
+ end
2127
+ begin
2128
+
2129
+ trace('PARAMETER add_prefix')
2130
+ ident = @buffers.delete(:ident)
2131
+ prefix_node = prefix(ident, complete: ident.complete)
2132
+ @buffers[:param_prefix] = prefix_node
2133
+ end
2134
+ begin
2135
+
2136
+ trace('PARAMETER parameter_end')
2137
+ param_node = parameter()
2138
+ completed = true
2139
+ prefix_node = @buffers.delete(:param_prefix)
2140
+ unless prefix_node.nil?
2141
+ param_node <<= prefix_node
2142
+ unless prefix_node.complete
2143
+ trace('PN incomplete')
2144
+ completed = false
2145
+ end
2146
+ end
2147
+
2148
+ value_node = @buffers.delete(:param_value)
2149
+ unless value_node.nil?
2150
+ param_node <<= value_node
2151
+ unless value_node.complete
2152
+ trace('VN incomplete')
2153
+ completed = false
2154
+ end
2155
+ else
2156
+ completed = false
2157
+ end
2158
+
2159
+ param_node.complete = completed
2160
+ @buffers[:parameter] = param_node
2161
+ end
2162
+ begin
2163
+
2164
+ trace('PARAMETER yield_parameter')
2165
+ yield @buffers[:parameter]
2166
+ end
2167
+ when 16 then
2168
+ begin
2169
+
2170
+ trace('IDENTIFIER end_identifier')
2171
+ id_end = p
2172
+ chars = data[id_start...id_end]
2173
+ completed = !chars.empty?
2174
+ ast_node = identifier(utf8_string(chars), complete: completed)
2175
+ @buffers[:ident] = ast_node
2176
+ end
2177
+ begin
2178
+
2179
+ trace('IDENTIFIER an_ident_eof')
2180
+ if @identifier_started
2181
+ id_end = p
2182
+ chars = data[id_start...id_end]
2183
+ completed = !chars.empty?
2184
+ ast_node = identifier(utf8_string(chars), complete: completed)
2185
+ @buffers[:ident] = ast_node
2186
+ end
2187
+ end
2188
+ begin
2189
+
2190
+ trace('PARAMETER add_ident_param_value')
2191
+ ident = @buffers.delete(:ident)
2192
+ value_node = value(ident, complete: ident.complete)
2193
+ @buffers[:param_value] = value_node
2194
+ end
2195
+ begin
2196
+
2197
+ trace('PARAMETER parameter_end')
2198
+ param_node = parameter()
2199
+ completed = true
2200
+ prefix_node = @buffers.delete(:param_prefix)
2201
+ unless prefix_node.nil?
2202
+ param_node <<= prefix_node
2203
+ unless prefix_node.complete
2204
+ trace('PN incomplete')
2205
+ completed = false
2206
+ end
2207
+ end
2208
+
2209
+ value_node = @buffers.delete(:param_value)
2210
+ unless value_node.nil?
2211
+ param_node <<= value_node
2212
+ unless value_node.complete
2213
+ trace('VN incomplete')
2214
+ completed = false
2215
+ end
2216
+ else
2217
+ completed = false
2218
+ end
2219
+
2220
+ param_node.complete = completed
2221
+ @buffers[:parameter] = param_node
2222
+ end
2223
+ begin
2224
+
2225
+ trace('PARAMETER yield_parameter')
2226
+ yield @buffers[:parameter]
2227
+ end
2228
+ when 19 then
2229
+ begin
2230
+
2231
+ trace('IDENTIFIER an_ident_eof')
2232
+ if @identifier_started
2233
+ id_end = p
2234
+ chars = data[id_start...id_end]
2235
+ completed = !chars.empty?
2236
+ ast_node = identifier(utf8_string(chars), complete: completed)
2237
+ @buffers[:ident] = ast_node
2238
+ end
2239
+ end
2240
+ begin
2241
+
2242
+ trace('IDENTIFIER end_identifier')
2243
+ id_end = p
2244
+ chars = data[id_start...id_end]
2245
+ completed = !chars.empty?
2246
+ ast_node = identifier(utf8_string(chars), complete: completed)
2247
+ @buffers[:ident] = ast_node
2248
+ end
2249
+ begin
2250
+
2251
+ trace('PARAMETER add_ident_param_value')
2252
+ ident = @buffers.delete(:ident)
2253
+ value_node = value(ident, complete: ident.complete)
2254
+ @buffers[:param_value] = value_node
2255
+ end
2256
+ begin
2257
+
2258
+ trace('PARAMETER parameter_end')
2259
+ param_node = parameter()
2260
+ completed = true
2261
+ prefix_node = @buffers.delete(:param_prefix)
2262
+ unless prefix_node.nil?
2263
+ param_node <<= prefix_node
2264
+ unless prefix_node.complete
2265
+ trace('PN incomplete')
2266
+ completed = false
2267
+ end
2268
+ end
2269
+
2270
+ value_node = @buffers.delete(:param_value)
2271
+ unless value_node.nil?
2272
+ param_node <<= value_node
2273
+ unless value_node.complete
2274
+ trace('VN incomplete')
2275
+ completed = false
2276
+ end
2277
+ else
2278
+ completed = false
2279
+ end
2280
+
2281
+ param_node.complete = completed
2282
+ @buffers[:parameter] = param_node
2283
+ end
2284
+ begin
2285
+
2286
+ trace('PARAMETER yield_parameter')
2287
+ yield @buffers[:parameter]
2288
+ end
2289
+ end
2290
+ end
2291
+
2292
+ end
2293
+ if _goto_level <= _out
2294
+ break
2295
+ end
2296
+ end
2297
+ end
2298
+
2299
+
2300
+ =end
2301
+ # end: ragel
2302
+
2303
+ require_relative '../ast/node'
2304
+ require_relative '../mixin/buffer'
2305
+ require_relative '../nonblocking_io_wrapper'
2306
+ require_relative '../tracer'
2307
+
2308
+ module BELParser
2309
+ module Parsers
2310
+ module Expression
2311
+ module Parameter
2312
+
2313
+ class << self
2314
+
2315
+ MAX_LENGTH = 1024 * 128 # 128K
2316
+
2317
+ def parse(content)
2318
+ return nil unless content
2319
+
2320
+ Parser.new(content).each do |obj|
2321
+ yield obj
2322
+ end
2323
+ end
2324
+ end
2325
+
2326
+ private
2327
+
2328
+ class Parser
2329
+ include Enumerable
2330
+ include BELParser::Parsers::Buffer
2331
+ include BELParser::Parsers::AST::Sexp
2332
+ include BELParser::Parsers::Tracer
2333
+
2334
+ def initialize(content)
2335
+ @content = content
2336
+ # begin: ragel
2337
+
2338
+ class << self
2339
+ attr_accessor :_bel_trans_keys
2340
+ private :_bel_trans_keys, :_bel_trans_keys=
2341
+ end
2342
+ self._bel_trans_keys = [
2343
+ 0, 0, 9, 122, 9, 122,
2344
+ 9, 34, 34, 92, 34,
2345
+ 92, 0, 0, 48, 122,
2346
+ 9, 34, 34, 92, 34, 92,
2347
+ 0, 0, 10, 10, 0,
2348
+ 0, 10, 122, 10, 122,
2349
+ 9, 122, 9, 122, 9, 34,
2350
+ 10, 122, 0, 0, 0,
2351
+ 0, 0
2352
+ ]
2353
+
2354
+ class << self
2355
+ attr_accessor :_bel_key_spans
2356
+ private :_bel_key_spans, :_bel_key_spans=
2357
+ end
2358
+ self._bel_key_spans = [
2359
+ 0, 114, 114, 26, 59, 59, 0, 75,
2360
+ 26, 59, 59, 0, 1, 0, 113, 113,
2361
+ 114, 114, 26, 113, 0, 0
2362
+ ]
2363
+
2364
+ class << self
2365
+ attr_accessor :_bel_index_offsets
2366
+ private :_bel_index_offsets, :_bel_index_offsets=
2367
+ end
2368
+ self._bel_index_offsets = [
2369
+ 0, 0, 115, 230, 257, 317, 377, 378,
2370
+ 454, 481, 541, 601, 602, 604, 605, 719,
2371
+ 833, 948, 1063, 1090, 1204, 1205
2372
+ ]
2373
+
2374
+ class << self
2375
+ attr_accessor :_bel_indicies
2376
+ private :_bel_indicies, :_bel_indicies=
2377
+ end
2378
+ self._bel_indicies = [
2379
+ 1, 2, 2, 2, 2, 0, 0, 0,
2380
+ 0, 0, 0, 0, 0, 0, 0, 0,
2381
+ 0, 0, 0, 0, 0, 0, 0, 1,
2382
+ 0, 3, 0, 0, 0, 0, 0, 0,
2383
+ 0, 0, 0, 0, 0, 0, 0, 4,
2384
+ 4, 4, 4, 4, 4, 4, 4, 4,
2385
+ 4, 0, 0, 0, 0, 0, 0, 0,
2386
+ 4, 4, 4, 4, 4, 4, 4, 4,
2387
+ 4, 4, 4, 4, 4, 4, 4, 4,
2388
+ 4, 4, 4, 4, 4, 4, 4, 4,
2389
+ 4, 4, 0, 0, 0, 0, 4, 0,
2390
+ 4, 4, 4, 4, 4, 4, 4, 4,
2391
+ 4, 4, 4, 4, 4, 4, 4, 4,
2392
+ 4, 4, 4, 4, 4, 4, 4, 4,
2393
+ 4, 4, 0, 1, 2, 2, 2, 2,
2394
+ 0, 0, 0, 0, 0, 0, 0, 0,
2395
+ 0, 0, 0, 0, 0, 0, 0, 0,
2396
+ 0, 0, 1, 0, 3, 0, 0, 0,
2397
+ 0, 0, 0, 0, 0, 0, 0, 0,
2398
+ 0, 0, 5, 5, 5, 5, 5, 5,
2399
+ 5, 5, 5, 5, 0, 0, 0, 0,
2400
+ 0, 0, 0, 5, 5, 5, 5, 5,
2401
+ 5, 5, 5, 5, 5, 5, 5, 5,
2402
+ 5, 5, 5, 5, 5, 5, 5, 5,
2403
+ 5, 5, 5, 5, 5, 0, 0, 0,
2404
+ 0, 5, 0, 5, 5, 5, 5, 5,
2405
+ 5, 5, 5, 5, 5, 5, 5, 5,
2406
+ 5, 5, 5, 5, 5, 5, 5, 5,
2407
+ 5, 5, 5, 5, 5, 0, 2, 2,
2408
+ 2, 2, 2, 6, 6, 6, 6, 6,
2409
+ 6, 6, 6, 6, 6, 6, 6, 6,
2410
+ 6, 6, 6, 6, 6, 2, 6, 3,
2411
+ 6, 8, 7, 7, 7, 7, 7, 7,
2412
+ 7, 7, 7, 7, 7, 7, 7, 7,
2413
+ 7, 7, 7, 7, 7, 7, 7, 7,
2414
+ 7, 7, 7, 7, 7, 7, 7, 7,
2415
+ 7, 7, 7, 7, 7, 7, 7, 7,
2416
+ 7, 7, 7, 7, 7, 7, 7, 7,
2417
+ 7, 7, 7, 7, 7, 7, 7, 7,
2418
+ 7, 7, 7, 9, 7, 11, 10, 10,
2419
+ 10, 10, 10, 10, 10, 10, 10, 10,
2420
+ 10, 10, 10, 10, 10, 10, 10, 10,
2421
+ 10, 10, 10, 10, 10, 10, 10, 10,
2422
+ 10, 10, 10, 10, 10, 10, 10, 10,
2423
+ 10, 10, 10, 10, 10, 10, 10, 10,
2424
+ 10, 10, 10, 10, 10, 10, 10, 10,
2425
+ 10, 10, 10, 10, 10, 10, 10, 12,
2426
+ 10, 10, 13, 13, 13, 13, 13, 13,
2427
+ 13, 13, 13, 13, 14, 14, 14, 14,
2428
+ 14, 14, 14, 13, 13, 13, 13, 13,
2429
+ 13, 13, 13, 13, 13, 13, 13, 13,
2430
+ 13, 13, 13, 13, 13, 13, 13, 13,
2431
+ 13, 13, 13, 13, 13, 14, 14, 14,
2432
+ 14, 13, 14, 13, 13, 13, 13, 13,
2433
+ 13, 13, 13, 13, 13, 13, 13, 13,
2434
+ 13, 13, 13, 13, 13, 13, 13, 13,
2435
+ 13, 13, 13, 13, 13, 14, 16, 16,
2436
+ 16, 16, 16, 15, 15, 15, 15, 15,
2437
+ 15, 15, 15, 15, 15, 15, 15, 15,
2438
+ 15, 15, 15, 15, 15, 16, 15, 17,
2439
+ 15, 19, 18, 18, 18, 18, 18, 18,
2440
+ 18, 18, 18, 18, 18, 18, 18, 18,
2441
+ 18, 18, 18, 18, 18, 18, 18, 18,
2442
+ 18, 18, 18, 18, 18, 18, 18, 18,
2443
+ 18, 18, 18, 18, 18, 18, 18, 18,
2444
+ 18, 18, 18, 18, 18, 18, 18, 18,
2445
+ 18, 18, 18, 18, 18, 18, 18, 18,
2446
+ 18, 18, 18, 20, 18, 22, 21, 21,
2447
+ 21, 21, 21, 21, 21, 21, 21, 21,
2448
+ 21, 21, 21, 21, 21, 21, 21, 21,
2449
+ 21, 21, 21, 21, 21, 21, 21, 21,
2450
+ 21, 21, 21, 21, 21, 21, 21, 21,
2451
+ 21, 21, 21, 21, 21, 21, 21, 21,
2452
+ 21, 21, 21, 21, 21, 21, 21, 21,
2453
+ 21, 21, 21, 21, 21, 21, 21, 23,
2454
+ 21, 21, 24, 6, 14, 26, 25, 25,
2455
+ 25, 25, 25, 25, 25, 25, 25, 25,
2456
+ 25, 25, 25, 25, 25, 25, 25, 25,
2457
+ 25, 25, 25, 25, 25, 25, 25, 25,
2458
+ 25, 25, 25, 25, 25, 25, 25, 25,
2459
+ 25, 25, 25, 27, 27, 27, 27, 27,
2460
+ 27, 27, 27, 27, 27, 25, 25, 25,
2461
+ 25, 25, 25, 25, 27, 27, 27, 27,
2462
+ 27, 27, 27, 27, 27, 27, 27, 27,
2463
+ 27, 27, 27, 27, 27, 27, 27, 27,
2464
+ 27, 27, 27, 27, 27, 27, 25, 25,
2465
+ 25, 25, 27, 25, 27, 27, 27, 27,
2466
+ 27, 27, 27, 27, 27, 27, 27, 27,
2467
+ 27, 27, 27, 27, 27, 27, 27, 27,
2468
+ 27, 27, 27, 27, 27, 27, 25, 26,
2469
+ 25, 25, 25, 25, 25, 25, 25, 25,
2470
+ 25, 25, 25, 25, 25, 25, 25, 25,
2471
+ 25, 25, 25, 25, 25, 25, 25, 25,
2472
+ 25, 25, 25, 25, 25, 25, 25, 25,
2473
+ 25, 25, 25, 25, 25, 28, 28, 28,
2474
+ 28, 28, 28, 28, 28, 28, 28, 29,
2475
+ 25, 25, 25, 25, 25, 25, 28, 28,
2476
+ 28, 28, 28, 28, 28, 28, 28, 28,
2477
+ 28, 28, 28, 28, 28, 28, 28, 28,
2478
+ 28, 28, 28, 28, 28, 28, 28, 28,
2479
+ 25, 25, 25, 25, 28, 25, 28, 28,
2480
+ 28, 28, 28, 28, 28, 28, 28, 28,
2481
+ 28, 28, 28, 28, 28, 28, 28, 28,
2482
+ 28, 28, 28, 28, 28, 28, 28, 28,
2483
+ 25, 30, 31, 32, 32, 32, 0, 0,
2484
+ 0, 0, 0, 0, 0, 0, 0, 0,
2485
+ 0, 0, 0, 0, 0, 0, 0, 0,
2486
+ 30, 0, 33, 0, 0, 0, 0, 0,
2487
+ 0, 0, 0, 0, 0, 0, 0, 0,
2488
+ 34, 34, 34, 34, 34, 34, 34, 34,
2489
+ 34, 34, 0, 0, 0, 0, 0, 0,
2490
+ 0, 34, 34, 34, 34, 34, 34, 34,
2491
+ 34, 34, 34, 34, 34, 34, 34, 34,
2492
+ 34, 34, 34, 34, 34, 34, 34, 34,
2493
+ 34, 34, 34, 0, 0, 0, 0, 34,
2494
+ 0, 34, 34, 34, 34, 34, 34, 34,
2495
+ 34, 34, 34, 34, 34, 34, 34, 34,
2496
+ 34, 34, 34, 34, 34, 34, 34, 34,
2497
+ 34, 34, 34, 0, 35, 36, 2, 2,
2498
+ 2, 0, 0, 0, 0, 0, 0, 0,
2499
+ 0, 0, 0, 0, 0, 0, 0, 0,
2500
+ 0, 0, 0, 35, 0, 3, 0, 0,
2501
+ 0, 0, 0, 0, 0, 0, 0, 0,
2502
+ 0, 0, 0, 5, 5, 5, 5, 5,
2503
+ 5, 5, 5, 5, 5, 0, 0, 0,
2504
+ 0, 0, 0, 0, 5, 5, 5, 5,
2505
+ 5, 5, 5, 5, 5, 5, 5, 5,
2506
+ 5, 5, 5, 5, 5, 5, 5, 5,
2507
+ 5, 5, 5, 5, 5, 5, 0, 0,
2508
+ 0, 0, 5, 0, 5, 5, 5, 5,
2509
+ 5, 5, 5, 5, 5, 5, 5, 5,
2510
+ 5, 5, 5, 5, 5, 5, 5, 5,
2511
+ 5, 5, 5, 5, 5, 5, 0, 2,
2512
+ 2, 2, 2, 2, 6, 6, 6, 6,
2513
+ 6, 6, 6, 6, 6, 6, 6, 6,
2514
+ 6, 6, 6, 6, 6, 6, 2, 6,
2515
+ 3, 6, 38, 37, 37, 37, 37, 37,
2516
+ 37, 37, 37, 37, 37, 37, 37, 37,
2517
+ 37, 37, 37, 37, 37, 37, 37, 37,
2518
+ 37, 37, 37, 37, 37, 37, 37, 37,
2519
+ 37, 37, 37, 37, 37, 37, 37, 37,
2520
+ 39, 39, 39, 39, 39, 39, 39, 39,
2521
+ 39, 39, 37, 37, 37, 37, 37, 37,
2522
+ 37, 39, 39, 39, 39, 39, 39, 39,
2523
+ 39, 39, 39, 39, 39, 39, 39, 39,
2524
+ 39, 39, 39, 39, 39, 39, 39, 39,
2525
+ 39, 39, 39, 37, 37, 37, 37, 39,
2526
+ 37, 39, 39, 39, 39, 39, 39, 39,
2527
+ 39, 39, 39, 39, 39, 39, 39, 39,
2528
+ 39, 39, 39, 39, 39, 39, 39, 39,
2529
+ 39, 39, 39, 37, 37, 15, 0
2530
+ ]
2531
+
2532
+ class << self
2533
+ attr_accessor :_bel_trans_targs
2534
+ private :_bel_trans_targs, :_bel_trans_targs=
2535
+ end
2536
+ self._bel_trans_targs = [
2537
+ 0, 2, 3, 4, 15, 14, 0, 5,
2538
+ 12, 6, 5, 12, 6, 19, 0, 0,
2539
+ 8, 9, 10, 21, 11, 10, 21, 11,
2540
+ 13, 0, 13, 14, 15, 16, 17, 18,
2541
+ 3, 4, 14, 17, 18, 0, 20, 19
2542
+ ]
2543
+
2544
+ class << self
2545
+ attr_accessor :_bel_trans_actions
2546
+ private :_bel_trans_actions, :_bel_trans_actions=
2547
+ end
2548
+ self._bel_trans_actions = [
2549
+ 2, 0, 0, 0, 3, 3, 5, 7,
2550
+ 8, 7, 0, 9, 0, 3, 0, 11,
2551
+ 0, 0, 7, 13, 7, 0, 14, 0,
2552
+ 15, 17, 18, 0, 0, 20, 22, 23,
2553
+ 22, 22, 24, 0, 26, 29, 20, 0
2554
+ ]
2555
+
2556
+ class << self
2557
+ attr_accessor :_bel_eof_actions
2558
+ private :_bel_eof_actions, :_bel_eof_actions=
2559
+ end
2560
+ self._bel_eof_actions = [
2561
+ 0, 1, 1, 4, 6, 6, 6, 0,
2562
+ 10, 12, 12, 12, 15, 0, 16, 19,
2563
+ 21, 25, 27, 28, 30, 0
2564
+ ]
2565
+
2566
+ class << self
2567
+ attr_accessor :bel_start
2568
+ end
2569
+ self.bel_start = 1;
2570
+ class << self
2571
+ attr_accessor :bel_first_final
2572
+ end
2573
+ self.bel_first_final = 12;
2574
+ class << self
2575
+ attr_accessor :bel_error
2576
+ end
2577
+ self.bel_error = 0;
2578
+
2579
+ class << self
2580
+ attr_accessor :bel_en_ident_node
2581
+ end
2582
+ self.bel_en_ident_node = 7;
2583
+ class << self
2584
+ attr_accessor :bel_en_string_node
2585
+ end
2586
+ self.bel_en_string_node = 8;
2587
+ class << self
2588
+ attr_accessor :bel_en_parameter_node
2589
+ end
2590
+ self.bel_en_parameter_node = 1;
2591
+
2592
+
2593
+ # end: ragel
2594
+ end
2595
+
2596
+ def each
2597
+ @buffers = {}
2598
+ @incomplete = {}
2599
+ data = @content.unpack('C*')
2600
+ p = 0
2601
+ pe = data.length
2602
+ p_start = 0
2603
+ p_end = 0
2604
+ id_start = 0
2605
+ id_end = 0
2606
+ eof = data.length
2607
+
2608
+ # begin: ragel
2609
+
2610
+ begin
2611
+ p ||= 0
2612
+ pe ||= data.length
2613
+ cs = bel_start
2614
+ end
2615
+
2616
+
2617
+ begin
2618
+ testEof = false
2619
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
2620
+ _goto_level = 0
2621
+ _resume = 10
2622
+ _eof_trans = 15
2623
+ _again = 20
2624
+ _test_eof = 30
2625
+ _out = 40
2626
+ while true
2627
+ if _goto_level <= 0
2628
+ if p == pe
2629
+ _goto_level = _test_eof
2630
+ next
2631
+ end
2632
+ if cs == 0
2633
+ _goto_level = _out
2634
+ next
2635
+ end
2636
+ end
2637
+ if _goto_level <= _resume
2638
+ _keys = cs << 1
2639
+ _inds = _bel_index_offsets[cs]
2640
+ _slen = _bel_key_spans[cs]
2641
+ _wide = data[p].ord
2642
+ _trans = if ( _slen > 0 &&
2643
+ _bel_trans_keys[_keys] <= _wide &&
2644
+ _wide <= _bel_trans_keys[_keys + 1]
2645
+ ) then
2646
+ _bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ]
2647
+ else
2648
+ _bel_indicies[ _inds + _slen ]
2649
+ end
2650
+ cs = _bel_trans_targs[_trans]
2651
+ if _bel_trans_actions[_trans] != 0
2652
+ case _bel_trans_actions[_trans]
2653
+ when 3 then
2654
+ begin
2655
+
2656
+ trace('IDENTIFIER start_identifier')
2657
+ @identifier_started = true
2658
+ id_start = p;
2659
+ end
2660
+ when 20 then
2661
+ begin
2662
+
2663
+ trace('IDENTIFIER end_identifier')
2664
+ id_end = p
2665
+ chars = data[id_start...id_end]
2666
+ completed = !chars.empty?
2667
+ ast_node = identifier(utf8_string(chars), complete: completed)
2668
+ @buffers[:ident] = ast_node
2669
+ end
2670
+ when 17 then
2671
+ begin
2672
+
2673
+ trace('IDENTIFIER an_ident_err')
2674
+ id_end = p
2675
+ chars = data[id_start...id_end]
2676
+ ast_node = identifier(utf8_string(chars), complete: false)
2677
+ @buffers[:ident] = ast_node
2678
+ end
2679
+ when 29 then
2680
+ begin
2681
+
2682
+ trace('IDENTIFIER ident_node_err')
2683
+ id_end = p
2684
+ chars = data[id_start...id_end]
2685
+ ast_node = identifier(utf8_string(chars), complete: false)
2686
+ yield ast_node
2687
+ end
1384
2688
  when 7 then
1385
2689
  begin
1386
2690
 
1387
- @buffers[:string] = string(utf8_string(@buffers[:string]))
2691
+ trace('STRING start_string')
2692
+ @string_opened = true
2693
+ p_start = p
2694
+ end
2695
+ when 5 then
2696
+ begin
2697
+
2698
+ trace('STRING a_string_err')
2699
+ p_end = p
2700
+ chars = data[p_start...p_end]
2701
+ ast_node = string(utf8_string(chars), complete: false)
2702
+ @buffers[:string] = ast_node
2703
+ end
2704
+ when 11 then
2705
+ begin
2706
+
2707
+ trace('STRING string_node_err')
2708
+ p_end = p
2709
+ chars = data[p_start...p_end]
2710
+ ast_node = string(utf8_string(chars), complete: false)
2711
+ yield ast_node
2712
+ end
2713
+ when 22 then
2714
+ begin
2715
+
2716
+ trace('PARAMETER add_prefix')
2717
+ ident = @buffers.delete(:ident)
2718
+ prefix_node = prefix(ident, complete: ident.complete)
2719
+ @buffers[:param_prefix] = prefix_node
2720
+ end
2721
+ when 2 then
2722
+ begin
2723
+
2724
+ trace('IDENTIFIER an_ident_err')
2725
+ id_end = p
2726
+ chars = data[id_start...id_end]
2727
+ ast_node = identifier(utf8_string(chars), complete: false)
2728
+ @buffers[:ident] = ast_node
2729
+ end
2730
+ begin
2731
+
2732
+ trace('STRING a_string_err')
2733
+ p_end = p
2734
+ chars = data[p_start...p_end]
2735
+ ast_node = string(utf8_string(chars), complete: false)
2736
+ @buffers[:string] = ast_node
2737
+ end
2738
+ when 9 then
2739
+ begin
2740
+
2741
+ trace('STRING stop_string')
2742
+ @string_closed = true
2743
+ p_end = p
2744
+ end
2745
+ begin
2746
+
2747
+ trace('STRING string_end')
2748
+ completed = @string_opened && @string_closed
2749
+ chars = data[p_start...p_end]
2750
+ ast_node = string(utf8_string(chars), complete: true)
2751
+ @buffers[:string] = ast_node
2752
+ end
2753
+ when 26 then
2754
+ begin
2755
+
2756
+ trace('PARAMETER parameter_end')
2757
+ param_node = parameter()
2758
+ completed = true
2759
+ prefix_node = @buffers.delete(:param_prefix)
2760
+ unless prefix_node.nil?
2761
+ param_node <<= prefix_node
2762
+ unless prefix_node.complete
2763
+ trace('PN incomplete')
2764
+ completed = false
2765
+ end
2766
+ end
2767
+
2768
+ value_node = @buffers.delete(:param_value)
2769
+ unless value_node.nil?
2770
+ param_node <<= value_node
2771
+ unless value_node.complete
2772
+ trace('VN incomplete')
2773
+ completed = false
2774
+ end
2775
+ else
2776
+ completed = false
2777
+ end
2778
+
2779
+ param_node.complete = completed
2780
+ @buffers[:parameter] = param_node
2781
+ end
2782
+ begin
2783
+
2784
+ trace('PARAMETER yield_parameter')
2785
+ yield @buffers[:parameter]
2786
+ end
2787
+ when 24 then
2788
+ begin
2789
+
2790
+ trace('PARAMETER add_prefix')
2791
+ ident = @buffers.delete(:ident)
2792
+ prefix_node = prefix(ident, complete: ident.complete)
2793
+ @buffers[:param_prefix] = prefix_node
2794
+ end
2795
+ begin
2796
+
2797
+ trace('IDENTIFIER start_identifier')
2798
+ @identifier_started = true
2799
+ id_start = p;
2800
+ end
2801
+ when 8 then
2802
+ begin
2803
+
2804
+ trace('STRING start_string')
2805
+ @string_opened = true
2806
+ p_start = p
2807
+ end
2808
+ begin
2809
+
2810
+ trace('STRING stop_string')
2811
+ @string_closed = true
2812
+ p_end = p
2813
+ end
2814
+ begin
2815
+
2816
+ trace('STRING string_end')
2817
+ completed = @string_opened && @string_closed
2818
+ chars = data[p_start...p_end]
2819
+ ast_node = string(utf8_string(chars), complete: true)
2820
+ @buffers[:string] = ast_node
2821
+ end
2822
+ when 14 then
2823
+ begin
2824
+
2825
+ trace('STRING stop_string')
2826
+ @string_closed = true
2827
+ p_end = p
2828
+ end
2829
+ begin
2830
+
2831
+ trace('STRING string_end')
2832
+ completed = @string_opened && @string_closed
2833
+ chars = data[p_start...p_end]
2834
+ ast_node = string(utf8_string(chars), complete: true)
2835
+ @buffers[:string] = ast_node
2836
+ end
2837
+ begin
2838
+
2839
+ trace('STRING yield_string')
2840
+ yield @buffers[:string]
2841
+ end
2842
+ when 15 then
2843
+ begin
2844
+
2845
+ trace('PARAMETER add_string_param_value')
2846
+ string_node = @buffers.delete(:string)
2847
+ value_node = value(string_node, complete: string_node.complete)
2848
+ @buffers[:param_value] = value_node
2849
+ end
2850
+ begin
2851
+
2852
+ trace('PARAMETER parameter_end')
2853
+ param_node = parameter()
2854
+ completed = true
2855
+ prefix_node = @buffers.delete(:param_prefix)
2856
+ unless prefix_node.nil?
2857
+ param_node <<= prefix_node
2858
+ unless prefix_node.complete
2859
+ trace('PN incomplete')
2860
+ completed = false
2861
+ end
2862
+ end
2863
+
2864
+ value_node = @buffers.delete(:param_value)
2865
+ unless value_node.nil?
2866
+ param_node <<= value_node
2867
+ unless value_node.complete
2868
+ trace('VN incomplete')
2869
+ completed = false
2870
+ end
2871
+ else
2872
+ completed = false
2873
+ end
2874
+
2875
+ param_node.complete = completed
2876
+ @buffers[:parameter] = param_node
2877
+ end
2878
+ begin
2879
+
2880
+ trace('PARAMETER yield_parameter')
2881
+ yield @buffers[:parameter]
2882
+ end
2883
+ when 23 then
2884
+ begin
2885
+
2886
+ trace('PARAMETER add_prefix')
2887
+ ident = @buffers.delete(:ident)
2888
+ prefix_node = prefix(ident, complete: ident.complete)
2889
+ @buffers[:param_prefix] = prefix_node
2890
+ end
2891
+ begin
2892
+
2893
+ trace('PARAMETER parameter_end')
2894
+ param_node = parameter()
2895
+ completed = true
2896
+ prefix_node = @buffers.delete(:param_prefix)
2897
+ unless prefix_node.nil?
2898
+ param_node <<= prefix_node
2899
+ unless prefix_node.complete
2900
+ trace('PN incomplete')
2901
+ completed = false
2902
+ end
2903
+ end
2904
+
2905
+ value_node = @buffers.delete(:param_value)
2906
+ unless value_node.nil?
2907
+ param_node <<= value_node
2908
+ unless value_node.complete
2909
+ trace('VN incomplete')
2910
+ completed = false
2911
+ end
2912
+ else
2913
+ completed = false
2914
+ end
2915
+
2916
+ param_node.complete = completed
2917
+ @buffers[:parameter] = param_node
2918
+ end
2919
+ begin
2920
+
2921
+ trace('PARAMETER yield_parameter')
2922
+ yield @buffers[:parameter]
2923
+ end
2924
+ when 18 then
2925
+ begin
2926
+
2927
+ trace('IDENTIFIER end_identifier')
2928
+ id_end = p
2929
+ chars = data[id_start...id_end]
2930
+ completed = !chars.empty?
2931
+ ast_node = identifier(utf8_string(chars), complete: completed)
2932
+ @buffers[:ident] = ast_node
2933
+ end
2934
+ begin
2935
+
2936
+ trace('PARAMETER add_ident_param_value')
2937
+ ident = @buffers.delete(:ident)
2938
+ value_node = value(ident, complete: ident.complete)
2939
+ @buffers[:param_value] = value_node
1388
2940
  end
1389
2941
  begin
1390
2942
 
1391
- @buffers[:parameter] ||= parameter(prefix(nil))
1392
- @buffers[:parameter] = @buffers[:parameter] << value(@buffers[:string])
2943
+ trace('PARAMETER parameter_end')
2944
+ param_node = parameter()
2945
+ completed = true
2946
+ prefix_node = @buffers.delete(:param_prefix)
2947
+ unless prefix_node.nil?
2948
+ param_node <<= prefix_node
2949
+ unless prefix_node.complete
2950
+ trace('PN incomplete')
2951
+ completed = false
2952
+ end
2953
+ end
2954
+
2955
+ value_node = @buffers.delete(:param_value)
2956
+ unless value_node.nil?
2957
+ param_node <<= value_node
2958
+ unless value_node.complete
2959
+ trace('VN incomplete')
2960
+ completed = false
2961
+ end
2962
+ else
2963
+ completed = false
2964
+ end
2965
+
2966
+ param_node.complete = completed
2967
+ @buffers[:parameter] = param_node
1393
2968
  end
1394
2969
  begin
1395
2970
 
2971
+ trace('PARAMETER yield_parameter')
1396
2972
  yield @buffers[:parameter]
1397
2973
  end
2974
+ when 13 then
2975
+ begin
2976
+
2977
+ trace('STRING start_string')
2978
+ @string_opened = true
2979
+ p_start = p
2980
+ end
2981
+ begin
2982
+
2983
+ trace('STRING stop_string')
2984
+ @string_closed = true
2985
+ p_end = p
2986
+ end
2987
+ begin
2988
+
2989
+ trace('STRING string_end')
2990
+ completed = @string_opened && @string_closed
2991
+ chars = data[p_start...p_end]
2992
+ ast_node = string(utf8_string(chars), complete: true)
2993
+ @buffers[:string] = ast_node
2994
+ end
2995
+ begin
2996
+
2997
+ trace('STRING yield_string')
2998
+ yield @buffers[:string]
2999
+ end
1398
3000
  end
1399
3001
  end
1400
3002
  end
@@ -1412,69 +3014,481 @@ begin
1412
3014
  if _goto_level <= _test_eof
1413
3015
  if p == eof
1414
3016
  case _bel_eof_actions[cs]
1415
- when 8 then
3017
+ when 30 then
3018
+ begin
3019
+
3020
+ trace('IDENTIFIER yield_identifier')
3021
+ yield @buffers[:ident]
3022
+ end
3023
+ when 27 then
1416
3024
  begin
1417
3025
 
1418
- unless @buffers[:ident].is_a?(::AST::Node)
1419
- @buffers[:ident] ||= []
1420
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3026
+ trace("PARAMETER parameter_node_eof")
3027
+ param_node = parameter()
3028
+ completed = true
3029
+ prefix_node = @buffers.delete(:param_prefix)
3030
+ unless prefix_node.nil?
3031
+ param_node <<= prefix_node
3032
+ unless prefix_node.complete
3033
+ completed = false
3034
+ end
3035
+ end
3036
+
3037
+ string_value_node = @buffers.delete(:string)
3038
+ unless string_value_node.nil?
3039
+ param_node <<= string_value_node
3040
+ unless string_value_node.complete
3041
+ completed = false
3042
+ end
3043
+ else
3044
+ completed = false
1421
3045
  end
3046
+
3047
+ param_node.complete = completed
3048
+ yield param_node
3049
+ end
3050
+ when 28 then
3051
+ begin
3052
+
3053
+ trace('IDENTIFIER end_identifier')
3054
+ id_end = p
3055
+ chars = data[id_start...id_end]
3056
+ completed = !chars.empty?
3057
+ ast_node = identifier(utf8_string(chars), complete: completed)
3058
+ @buffers[:ident] = ast_node
3059
+ end
3060
+ begin
3061
+
3062
+ trace('IDENTIFIER yield_identifier')
3063
+ yield @buffers[:ident]
3064
+ end
3065
+ when 4 then
3066
+ begin
3067
+
3068
+ trace('STRING a_string_err')
3069
+ p_end = p
3070
+ chars = data[p_start...p_end]
3071
+ ast_node = string(utf8_string(chars), complete: false)
3072
+ @buffers[:string] = ast_node
3073
+ end
3074
+ begin
3075
+
3076
+ trace("PARAMETER parameter_node_eof")
3077
+ param_node = parameter()
3078
+ completed = true
3079
+ prefix_node = @buffers.delete(:param_prefix)
3080
+ unless prefix_node.nil?
3081
+ param_node <<= prefix_node
3082
+ unless prefix_node.complete
3083
+ completed = false
3084
+ end
3085
+ end
3086
+
3087
+ string_value_node = @buffers.delete(:string)
3088
+ unless string_value_node.nil?
3089
+ param_node <<= string_value_node
3090
+ unless string_value_node.complete
3091
+ completed = false
3092
+ end
3093
+ else
3094
+ completed = false
3095
+ end
3096
+
3097
+ param_node.complete = completed
3098
+ yield param_node
3099
+ end
3100
+ when 10 then
3101
+ begin
3102
+
3103
+ trace('STRING string_node_err')
3104
+ p_end = p
3105
+ chars = data[p_start...p_end]
3106
+ ast_node = string(utf8_string(chars), complete: false)
3107
+ yield ast_node
3108
+ end
3109
+ begin
3110
+
3111
+ trace('STRING string_node_eof')
3112
+ yield @buffers[:string]
3113
+ end
3114
+ when 25 then
3115
+ begin
3116
+
3117
+ trace('IDENTIFIER an_ident_eof')
3118
+ if @identifier_started
3119
+ id_end = p
3120
+ chars = data[id_start...id_end]
3121
+ completed = !chars.empty?
3122
+ ast_node = identifier(utf8_string(chars), complete: completed)
3123
+ @buffers[:ident] = ast_node
3124
+ end
3125
+ end
3126
+ begin
3127
+
3128
+ trace('PARAMETER parameter_end')
3129
+ param_node = parameter()
3130
+ completed = true
3131
+ prefix_node = @buffers.delete(:param_prefix)
3132
+ unless prefix_node.nil?
3133
+ param_node <<= prefix_node
3134
+ unless prefix_node.complete
3135
+ trace('PN incomplete')
3136
+ completed = false
3137
+ end
3138
+ end
3139
+
3140
+ value_node = @buffers.delete(:param_value)
3141
+ unless value_node.nil?
3142
+ param_node <<= value_node
3143
+ unless value_node.complete
3144
+ trace('VN incomplete')
3145
+ completed = false
3146
+ end
3147
+ else
3148
+ completed = false
3149
+ end
3150
+
3151
+ param_node.complete = completed
3152
+ @buffers[:parameter] = param_node
3153
+ end
3154
+ begin
3155
+
3156
+ trace('PARAMETER yield_parameter')
3157
+ yield @buffers[:parameter]
3158
+ end
3159
+ when 6 then
3160
+ begin
3161
+
3162
+ trace('STRING eof_string')
3163
+ p_end = p
3164
+ chars = data[p_start...p_end]
3165
+ ast_node = string(utf8_string(chars), complete: false)
3166
+ @buffers[:string] = ast_node
3167
+ end
3168
+ begin
3169
+
3170
+ trace('STRING a_string_err')
3171
+ p_end = p
3172
+ chars = data[p_start...p_end]
3173
+ ast_node = string(utf8_string(chars), complete: false)
3174
+ @buffers[:string] = ast_node
1422
3175
  end
1423
- when 5 then
1424
3176
  begin
1425
3177
 
1426
- @buffers[:string] ||= []
1427
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3178
+ trace("PARAMETER parameter_node_eof")
3179
+ param_node = parameter()
3180
+ completed = true
3181
+ prefix_node = @buffers.delete(:param_prefix)
3182
+ unless prefix_node.nil?
3183
+ param_node <<= prefix_node
3184
+ unless prefix_node.complete
3185
+ completed = false
3186
+ end
3187
+ end
3188
+
3189
+ string_value_node = @buffers.delete(:string)
3190
+ unless string_value_node.nil?
3191
+ param_node <<= string_value_node
3192
+ unless string_value_node.complete
3193
+ completed = false
3194
+ end
3195
+ else
3196
+ completed = false
3197
+ end
3198
+
3199
+ param_node.complete = completed
3200
+ yield param_node
1428
3201
  end
1429
3202
  when 12 then
1430
3203
  begin
1431
3204
 
1432
- unless @buffers[:ident].is_a?(::AST::Node)
1433
- @buffers[:ident] ||= []
1434
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3205
+ trace('STRING eof_string')
3206
+ p_end = p
3207
+ chars = data[p_start...p_end]
3208
+ ast_node = string(utf8_string(chars), complete: false)
3209
+ @buffers[:string] = ast_node
3210
+ end
3211
+ begin
3212
+
3213
+ trace('STRING string_node_err')
3214
+ p_end = p
3215
+ chars = data[p_start...p_end]
3216
+ ast_node = string(utf8_string(chars), complete: false)
3217
+ yield ast_node
3218
+ end
3219
+ begin
3220
+
3221
+ trace('STRING string_node_eof')
3222
+ yield @buffers[:string]
3223
+ end
3224
+ when 15 then
3225
+ begin
3226
+
3227
+ trace('PARAMETER add_string_param_value')
3228
+ string_node = @buffers.delete(:string)
3229
+ value_node = value(string_node, complete: string_node.complete)
3230
+ @buffers[:param_value] = value_node
3231
+ end
3232
+ begin
3233
+
3234
+ trace('PARAMETER parameter_end')
3235
+ param_node = parameter()
3236
+ completed = true
3237
+ prefix_node = @buffers.delete(:param_prefix)
3238
+ unless prefix_node.nil?
3239
+ param_node <<= prefix_node
3240
+ unless prefix_node.complete
3241
+ trace('PN incomplete')
3242
+ completed = false
3243
+ end
3244
+ end
3245
+
3246
+ value_node = @buffers.delete(:param_value)
3247
+ unless value_node.nil?
3248
+ param_node <<= value_node
3249
+ unless value_node.complete
3250
+ trace('VN incomplete')
3251
+ completed = false
3252
+ end
3253
+ else
3254
+ completed = false
1435
3255
  end
3256
+
3257
+ param_node.complete = completed
3258
+ @buffers[:parameter] = param_node
1436
3259
  end
1437
3260
  begin
1438
3261
 
1439
- @buffers[:ident] ||= []
1440
- yield @buffers[:ident]
3262
+ trace('PARAMETER yield_parameter')
3263
+ yield @buffers[:parameter]
1441
3264
  end
1442
3265
  when 1 then
1443
3266
  begin
1444
3267
 
1445
- unless @buffers[:ident].is_a?(::AST::Node)
1446
- @buffers[:ident] ||= []
1447
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3268
+ trace('IDENTIFIER an_ident_eof')
3269
+ if @identifier_started
3270
+ id_end = p
3271
+ chars = data[id_start...id_end]
3272
+ completed = !chars.empty?
3273
+ ast_node = identifier(utf8_string(chars), complete: completed)
3274
+ @buffers[:ident] = ast_node
1448
3275
  end
1449
3276
  end
1450
3277
  begin
1451
3278
 
1452
- @buffers[:string] ||= []
1453
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3279
+ trace('IDENTIFIER an_ident_err')
3280
+ id_end = p
3281
+ chars = data[id_start...id_end]
3282
+ ast_node = identifier(utf8_string(chars), complete: false)
3283
+ @buffers[:ident] = ast_node
3284
+ end
3285
+ begin
3286
+
3287
+ trace('STRING a_string_err')
3288
+ p_end = p
3289
+ chars = data[p_start...p_end]
3290
+ ast_node = string(utf8_string(chars), complete: false)
3291
+ @buffers[:string] = ast_node
1454
3292
  end
1455
- when 4 then
1456
3293
  begin
1457
3294
 
1458
- @buffers[:string] ||= []
1459
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3295
+ trace("PARAMETER parameter_node_eof")
3296
+ param_node = parameter()
3297
+ completed = true
3298
+ prefix_node = @buffers.delete(:param_prefix)
3299
+ unless prefix_node.nil?
3300
+ param_node <<= prefix_node
3301
+ unless prefix_node.complete
3302
+ completed = false
3303
+ end
3304
+ end
3305
+
3306
+ string_value_node = @buffers.delete(:string)
3307
+ unless string_value_node.nil?
3308
+ param_node <<= string_value_node
3309
+ unless string_value_node.complete
3310
+ completed = false
3311
+ end
3312
+ else
3313
+ completed = false
3314
+ end
3315
+
3316
+ param_node.complete = completed
3317
+ yield param_node
1460
3318
  end
3319
+ when 21 then
1461
3320
  begin
1462
3321
 
1463
- unless @buffers[:ident].is_a?(::AST::Node)
1464
- @buffers[:ident] ||= []
1465
- @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3322
+ trace('IDENTIFIER an_ident_eof')
3323
+ if @identifier_started
3324
+ id_end = p
3325
+ chars = data[id_start...id_end]
3326
+ completed = !chars.empty?
3327
+ ast_node = identifier(utf8_string(chars), complete: completed)
3328
+ @buffers[:ident] = ast_node
1466
3329
  end
1467
3330
  end
1468
- when 14 then
1469
3331
  begin
1470
3332
 
1471
- @buffers[:string] ||= []
1472
- @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3333
+ trace('PARAMETER add_prefix')
3334
+ ident = @buffers.delete(:ident)
3335
+ prefix_node = prefix(ident, complete: ident.complete)
3336
+ @buffers[:param_prefix] = prefix_node
1473
3337
  end
1474
3338
  begin
1475
3339
 
1476
- @buffers[:string] ||= []
1477
- yield @buffers[:string]
3340
+ trace('PARAMETER parameter_end')
3341
+ param_node = parameter()
3342
+ completed = true
3343
+ prefix_node = @buffers.delete(:param_prefix)
3344
+ unless prefix_node.nil?
3345
+ param_node <<= prefix_node
3346
+ unless prefix_node.complete
3347
+ trace('PN incomplete')
3348
+ completed = false
3349
+ end
3350
+ end
3351
+
3352
+ value_node = @buffers.delete(:param_value)
3353
+ unless value_node.nil?
3354
+ param_node <<= value_node
3355
+ unless value_node.complete
3356
+ trace('VN incomplete')
3357
+ completed = false
3358
+ end
3359
+ else
3360
+ completed = false
3361
+ end
3362
+
3363
+ param_node.complete = completed
3364
+ @buffers[:parameter] = param_node
3365
+ end
3366
+ begin
3367
+
3368
+ trace('PARAMETER yield_parameter')
3369
+ yield @buffers[:parameter]
3370
+ end
3371
+ when 16 then
3372
+ begin
3373
+
3374
+ trace('IDENTIFIER end_identifier')
3375
+ id_end = p
3376
+ chars = data[id_start...id_end]
3377
+ completed = !chars.empty?
3378
+ ast_node = identifier(utf8_string(chars), complete: completed)
3379
+ @buffers[:ident] = ast_node
3380
+ end
3381
+ begin
3382
+
3383
+ trace('IDENTIFIER an_ident_eof')
3384
+ if @identifier_started
3385
+ id_end = p
3386
+ chars = data[id_start...id_end]
3387
+ completed = !chars.empty?
3388
+ ast_node = identifier(utf8_string(chars), complete: completed)
3389
+ @buffers[:ident] = ast_node
3390
+ end
3391
+ end
3392
+ begin
3393
+
3394
+ trace('PARAMETER add_ident_param_value')
3395
+ ident = @buffers.delete(:ident)
3396
+ value_node = value(ident, complete: ident.complete)
3397
+ @buffers[:param_value] = value_node
3398
+ end
3399
+ begin
3400
+
3401
+ trace('PARAMETER parameter_end')
3402
+ param_node = parameter()
3403
+ completed = true
3404
+ prefix_node = @buffers.delete(:param_prefix)
3405
+ unless prefix_node.nil?
3406
+ param_node <<= prefix_node
3407
+ unless prefix_node.complete
3408
+ trace('PN incomplete')
3409
+ completed = false
3410
+ end
3411
+ end
3412
+
3413
+ value_node = @buffers.delete(:param_value)
3414
+ unless value_node.nil?
3415
+ param_node <<= value_node
3416
+ unless value_node.complete
3417
+ trace('VN incomplete')
3418
+ completed = false
3419
+ end
3420
+ else
3421
+ completed = false
3422
+ end
3423
+
3424
+ param_node.complete = completed
3425
+ @buffers[:parameter] = param_node
3426
+ end
3427
+ begin
3428
+
3429
+ trace('PARAMETER yield_parameter')
3430
+ yield @buffers[:parameter]
3431
+ end
3432
+ when 19 then
3433
+ begin
3434
+
3435
+ trace('IDENTIFIER an_ident_eof')
3436
+ if @identifier_started
3437
+ id_end = p
3438
+ chars = data[id_start...id_end]
3439
+ completed = !chars.empty?
3440
+ ast_node = identifier(utf8_string(chars), complete: completed)
3441
+ @buffers[:ident] = ast_node
3442
+ end
3443
+ end
3444
+ begin
3445
+
3446
+ trace('IDENTIFIER end_identifier')
3447
+ id_end = p
3448
+ chars = data[id_start...id_end]
3449
+ completed = !chars.empty?
3450
+ ast_node = identifier(utf8_string(chars), complete: completed)
3451
+ @buffers[:ident] = ast_node
3452
+ end
3453
+ begin
3454
+
3455
+ trace('PARAMETER add_ident_param_value')
3456
+ ident = @buffers.delete(:ident)
3457
+ value_node = value(ident, complete: ident.complete)
3458
+ @buffers[:param_value] = value_node
3459
+ end
3460
+ begin
3461
+
3462
+ trace('PARAMETER parameter_end')
3463
+ param_node = parameter()
3464
+ completed = true
3465
+ prefix_node = @buffers.delete(:param_prefix)
3466
+ unless prefix_node.nil?
3467
+ param_node <<= prefix_node
3468
+ unless prefix_node.complete
3469
+ trace('PN incomplete')
3470
+ completed = false
3471
+ end
3472
+ end
3473
+
3474
+ value_node = @buffers.delete(:param_value)
3475
+ unless value_node.nil?
3476
+ param_node <<= value_node
3477
+ unless value_node.complete
3478
+ trace('VN incomplete')
3479
+ completed = false
3480
+ end
3481
+ else
3482
+ completed = false
3483
+ end
3484
+
3485
+ param_node.complete = completed
3486
+ @buffers[:parameter] = param_node
3487
+ end
3488
+ begin
3489
+
3490
+ trace('PARAMETER yield_parameter')
3491
+ yield @buffers[:parameter]
1478
3492
  end
1479
3493
  end
1480
3494
  end
@@ -1486,7 +3500,7 @@ begin
1486
3500
  end
1487
3501
  end
1488
3502
 
1489
- # end: ragel
3503
+ # end: ragel
1490
3504
  end
1491
3505
  end
1492
3506
  end