bel_parser 1.0.0.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +7 -0
  2. data/.gemspec +28 -0
  3. data/CHANGELOG.md +10 -0
  4. data/LICENSE +191 -0
  5. data/README.md +9 -0
  6. data/VERSION +1 -0
  7. data/bin/bel2_termcheck +39 -0
  8. data/lib/bel_parser.rb +17 -0
  9. data/lib/bel_parser/ast_filter.rb +27 -0
  10. data/lib/bel_parser/ast_generator.rb +86 -0
  11. data/lib/bel_parser/ast_validator.rb +40 -0
  12. data/lib/bel_parser/expression/parser.rb +42 -0
  13. data/lib/bel_parser/expression/term_semantics.rb +36 -0
  14. data/lib/bel_parser/language.rb +7 -0
  15. data/lib/bel_parser/language/function.rb +59 -0
  16. data/lib/bel_parser/language/quoting.rb +236 -0
  17. data/lib/bel_parser/language/semantic_ast.rb +604 -0
  18. data/lib/bel_parser/language/semantics/analyzer.rb +59 -0
  19. data/lib/bel_parser/language/signature.rb +39 -0
  20. data/lib/bel_parser/language/specification.rb +49 -0
  21. data/lib/bel_parser/language/syntax/expression/incomplete_node.rb +14 -0
  22. data/lib/bel_parser/language/syntax/expression/invalid_term_function.rb +22 -0
  23. data/lib/bel_parser/language/version1.rb +50 -0
  24. data/lib/bel_parser/language/version1/functions/abundance.rb +85 -0
  25. data/lib/bel_parser/language/version1/functions/biological_process.rb +85 -0
  26. data/lib/bel_parser/language/version1/functions/catalytic_activity.rb +110 -0
  27. data/lib/bel_parser/language/version1/functions/cell_secretion.rb +80 -0
  28. data/lib/bel_parser/language/version1/functions/cell_surface_expression.rb +80 -0
  29. data/lib/bel_parser/language/version1/functions/chaperone_activity.rb +110 -0
  30. data/lib/bel_parser/language/version1/functions/complex_abundance.rb +115 -0
  31. data/lib/bel_parser/language/version1/functions/composite_abundance.rb +80 -0
  32. data/lib/bel_parser/language/version1/functions/degradation.rb +80 -0
  33. data/lib/bel_parser/language/version1/functions/fusion.rb +302 -0
  34. data/lib/bel_parser/language/version1/functions/gene_abundance.rb +125 -0
  35. data/lib/bel_parser/language/version1/functions/gtp_bound_activity.rb +110 -0
  36. data/lib/bel_parser/language/version1/functions/kinase_activity.rb +110 -0
  37. data/lib/bel_parser/language/version1/functions/list.rb +115 -0
  38. data/lib/bel_parser/language/version1/functions/micro_rna_abundance.rb +85 -0
  39. data/lib/bel_parser/language/version1/functions/molecular_activity.rb +80 -0
  40. data/lib/bel_parser/language/version1/functions/pathology.rb +85 -0
  41. data/lib/bel_parser/language/version1/functions/peptidase_activity.rb +110 -0
  42. data/lib/bel_parser/language/version1/functions/phosphatase_activity.rb +110 -0
  43. data/lib/bel_parser/language/version1/functions/products.rb +80 -0
  44. data/lib/bel_parser/language/version1/functions/protein_abundance.rb +245 -0
  45. data/lib/bel_parser/language/version1/functions/protein_modification.rb +167 -0
  46. data/lib/bel_parser/language/version1/functions/reactants.rb +80 -0
  47. data/lib/bel_parser/language/version1/functions/reaction.rb +85 -0
  48. data/lib/bel_parser/language/version1/functions/ribosylation_activity.rb +110 -0
  49. data/lib/bel_parser/language/version1/functions/rna_abundance.rb +125 -0
  50. data/lib/bel_parser/language/version1/functions/substitution.rb +96 -0
  51. data/lib/bel_parser/language/version1/functions/transcriptional_activity.rb +110 -0
  52. data/lib/bel_parser/language/version1/functions/translocation.rb +100 -0
  53. data/lib/bel_parser/language/version1/functions/transport_activity.rb +110 -0
  54. data/lib/bel_parser/language/version1/functions/truncation.rb +82 -0
  55. data/lib/bel_parser/language/version1/return_types/abundance.rb +20 -0
  56. data/lib/bel_parser/language/version1/return_types/any.rb +74 -0
  57. data/lib/bel_parser/language/version1/return_types/biological_process.rb +17 -0
  58. data/lib/bel_parser/language/version1/return_types/catalytic_activity.rb +20 -0
  59. data/lib/bel_parser/language/version1/return_types/chaperone_activity.rb +20 -0
  60. data/lib/bel_parser/language/version1/return_types/complex_abundance.rb +17 -0
  61. data/lib/bel_parser/language/version1/return_types/fusion.rb +17 -0
  62. data/lib/bel_parser/language/version1/return_types/gene_abundance.rb +17 -0
  63. data/lib/bel_parser/language/version1/return_types/gtp_bound_activity.rb +20 -0
  64. data/lib/bel_parser/language/version1/return_types/kinase_activity.rb +20 -0
  65. data/lib/bel_parser/language/version1/return_types/list.rb +17 -0
  66. data/lib/bel_parser/language/version1/return_types/micro_rna_abundance.rb +17 -0
  67. data/lib/bel_parser/language/version1/return_types/molecular_activity.rb +20 -0
  68. data/lib/bel_parser/language/version1/return_types/pathology.rb +17 -0
  69. data/lib/bel_parser/language/version1/return_types/peptidase_activity.rb +20 -0
  70. data/lib/bel_parser/language/version1/return_types/phosphatase_activity.rb +20 -0
  71. data/lib/bel_parser/language/version1/return_types/products.rb +17 -0
  72. data/lib/bel_parser/language/version1/return_types/protein_abundance.rb +17 -0
  73. data/lib/bel_parser/language/version1/return_types/protein_modification.rb +17 -0
  74. data/lib/bel_parser/language/version1/return_types/reactants.rb +17 -0
  75. data/lib/bel_parser/language/version1/return_types/ribosylation_activity.rb +20 -0
  76. data/lib/bel_parser/language/version1/return_types/rna_abundance.rb +17 -0
  77. data/lib/bel_parser/language/version1/return_types/substitution.rb +17 -0
  78. data/lib/bel_parser/language/version1/return_types/transcriptional_activity.rb +20 -0
  79. data/lib/bel_parser/language/version1/return_types/transport_activity.rb +20 -0
  80. data/lib/bel_parser/language/version1/return_types/truncation.rb +17 -0
  81. data/lib/bel_parser/language/version2.rb +50 -0
  82. data/lib/bel_parser/language/version2/functions/abundance.rb +165 -0
  83. data/lib/bel_parser/language/version2/functions/activity.rb +115 -0
  84. data/lib/bel_parser/language/version2/functions/biological_process.rb +85 -0
  85. data/lib/bel_parser/language/version2/functions/cell_secretion.rb +80 -0
  86. data/lib/bel_parser/language/version2/functions/cell_surface_expression.rb +80 -0
  87. data/lib/bel_parser/language/version2/functions/complex_abundance.rb +190 -0
  88. data/lib/bel_parser/language/version2/functions/composite_abundance.rb +80 -0
  89. data/lib/bel_parser/language/version2/functions/degradation.rb +80 -0
  90. data/lib/bel_parser/language/version2/functions/fragment.rb +119 -0
  91. data/lib/bel_parser/language/version2/functions/from_location.rb +85 -0
  92. data/lib/bel_parser/language/version2/functions/fusion.rb +227 -0
  93. data/lib/bel_parser/language/version2/functions/gene_abundance.rb +195 -0
  94. data/lib/bel_parser/language/version2/functions/list.rb +115 -0
  95. data/lib/bel_parser/language/version2/functions/location.rb +85 -0
  96. data/lib/bel_parser/language/version2/functions/micro_rna_abundance.rb +165 -0
  97. data/lib/bel_parser/language/version2/functions/molecular_activity.rb +83 -0
  98. data/lib/bel_parser/language/version2/functions/pathology.rb +85 -0
  99. data/lib/bel_parser/language/version2/functions/products.rb +80 -0
  100. data/lib/bel_parser/language/version2/functions/protein_abundance.rb +285 -0
  101. data/lib/bel_parser/language/version2/functions/protein_modification.rb +167 -0
  102. data/lib/bel_parser/language/version2/functions/reactants.rb +80 -0
  103. data/lib/bel_parser/language/version2/functions/reaction.rb +85 -0
  104. data/lib/bel_parser/language/version2/functions/rna_abundance.rb +195 -0
  105. data/lib/bel_parser/language/version2/functions/to_location.rb +85 -0
  106. data/lib/bel_parser/language/version2/functions/translocation.rb +90 -0
  107. data/lib/bel_parser/language/version2/functions/variant.rb +83 -0
  108. data/lib/bel_parser/language/version2/return_types/abundance.rb +20 -0
  109. data/lib/bel_parser/language/version2/return_types/activity.rb +20 -0
  110. data/lib/bel_parser/language/version2/return_types/any.rb +74 -0
  111. data/lib/bel_parser/language/version2/return_types/biological_process.rb +17 -0
  112. data/lib/bel_parser/language/version2/return_types/complex_abundance.rb +17 -0
  113. data/lib/bel_parser/language/version2/return_types/fragment.rb +20 -0
  114. data/lib/bel_parser/language/version2/return_types/from_location.rb +20 -0
  115. data/lib/bel_parser/language/version2/return_types/fusion.rb +17 -0
  116. data/lib/bel_parser/language/version2/return_types/gene_abundance.rb +17 -0
  117. data/lib/bel_parser/language/version2/return_types/list.rb +17 -0
  118. data/lib/bel_parser/language/version2/return_types/location.rb +20 -0
  119. data/lib/bel_parser/language/version2/return_types/micro_rna_abundance.rb +17 -0
  120. data/lib/bel_parser/language/version2/return_types/molecular_activity.rb +20 -0
  121. data/lib/bel_parser/language/version2/return_types/pathology.rb +17 -0
  122. data/lib/bel_parser/language/version2/return_types/products.rb +17 -0
  123. data/lib/bel_parser/language/version2/return_types/protein_abundance.rb +17 -0
  124. data/lib/bel_parser/language/version2/return_types/protein_modification.rb +17 -0
  125. data/lib/bel_parser/language/version2/return_types/reactants.rb +17 -0
  126. data/lib/bel_parser/language/version2/return_types/rna_abundance.rb +17 -0
  127. data/lib/bel_parser/language/version2/return_types/to_location.rb +20 -0
  128. data/lib/bel_parser/language/version2/return_types/variant.rb +20 -0
  129. data/lib/bel_parser/mixin/line_continuator.rb +15 -0
  130. data/lib/bel_parser/mixin/line_mapping.rb +14 -0
  131. data/lib/bel_parser/parser.rb +54 -0
  132. data/lib/bel_parser/parsers/ast/mapped_traversal.rb +36 -0
  133. data/lib/bel_parser/parsers/ast/node.rb +705 -0
  134. data/lib/bel_parser/parsers/ast/sexp.rb +8 -0
  135. data/lib/bel_parser/parsers/ast/traversal.rb +21 -0
  136. data/lib/bel_parser/parsers/bel_script.rb +4 -0
  137. data/lib/bel_parser/parsers/bel_script/define_annotation.rb +5476 -0
  138. data/lib/bel_parser/parsers/bel_script/define_annotation.rl +141 -0
  139. data/lib/bel_parser/parsers/bel_script/define_namespace.rb +1780 -0
  140. data/lib/bel_parser/parsers/bel_script/define_namespace.rl +121 -0
  141. data/lib/bel_parser/parsers/bel_script/set.rb +4556 -0
  142. data/lib/bel_parser/parsers/bel_script/set.rl +116 -0
  143. data/lib/bel_parser/parsers/bel_script/unset.rb +706 -0
  144. data/lib/bel_parser/parsers/bel_script/unset.rl +95 -0
  145. data/lib/bel_parser/parsers/common.rb +5 -0
  146. data/lib/bel_parser/parsers/common/blank_line.rb +211 -0
  147. data/lib/bel_parser/parsers/common/blank_line.rl +81 -0
  148. data/lib/bel_parser/parsers/common/comment_line.rb +245 -0
  149. data/lib/bel_parser/parsers/common/comment_line.rl +97 -0
  150. data/lib/bel_parser/parsers/common/common.rb +7 -0
  151. data/lib/bel_parser/parsers/common/common.rl +13 -0
  152. data/lib/bel_parser/parsers/common/identifier.rb +289 -0
  153. data/lib/bel_parser/parsers/common/identifier.rl +106 -0
  154. data/lib/bel_parser/parsers/common/list.rb +2142 -0
  155. data/lib/bel_parser/parsers/common/list.rl +144 -0
  156. data/lib/bel_parser/parsers/common/string.rb +271 -0
  157. data/lib/bel_parser/parsers/common/string.rl +107 -0
  158. data/lib/bel_parser/parsers/expression.rb +7 -0
  159. data/lib/bel_parser/parsers/expression/comment.rb +239 -0
  160. data/lib/bel_parser/parsers/expression/comment.rl +97 -0
  161. data/lib/bel_parser/parsers/expression/parameter.rb +1506 -0
  162. data/lib/bel_parser/parsers/expression/parameter.rl +97 -0
  163. data/lib/bel_parser/parsers/expression/relationship.rb +254 -0
  164. data/lib/bel_parser/parsers/expression/relationship.rl +98 -0
  165. data/lib/bel_parser/parsers/expression/statement_nested.rb +17802 -0
  166. data/lib/bel_parser/parsers/expression/statement_nested.rl +141 -0
  167. data/lib/bel_parser/parsers/expression/statement_observed_term.rb +7291 -0
  168. data/lib/bel_parser/parsers/expression/statement_observed_term.rl +92 -0
  169. data/lib/bel_parser/parsers/expression/statement_simple.rb +10475 -0
  170. data/lib/bel_parser/parsers/expression/statement_simple.rl +112 -0
  171. data/lib/bel_parser/parsers/expression/term.rb +3989 -0
  172. data/lib/bel_parser/parsers/expression/term.rl +157 -0
  173. data/lib/bel_parser/parsers/line_parser.rb +92 -0
  174. data/lib/bel_parser/parsers/mixin/buffer.rb +10 -0
  175. data/lib/bel_parser/parsers/nonblocking_io_wrapper.rb +50 -0
  176. data/lib/bel_parser/script/parser.rb +49 -0
  177. data/lib/bel_parser/vendor/ast.rb +17 -0
  178. data/lib/bel_parser/vendor/ast/node.rb +254 -0
  179. data/lib/bel_parser/vendor/ast/processor.rb +12 -0
  180. data/lib/bel_parser/vendor/ast/processor/mixin.rb +282 -0
  181. data/lib/bel_parser/vendor/ast/sexp.rb +30 -0
  182. metadata +226 -0
@@ -0,0 +1,121 @@
1
+ # begin: ragel
2
+ =begin
3
+ %%{
4
+ machine bel;
5
+
6
+ include 'common.rl';
7
+ include 'identifier.rl';
8
+ include 'string.rl';
9
+
10
+ DEFINE_KW = [dD][eE][fF][iI][nN][eE];
11
+ NAMESPACE_KW = [nN][aA][mM][eE][sS][pP][aA][cC][eE];
12
+ AS_KW = [aA][sS];
13
+ URL_KW = [uU][rR][lL];
14
+
15
+ action namespace_keyword {
16
+ @buffers[:define_namespace] = define_namespace()
17
+ }
18
+
19
+ action keyword {
20
+ @buffers[:define_namespace] = @buffers[:define_namespace] << keyword(@buffers[:ident])
21
+ }
22
+
23
+ action url_keyword {
24
+ @buffers[:define_namespace] = @buffers[:define_namespace] << domain(url())
25
+ }
26
+
27
+ action string {
28
+ keyword, domain = @buffers[:define_namespace].children
29
+ domain = domain(
30
+ domain.children[0] << @buffers[:string])
31
+ @buffers[:define_namespace] = define_namespace(keyword, domain)
32
+ }
33
+
34
+ action yield_define_namespace {
35
+ yield @buffers[:define_namespace]
36
+ }
37
+
38
+ # Define FSM
39
+ define_namespace :=
40
+ DEFINE_KW
41
+ SP+
42
+ NAMESPACE_KW @namespace_keyword
43
+ SP+
44
+ IDENT %keyword
45
+ SP+
46
+ AS_KW
47
+ SP+
48
+ URL_KW @url_keyword
49
+ SP+
50
+ STRING %string
51
+ SP*
52
+ NL @yield_define_namespace;
53
+ }%%
54
+ =end
55
+ # end: ragel
56
+
57
+ require_relative '../ast/node'
58
+ require_relative '../mixin/buffer'
59
+ require_relative '../nonblocking_io_wrapper'
60
+
61
+ module BELParser
62
+ module Parsers
63
+ module BELScript
64
+ module DefineNamespace
65
+
66
+ class << self
67
+
68
+ MAX_LENGTH = 1024 * 128 # 128K
69
+
70
+ def parse(content)
71
+ return nil unless content
72
+
73
+ Parser.new(content).each do |obj|
74
+ yield obj
75
+ end
76
+ end
77
+ end
78
+
79
+ private
80
+
81
+ class Parser
82
+ include Enumerable
83
+ include BELParser::Parsers::Buffer
84
+ include BELParser::Parsers::AST::Sexp
85
+
86
+ def initialize(content)
87
+ @content = content
88
+ # begin: ragel
89
+ %% write data;
90
+ # end: ragel
91
+ end
92
+
93
+ def each
94
+ @buffers = {}
95
+ stack = []
96
+ data = @content.unpack('C*')
97
+ p = 0
98
+ pe = data.length
99
+ eof = data.length
100
+
101
+ # begin: ragel
102
+ %% write init;
103
+ %% write exec;
104
+ # end: ragel
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+
112
+ if __FILE__ == $0
113
+ $stdin.each_line do |line|
114
+ BELParser::Parsers::BELScript::DefineNamespace.parse(line) { |obj|
115
+ puts obj.inspect
116
+ }
117
+ end
118
+ end
119
+
120
+ # vim: ft=ruby ts=2 sw=2:
121
+ # encoding: utf-8
@@ -0,0 +1,4556 @@
1
+
2
+ # begin: ragel
3
+ =begin
4
+
5
+ class << self
6
+ attr_accessor :_bel_trans_keys
7
+ private :_bel_trans_keys, :_bel_trans_keys=
8
+ end
9
+ self._bel_trans_keys = [
10
+ 0, 0, 83, 115, 69, 101,
11
+ 84, 116, 9, 32, 9,
12
+ 122, 9, 122, 9, 61,
13
+ 9, 32, 9, 123, 34, 92,
14
+ 10, 10, 92, 92, 10,
15
+ 122, 9, 122, 34, 92,
16
+ 9, 125, 9, 125, 10, 10,
17
+ 92, 92, 9, 125, 48,
18
+ 122, 10, 122, 34, 34,
19
+ 34, 92, 10, 10, 92, 92,
20
+ 123, 123, 9, 122, 34,
21
+ 92, 9, 125, 9, 125,
22
+ 10, 10, 92, 92, 9, 125,
23
+ 0, 0, 0, 0, 0,
24
+ 0, 0, 0, 0
25
+ ]
26
+
27
+ class << self
28
+ attr_accessor :_bel_key_spans
29
+ private :_bel_key_spans, :_bel_key_spans=
30
+ end
31
+ self._bel_key_spans = [
32
+ 0, 33, 33, 33, 24, 114, 114, 53,
33
+ 24, 115, 59, 1, 1, 113, 114, 59,
34
+ 117, 117, 1, 1, 117, 75, 113, 1,
35
+ 59, 1, 1, 1, 114, 59, 117, 117,
36
+ 1, 1, 117, 0, 0, 0, 0
37
+ ]
38
+
39
+ class << self
40
+ attr_accessor :_bel_index_offsets
41
+ private :_bel_index_offsets, :_bel_index_offsets=
42
+ end
43
+ self._bel_index_offsets = [
44
+ 0, 0, 34, 68, 102, 127, 242, 357,
45
+ 411, 436, 552, 612, 614, 616, 730, 845,
46
+ 905, 1023, 1141, 1143, 1145, 1263, 1339, 1453,
47
+ 1455, 1515, 1517, 1519, 1521, 1636, 1696, 1814,
48
+ 1932, 1934, 1936, 2054, 2055, 2056, 2057
49
+ ]
50
+
51
+ class << self
52
+ attr_accessor :_bel_indicies
53
+ private :_bel_indicies, :_bel_indicies=
54
+ end
55
+ self._bel_indicies = [
56
+ 0, 1, 1, 1, 1, 1, 1, 1,
57
+ 1, 1, 1, 1, 1, 1, 1, 1,
58
+ 1, 1, 1, 1, 1, 1, 1, 1,
59
+ 1, 1, 1, 1, 1, 1, 1, 1,
60
+ 0, 1, 2, 1, 1, 1, 1, 1,
61
+ 1, 1, 1, 1, 1, 1, 1, 1,
62
+ 1, 1, 1, 1, 1, 1, 1, 1,
63
+ 1, 1, 1, 1, 1, 1, 1, 1,
64
+ 1, 1, 2, 1, 3, 1, 1, 1,
65
+ 1, 1, 1, 1, 1, 1, 1, 1,
66
+ 1, 1, 1, 1, 1, 1, 1, 1,
67
+ 1, 1, 1, 1, 1, 1, 1, 1,
68
+ 1, 1, 1, 1, 3, 1, 4, 1,
69
+ 1, 1, 1, 1, 1, 1, 1, 1,
70
+ 1, 1, 1, 1, 1, 1, 1, 1,
71
+ 1, 1, 1, 1, 1, 4, 1, 6,
72
+ 5, 5, 5, 5, 5, 5, 5, 5,
73
+ 5, 5, 5, 5, 5, 5, 5, 5,
74
+ 5, 5, 5, 5, 5, 5, 6, 5,
75
+ 5, 5, 5, 5, 5, 5, 5, 5,
76
+ 5, 5, 5, 5, 5, 5, 7, 7,
77
+ 7, 7, 7, 7, 7, 7, 7, 7,
78
+ 5, 5, 5, 5, 5, 5, 5, 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, 5, 5, 5, 5, 7, 5, 7,
83
+ 7, 7, 7, 7, 7, 7, 7, 7,
84
+ 7, 7, 7, 7, 7, 7, 7, 7,
85
+ 7, 7, 7, 7, 7, 7, 7, 7,
86
+ 7, 5, 8, 5, 5, 5, 5, 5,
87
+ 5, 5, 5, 5, 5, 5, 5, 5,
88
+ 5, 5, 5, 5, 5, 5, 5, 5,
89
+ 5, 8, 5, 5, 5, 5, 5, 5,
90
+ 5, 5, 5, 5, 5, 5, 5, 5,
91
+ 5, 9, 9, 9, 9, 9, 9, 9,
92
+ 9, 9, 9, 5, 5, 5, 5, 5,
93
+ 5, 5, 9, 9, 9, 9, 9, 9,
94
+ 9, 9, 9, 9, 9, 9, 9, 9,
95
+ 9, 9, 9, 9, 9, 9, 9, 9,
96
+ 9, 9, 9, 9, 5, 5, 5, 5,
97
+ 9, 5, 9, 9, 9, 9, 9, 9,
98
+ 9, 9, 9, 9, 9, 9, 9, 9,
99
+ 9, 9, 9, 9, 9, 9, 9, 9,
100
+ 9, 9, 9, 9, 5, 10, 1, 1,
101
+ 1, 1, 1, 1, 1, 1, 1, 1,
102
+ 1, 1, 1, 1, 1, 1, 1, 1,
103
+ 1, 1, 1, 1, 10, 1, 1, 1,
104
+ 1, 1, 1, 1, 1, 1, 1, 1,
105
+ 1, 1, 1, 1, 1, 1, 1, 1,
106
+ 1, 1, 1, 1, 1, 1, 1, 1,
107
+ 1, 11, 1, 12, 1, 1, 1, 1,
108
+ 1, 1, 1, 1, 1, 1, 1, 1,
109
+ 1, 1, 1, 1, 1, 1, 1, 1,
110
+ 1, 1, 12, 1, 12, 13, 13, 13,
111
+ 13, 13, 13, 13, 13, 13, 13, 13,
112
+ 13, 13, 13, 13, 13, 13, 13, 13,
113
+ 13, 13, 13, 12, 13, 14, 13, 13,
114
+ 13, 13, 13, 13, 13, 13, 13, 13,
115
+ 13, 13, 13, 15, 15, 15, 15, 15,
116
+ 15, 15, 15, 15, 15, 13, 13, 13,
117
+ 13, 13, 13, 13, 15, 15, 15, 15,
118
+ 15, 15, 15, 15, 15, 15, 15, 15,
119
+ 15, 15, 15, 15, 15, 15, 15, 15,
120
+ 15, 15, 15, 15, 15, 15, 13, 13,
121
+ 13, 13, 15, 13, 15, 15, 15, 15,
122
+ 15, 15, 15, 15, 15, 15, 15, 15,
123
+ 15, 15, 15, 15, 15, 15, 15, 15,
124
+ 15, 15, 15, 15, 15, 15, 16, 13,
125
+ 18, 17, 17, 17, 17, 17, 17, 17,
126
+ 17, 17, 17, 17, 17, 17, 17, 17,
127
+ 17, 17, 17, 17, 17, 17, 17, 17,
128
+ 17, 17, 17, 17, 17, 17, 17, 17,
129
+ 17, 17, 17, 17, 17, 17, 17, 17,
130
+ 17, 17, 17, 17, 17, 17, 17, 17,
131
+ 17, 17, 17, 17, 17, 17, 17, 17,
132
+ 17, 17, 19, 17, 21, 20, 19, 17,
133
+ 22, 5, 5, 5, 5, 5, 5, 5,
134
+ 5, 5, 5, 5, 5, 5, 5, 5,
135
+ 5, 5, 5, 5, 5, 5, 5, 5,
136
+ 5, 5, 5, 5, 5, 5, 5, 5,
137
+ 5, 5, 5, 5, 5, 5, 23, 23,
138
+ 23, 23, 23, 23, 23, 23, 23, 23,
139
+ 5, 5, 5, 5, 5, 5, 5, 23,
140
+ 23, 23, 23, 23, 23, 23, 23, 23,
141
+ 23, 23, 23, 23, 23, 23, 23, 23,
142
+ 23, 23, 23, 23, 23, 23, 23, 23,
143
+ 23, 5, 5, 5, 5, 23, 5, 23,
144
+ 23, 23, 23, 23, 23, 23, 23, 23,
145
+ 23, 23, 23, 23, 23, 23, 23, 23,
146
+ 23, 23, 23, 23, 23, 23, 23, 23,
147
+ 23, 5, 25, 24, 24, 24, 24, 24,
148
+ 24, 24, 24, 24, 24, 24, 24, 24,
149
+ 24, 24, 24, 24, 24, 24, 24, 24,
150
+ 24, 25, 24, 26, 24, 24, 24, 24,
151
+ 24, 24, 24, 24, 24, 24, 24, 24,
152
+ 24, 27, 27, 27, 27, 27, 27, 27,
153
+ 27, 27, 27, 24, 24, 24, 24, 24,
154
+ 24, 24, 27, 27, 27, 27, 27, 27,
155
+ 27, 27, 27, 27, 27, 27, 27, 27,
156
+ 27, 27, 27, 27, 27, 27, 27, 27,
157
+ 27, 27, 27, 27, 24, 24, 24, 24,
158
+ 27, 24, 27, 27, 27, 27, 27, 27,
159
+ 27, 27, 27, 27, 27, 27, 27, 27,
160
+ 27, 27, 27, 27, 27, 27, 27, 27,
161
+ 27, 27, 27, 27, 24, 29, 28, 28,
162
+ 28, 28, 28, 28, 28, 28, 28, 28,
163
+ 28, 28, 28, 28, 28, 28, 28, 28,
164
+ 28, 28, 28, 28, 28, 28, 28, 28,
165
+ 28, 28, 28, 28, 28, 28, 28, 28,
166
+ 28, 28, 28, 28, 28, 28, 28, 28,
167
+ 28, 28, 28, 28, 28, 28, 28, 28,
168
+ 28, 28, 28, 28, 28, 28, 28, 30,
169
+ 28, 32, 31, 31, 31, 31, 31, 31,
170
+ 31, 31, 31, 31, 31, 31, 31, 31,
171
+ 31, 31, 31, 31, 31, 31, 31, 31,
172
+ 32, 31, 31, 31, 31, 31, 31, 31,
173
+ 31, 31, 31, 31, 33, 31, 31, 31,
174
+ 31, 31, 31, 31, 31, 31, 31, 31,
175
+ 31, 31, 31, 31, 31, 31, 31, 31,
176
+ 31, 31, 31, 31, 31, 31, 31, 31,
177
+ 31, 31, 31, 31, 31, 31, 31, 31,
178
+ 31, 31, 31, 31, 31, 31, 31, 31,
179
+ 31, 31, 31, 31, 31, 31, 31, 31,
180
+ 31, 31, 31, 31, 31, 31, 31, 31,
181
+ 31, 31, 31, 31, 31, 31, 31, 31,
182
+ 31, 31, 31, 31, 31, 31, 31, 31,
183
+ 31, 31, 31, 31, 31, 34, 31, 35,
184
+ 1, 1, 1, 1, 1, 1, 1, 1,
185
+ 1, 1, 1, 1, 1, 1, 1, 1,
186
+ 1, 1, 1, 1, 1, 1, 35, 1,
187
+ 1, 1, 1, 1, 1, 1, 1, 1,
188
+ 1, 1, 36, 1, 1, 1, 1, 1,
189
+ 1, 1, 1, 1, 1, 1, 1, 1,
190
+ 1, 1, 1, 1, 1, 1, 1, 1,
191
+ 1, 1, 1, 1, 1, 1, 1, 1,
192
+ 1, 1, 1, 1, 1, 1, 1, 1,
193
+ 1, 1, 1, 1, 1, 1, 1, 1,
194
+ 1, 1, 1, 1, 1, 1, 1, 1,
195
+ 1, 1, 1, 1, 1, 1, 1, 1,
196
+ 1, 1, 1, 1, 1, 1, 1, 1,
197
+ 1, 1, 1, 1, 1, 1, 1, 1,
198
+ 1, 1, 1, 37, 1, 38, 1, 30,
199
+ 28, 40, 39, 39, 39, 39, 39, 39,
200
+ 39, 39, 39, 39, 39, 39, 39, 39,
201
+ 39, 39, 39, 39, 39, 39, 39, 39,
202
+ 40, 39, 39, 39, 39, 39, 39, 39,
203
+ 39, 39, 39, 39, 41, 39, 39, 39,
204
+ 42, 42, 42, 42, 42, 42, 42, 42,
205
+ 42, 42, 39, 39, 39, 39, 39, 39,
206
+ 39, 42, 42, 42, 42, 42, 42, 42,
207
+ 42, 42, 42, 42, 42, 42, 42, 42,
208
+ 42, 42, 42, 42, 42, 42, 42, 42,
209
+ 42, 42, 42, 39, 39, 39, 39, 42,
210
+ 39, 42, 42, 42, 42, 42, 42, 42,
211
+ 42, 42, 42, 42, 42, 42, 42, 42,
212
+ 42, 42, 42, 42, 42, 42, 42, 42,
213
+ 42, 42, 42, 39, 39, 43, 39, 45,
214
+ 45, 45, 45, 45, 45, 45, 45, 45,
215
+ 45, 44, 44, 44, 44, 44, 44, 44,
216
+ 45, 45, 45, 45, 45, 45, 45, 45,
217
+ 45, 45, 45, 45, 45, 45, 45, 45,
218
+ 45, 45, 45, 45, 45, 45, 45, 45,
219
+ 45, 45, 44, 44, 44, 44, 45, 44,
220
+ 45, 45, 45, 45, 45, 45, 45, 45,
221
+ 45, 45, 45, 45, 45, 45, 45, 45,
222
+ 45, 45, 45, 45, 45, 45, 45, 45,
223
+ 45, 45, 44, 46, 44, 44, 44, 44,
224
+ 44, 44, 44, 44, 44, 44, 44, 44,
225
+ 44, 44, 44, 44, 44, 44, 44, 44,
226
+ 44, 44, 44, 44, 44, 44, 44, 44,
227
+ 44, 44, 44, 44, 44, 44, 44, 44,
228
+ 44, 47, 47, 47, 47, 47, 47, 47,
229
+ 47, 47, 47, 44, 44, 44, 44, 44,
230
+ 44, 44, 47, 47, 47, 47, 47, 47,
231
+ 47, 47, 47, 47, 47, 47, 47, 47,
232
+ 47, 47, 47, 47, 47, 47, 47, 47,
233
+ 47, 47, 47, 47, 44, 44, 44, 44,
234
+ 47, 44, 47, 47, 47, 47, 47, 47,
235
+ 47, 47, 47, 47, 47, 47, 47, 47,
236
+ 47, 47, 47, 47, 47, 47, 47, 47,
237
+ 47, 47, 47, 47, 44, 49, 48, 51,
238
+ 50, 50, 50, 50, 50, 50, 50, 50,
239
+ 50, 50, 50, 50, 50, 50, 50, 50,
240
+ 50, 50, 50, 50, 50, 50, 50, 50,
241
+ 50, 50, 50, 50, 50, 50, 50, 50,
242
+ 50, 50, 50, 50, 50, 50, 50, 50,
243
+ 50, 50, 50, 50, 50, 50, 50, 50,
244
+ 50, 50, 50, 50, 50, 50, 50, 50,
245
+ 50, 52, 50, 53, 48, 52, 50, 55,
246
+ 54, 57, 56, 56, 56, 56, 56, 56,
247
+ 56, 56, 56, 56, 56, 56, 56, 56,
248
+ 56, 56, 56, 56, 56, 56, 56, 56,
249
+ 57, 56, 58, 56, 56, 56, 56, 56,
250
+ 56, 56, 56, 56, 56, 56, 56, 56,
251
+ 59, 59, 59, 59, 59, 59, 59, 59,
252
+ 59, 59, 56, 56, 56, 56, 56, 56,
253
+ 56, 59, 59, 59, 59, 59, 59, 59,
254
+ 59, 59, 59, 59, 59, 59, 59, 59,
255
+ 59, 59, 59, 59, 59, 59, 59, 59,
256
+ 59, 59, 59, 56, 56, 56, 56, 59,
257
+ 56, 59, 59, 59, 59, 59, 59, 59,
258
+ 59, 59, 59, 59, 59, 59, 59, 59,
259
+ 59, 59, 59, 59, 59, 59, 59, 59,
260
+ 59, 59, 59, 56, 61, 60, 60, 60,
261
+ 60, 60, 60, 60, 60, 60, 60, 60,
262
+ 60, 60, 60, 60, 60, 60, 60, 60,
263
+ 60, 60, 60, 60, 60, 60, 60, 60,
264
+ 60, 60, 60, 60, 60, 60, 60, 60,
265
+ 60, 60, 60, 60, 60, 60, 60, 60,
266
+ 60, 60, 60, 60, 60, 60, 60, 60,
267
+ 60, 60, 60, 60, 60, 60, 62, 60,
268
+ 64, 63, 63, 63, 63, 63, 63, 63,
269
+ 63, 63, 63, 63, 63, 63, 63, 63,
270
+ 63, 63, 63, 63, 63, 63, 63, 64,
271
+ 63, 63, 63, 63, 63, 63, 63, 63,
272
+ 63, 63, 63, 65, 63, 63, 63, 63,
273
+ 63, 63, 63, 63, 63, 63, 63, 63,
274
+ 63, 63, 63, 63, 63, 63, 63, 63,
275
+ 63, 63, 63, 63, 63, 63, 63, 63,
276
+ 63, 63, 63, 63, 63, 63, 63, 63,
277
+ 63, 63, 63, 63, 63, 63, 63, 63,
278
+ 63, 63, 63, 63, 63, 63, 63, 63,
279
+ 63, 63, 63, 63, 63, 63, 63, 63,
280
+ 63, 63, 63, 63, 63, 63, 63, 63,
281
+ 63, 63, 63, 63, 63, 63, 63, 63,
282
+ 63, 63, 63, 63, 66, 63, 67, 54,
283
+ 54, 54, 54, 54, 54, 54, 54, 54,
284
+ 54, 54, 54, 54, 54, 54, 54, 54,
285
+ 54, 54, 54, 54, 54, 67, 54, 54,
286
+ 54, 54, 54, 54, 54, 54, 54, 54,
287
+ 54, 68, 54, 54, 54, 54, 54, 54,
288
+ 54, 54, 54, 54, 54, 54, 54, 54,
289
+ 54, 54, 54, 54, 54, 54, 54, 54,
290
+ 54, 54, 54, 54, 54, 54, 54, 54,
291
+ 54, 54, 54, 54, 54, 54, 54, 54,
292
+ 54, 54, 54, 54, 54, 54, 54, 54,
293
+ 54, 54, 54, 54, 54, 54, 54, 54,
294
+ 54, 54, 54, 54, 54, 54, 54, 54,
295
+ 54, 54, 54, 54, 54, 54, 54, 54,
296
+ 54, 54, 54, 54, 54, 54, 54, 54,
297
+ 54, 54, 69, 54, 70, 54, 62, 60,
298
+ 72, 71, 71, 71, 71, 71, 71, 71,
299
+ 71, 71, 71, 71, 71, 71, 71, 71,
300
+ 71, 71, 71, 71, 71, 71, 71, 72,
301
+ 71, 71, 71, 71, 71, 71, 71, 71,
302
+ 71, 71, 71, 73, 71, 71, 71, 74,
303
+ 74, 74, 74, 74, 74, 74, 74, 74,
304
+ 74, 71, 71, 71, 71, 71, 71, 71,
305
+ 74, 74, 74, 74, 74, 74, 74, 74,
306
+ 74, 74, 74, 74, 74, 74, 74, 74,
307
+ 74, 74, 74, 74, 74, 74, 74, 74,
308
+ 74, 74, 71, 71, 71, 71, 74, 71,
309
+ 74, 74, 74, 74, 74, 74, 74, 74,
310
+ 74, 74, 74, 74, 74, 74, 74, 74,
311
+ 74, 74, 74, 74, 74, 74, 74, 74,
312
+ 74, 74, 71, 71, 75, 71, 1, 1,
313
+ 1, 1, 0
314
+ ]
315
+
316
+ class << self
317
+ attr_accessor :_bel_trans_targs
318
+ private :_bel_trans_targs, :_bel_trans_targs=
319
+ end
320
+ self._bel_trans_targs = [
321
+ 2, 0, 3, 4, 5, 0, 5, 6,
322
+ 7, 6, 7, 8, 9, 0, 10, 13,
323
+ 14, 10, 11, 12, 0, 35, 35, 13,
324
+ 0, 14, 15, 20, 15, 16, 19, 0,
325
+ 17, 14, 18, 17, 14, 18, 35, 0,
326
+ 17, 14, 20, 18, 0, 22, 36, 22,
327
+ 0, 24, 24, 25, 26, 37, 0, 28,
328
+ 0, 28, 29, 34, 29, 30, 33, 0,
329
+ 31, 28, 32, 31, 28, 32, 38, 0,
330
+ 31, 28, 34, 32
331
+ ]
332
+
333
+ class << self
334
+ attr_accessor :_bel_trans_actions
335
+ private :_bel_trans_actions, :_bel_trans_actions=
336
+ end
337
+ self._bel_trans_actions = [
338
+ 0, 0, 0, 0, 1, 2, 0, 3,
339
+ 4, 5, 0, 0, 0, 6, 7, 3,
340
+ 8, 10, 10, 10, 9, 11, 12, 5,
341
+ 13, 0, 7, 3, 10, 10, 10, 14,
342
+ 15, 16, 17, 0, 18, 19, 20, 21,
343
+ 22, 23, 5, 24, 25, 3, 26, 5,
344
+ 27, 7, 10, 10, 10, 28, 29, 8,
345
+ 30, 0, 7, 3, 10, 10, 10, 31,
346
+ 15, 16, 17, 0, 18, 19, 32, 33,
347
+ 22, 23, 5, 24
348
+ ]
349
+
350
+ class << self
351
+ attr_accessor :_bel_eof_actions
352
+ private :_bel_eof_actions, :_bel_eof_actions=
353
+ end
354
+ self._bel_eof_actions = [
355
+ 0, 0, 0, 0, 0, 2, 2, 0,
356
+ 0, 6, 9, 9, 9, 2, 13, 14,
357
+ 14, 0, 0, 14, 21, 25, 25, 27,
358
+ 27, 27, 27, 29, 30, 31, 31, 29,
359
+ 29, 31, 33, 0, 0, 0, 0
360
+ ]
361
+
362
+ class << self
363
+ attr_accessor :bel_start
364
+ end
365
+ self.bel_start = 1;
366
+ class << self
367
+ attr_accessor :bel_first_final
368
+ end
369
+ self.bel_first_final = 35;
370
+ class << self
371
+ attr_accessor :bel_error
372
+ end
373
+ self.bel_error = 0;
374
+
375
+ class << self
376
+ attr_accessor :bel_en_ident
377
+ end
378
+ self.bel_en_ident = 21;
379
+ class << self
380
+ attr_accessor :bel_en_string
381
+ end
382
+ self.bel_en_string = 23;
383
+ class << self
384
+ attr_accessor :bel_en_list
385
+ end
386
+ self.bel_en_list = 27;
387
+ class << self
388
+ attr_accessor :bel_en_set
389
+ end
390
+ self.bel_en_set = 1;
391
+
392
+
393
+ begin
394
+ p ||= 0
395
+ pe ||= data.length
396
+ cs = bel_start
397
+ end
398
+
399
+ begin
400
+ testEof = false
401
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
402
+ _goto_level = 0
403
+ _resume = 10
404
+ _eof_trans = 15
405
+ _again = 20
406
+ _test_eof = 30
407
+ _out = 40
408
+ while true
409
+ if _goto_level <= 0
410
+ if p == pe
411
+ _goto_level = _test_eof
412
+ next
413
+ end
414
+ if cs == 0
415
+ _goto_level = _out
416
+ next
417
+ end
418
+ end
419
+ if _goto_level <= _resume
420
+ _keys = cs << 1
421
+ _inds = _bel_index_offsets[cs]
422
+ _slen = _bel_key_spans[cs]
423
+ _wide = data[p].ord
424
+ _trans = if ( _slen > 0 &&
425
+ _bel_trans_keys[_keys] <= _wide &&
426
+ _wide <= _bel_trans_keys[_keys + 1]
427
+ ) then
428
+ _bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ]
429
+ else
430
+ _bel_indicies[ _inds + _slen ]
431
+ end
432
+ cs = _bel_trans_targs[_trans]
433
+ if _bel_trans_actions[_trans] != 0
434
+ case _bel_trans_actions[_trans]
435
+ when 5 then
436
+ begin
437
+
438
+ (@buffers[:ident] ||= []) << data[p].ord
439
+ end
440
+ when 2 then
441
+ begin
442
+
443
+ unless @buffers[:ident].is_a?(::AST::Node)
444
+ @buffers[:ident] ||= []
445
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
446
+ end
447
+ end
448
+ when 10 then
449
+ begin
450
+
451
+ (@buffers[:string] ||= []) << data[p].ord
452
+ end
453
+ when 9 then
454
+ begin
455
+
456
+ @buffers[:string] ||= []
457
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
458
+ end
459
+ when 18 then
460
+ begin
461
+
462
+ @buffers.delete(:string)
463
+ @buffers.delete(:ident)
464
+ end
465
+ when 8 then
466
+ begin
467
+
468
+ @buffers[:list] = list()
469
+ end
470
+ when 19 then
471
+ begin
472
+
473
+ #TODO: Mark @buffers[:list] as complete.
474
+ end
475
+ when 32 then
476
+ begin
477
+
478
+ yield @buffers[:list]
479
+ end
480
+ when 29 then
481
+ begin
482
+
483
+ @buffers[:list] ||= list()
484
+ yield @buffers[:list]
485
+ end
486
+ when 1 then
487
+ begin
488
+
489
+ @buffers[:set] = set()
490
+ end
491
+ when 3 then
492
+ begin
493
+
494
+ @buffers[:ident] = []
495
+ end
496
+ begin
497
+
498
+ (@buffers[:ident] ||= []) << data[p].ord
499
+ end
500
+ when 26 then
501
+ begin
502
+
503
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
504
+ end
505
+ begin
506
+
507
+ yield @buffers[:ident]
508
+ end
509
+ when 4 then
510
+ begin
511
+
512
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
513
+ end
514
+ begin
515
+
516
+ @buffers[:set] = @buffers[:set] << name(@buffers[:ident])
517
+ end
518
+ when 25 then
519
+ begin
520
+
521
+ unless @buffers[:ident].is_a?(::AST::Node)
522
+ @buffers[:ident] ||= []
523
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
524
+ end
525
+ end
526
+ begin
527
+
528
+ @buffers[:ident] ||= []
529
+ yield @buffers[:ident]
530
+ end
531
+ when 7 then
532
+ begin
533
+
534
+ @buffers[:string] = []
535
+ end
536
+ begin
537
+
538
+ (@buffers[:string] ||= []) << data[p].ord
539
+ end
540
+ when 28 then
541
+ begin
542
+
543
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
544
+ end
545
+ begin
546
+
547
+ yield @buffers[:string]
548
+ end
549
+ when 6 then
550
+ begin
551
+
552
+ @buffers[:string] ||= []
553
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
554
+ end
555
+ begin
556
+
557
+ unless @buffers[:ident].is_a?(::AST::Node)
558
+ @buffers[:ident] ||= []
559
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
560
+ end
561
+ end
562
+ when 27 then
563
+ begin
564
+
565
+ @buffers[:string] ||= []
566
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
567
+ end
568
+ begin
569
+
570
+ @buffers[:string] ||= []
571
+ yield @buffers[:string]
572
+ end
573
+ when 20 then
574
+ begin
575
+
576
+ @buffers[:set] = @buffers[:set] << value(@buffers[:list])
577
+ end
578
+ begin
579
+
580
+ yield @buffers[:set]
581
+ end
582
+ when 22 then
583
+ begin
584
+
585
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
586
+ end
587
+ begin
588
+
589
+ @buffers[:list_arg] = list_item(@buffers[:ident])
590
+ end
591
+ begin
592
+
593
+ # Append list argument if its value is not empty.
594
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
595
+ if list_arg_value != ''
596
+ @buffers[:list] <<= @buffers[:list_arg]
597
+ end
598
+ end
599
+ when 12 then
600
+ begin
601
+
602
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
603
+ end
604
+ begin
605
+
606
+ @buffers[:set] = @buffers[:set] << value(@buffers[:ident])
607
+ end
608
+ begin
609
+
610
+ yield @buffers[:set]
611
+ end
612
+ when 21 then
613
+ begin
614
+
615
+ unless @buffers[:ident].is_a?(::AST::Node)
616
+ @buffers[:ident] ||= []
617
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
618
+ end
619
+ end
620
+ begin
621
+
622
+ #TODO: Mark @buffers[:list_arg] identifier as error.
623
+ @buffers[:list_arg] = list_item(@buffers[:ident])
624
+ end
625
+ begin
626
+
627
+ # Append list argument if its value is not empty.
628
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
629
+ if list_arg_value != ''
630
+ @buffers[:list] <<= @buffers[:list_arg]
631
+ end
632
+ end
633
+ when 15 then
634
+ begin
635
+
636
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
637
+ end
638
+ begin
639
+
640
+ @buffers[:list_arg] = list_item(@buffers[:string])
641
+ end
642
+ begin
643
+
644
+ # Append list argument if its value is not empty.
645
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
646
+ if list_arg_value != ''
647
+ @buffers[:list] <<= @buffers[:list_arg]
648
+ end
649
+ end
650
+ when 11 then
651
+ begin
652
+
653
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
654
+ end
655
+ begin
656
+
657
+ @buffers[:set] = @buffers[:set] << value(@buffers[:string])
658
+ end
659
+ begin
660
+
661
+ yield @buffers[:set]
662
+ end
663
+ when 14 then
664
+ begin
665
+
666
+ @buffers[:string] ||= []
667
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
668
+ end
669
+ begin
670
+
671
+ #TODO: Mark @buffers[:list_arg] string as error.
672
+ @buffers[:list_arg] = list_item(@buffers[:string])
673
+ end
674
+ begin
675
+
676
+ # Append list argument if its value is not empty.
677
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
678
+ if list_arg_value != ''
679
+ @buffers[:list] <<= @buffers[:list_arg]
680
+ end
681
+ end
682
+ when 23 then
683
+ begin
684
+
685
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
686
+ end
687
+ begin
688
+
689
+ @buffers[:list_arg] = list_item(@buffers[:ident])
690
+ end
691
+ begin
692
+
693
+ # Append list argument if its value is not empty.
694
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
695
+ if list_arg_value != ''
696
+ @buffers[:list] <<= @buffers[:list_arg]
697
+ end
698
+ end
699
+ begin
700
+
701
+ @buffers.delete(:string)
702
+ @buffers.delete(:ident)
703
+ end
704
+ when 24 then
705
+ begin
706
+
707
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
708
+ end
709
+ begin
710
+
711
+ @buffers[:list_arg] = list_item(@buffers[:ident])
712
+ end
713
+ begin
714
+
715
+ # Append list argument if its value is not empty.
716
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
717
+ if list_arg_value != ''
718
+ @buffers[:list] <<= @buffers[:list_arg]
719
+ end
720
+ end
721
+ begin
722
+
723
+ #TODO: Mark @buffers[:list] as complete.
724
+ end
725
+ when 33 then
726
+ begin
727
+
728
+ unless @buffers[:ident].is_a?(::AST::Node)
729
+ @buffers[:ident] ||= []
730
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
731
+ end
732
+ end
733
+ begin
734
+
735
+ #TODO: Mark @buffers[:list_arg] identifier as error.
736
+ @buffers[:list_arg] = list_item(@buffers[:ident])
737
+ end
738
+ begin
739
+
740
+ # Append list argument if its value is not empty.
741
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
742
+ if list_arg_value != ''
743
+ @buffers[:list] <<= @buffers[:list_arg]
744
+ end
745
+ end
746
+ begin
747
+
748
+ @buffers[:list] ||= list()
749
+ yield @buffers[:list]
750
+ end
751
+ when 16 then
752
+ begin
753
+
754
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
755
+ end
756
+ begin
757
+
758
+ @buffers[:list_arg] = list_item(@buffers[:string])
759
+ end
760
+ begin
761
+
762
+ # Append list argument if its value is not empty.
763
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
764
+ if list_arg_value != ''
765
+ @buffers[:list] <<= @buffers[:list_arg]
766
+ end
767
+ end
768
+ begin
769
+
770
+ @buffers.delete(:string)
771
+ @buffers.delete(:ident)
772
+ end
773
+ when 17 then
774
+ begin
775
+
776
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
777
+ end
778
+ begin
779
+
780
+ @buffers[:list_arg] = list_item(@buffers[:string])
781
+ end
782
+ begin
783
+
784
+ # Append list argument if its value is not empty.
785
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
786
+ if list_arg_value != ''
787
+ @buffers[:list] <<= @buffers[:list_arg]
788
+ end
789
+ end
790
+ begin
791
+
792
+ #TODO: Mark @buffers[:list] as complete.
793
+ end
794
+ when 31 then
795
+ begin
796
+
797
+ @buffers[:string] ||= []
798
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
799
+ end
800
+ begin
801
+
802
+ #TODO: Mark @buffers[:list_arg] string as error.
803
+ @buffers[:list_arg] = list_item(@buffers[:string])
804
+ end
805
+ begin
806
+
807
+ # Append list argument if its value is not empty.
808
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
809
+ if list_arg_value != ''
810
+ @buffers[:list] <<= @buffers[:list_arg]
811
+ end
812
+ end
813
+ begin
814
+
815
+ @buffers[:list] ||= list()
816
+ yield @buffers[:list]
817
+ end
818
+ when 13 then
819
+ begin
820
+
821
+ @buffers[:string] ||= []
822
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
823
+ end
824
+ begin
825
+
826
+ #TODO: Mark @buffers[:list_arg] string as error.
827
+ @buffers[:list_arg] = list_item(@buffers[:string])
828
+ end
829
+ begin
830
+
831
+ unless @buffers[:ident].is_a?(::AST::Node)
832
+ @buffers[:ident] ||= []
833
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
834
+ end
835
+ end
836
+ begin
837
+
838
+ #TODO: Mark @buffers[:list_arg] identifier as error.
839
+ @buffers[:list_arg] = list_item(@buffers[:ident])
840
+ end
841
+ begin
842
+
843
+ # Append list argument if its value is not empty.
844
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
845
+ if list_arg_value != ''
846
+ @buffers[:list] <<= @buffers[:list_arg]
847
+ end
848
+ end
849
+ when 30 then
850
+ begin
851
+
852
+ @buffers[:string] ||= []
853
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
854
+ end
855
+ begin
856
+
857
+ #TODO: Mark @buffers[:list_arg] string as error.
858
+ @buffers[:list_arg] = list_item(@buffers[:string])
859
+ end
860
+ begin
861
+
862
+ unless @buffers[:ident].is_a?(::AST::Node)
863
+ @buffers[:ident] ||= []
864
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
865
+ end
866
+ end
867
+ begin
868
+
869
+ #TODO: Mark @buffers[:list_arg] identifier as error.
870
+ @buffers[:list_arg] = list_item(@buffers[:ident])
871
+ end
872
+ begin
873
+
874
+ # Append list argument if its value is not empty.
875
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
876
+ if list_arg_value != ''
877
+ @buffers[:list] <<= @buffers[:list_arg]
878
+ end
879
+ end
880
+ begin
881
+
882
+ @buffers[:list] ||= list()
883
+ yield @buffers[:list]
884
+ end
885
+ end
886
+ end
887
+ end
888
+ if _goto_level <= _again
889
+ if cs == 0
890
+ _goto_level = _out
891
+ next
892
+ end
893
+ p += 1
894
+ if p != pe
895
+ _goto_level = _resume
896
+ next
897
+ end
898
+ end
899
+ if _goto_level <= _test_eof
900
+ if p == eof
901
+ case _bel_eof_actions[cs]
902
+ when 2 then
903
+ begin
904
+
905
+ unless @buffers[:ident].is_a?(::AST::Node)
906
+ @buffers[:ident] ||= []
907
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
908
+ end
909
+ end
910
+ when 9 then
911
+ begin
912
+
913
+ @buffers[:string] ||= []
914
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
915
+ end
916
+ when 29 then
917
+ begin
918
+
919
+ @buffers[:list] ||= list()
920
+ yield @buffers[:list]
921
+ end
922
+ when 25 then
923
+ begin
924
+
925
+ unless @buffers[:ident].is_a?(::AST::Node)
926
+ @buffers[:ident] ||= []
927
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
928
+ end
929
+ end
930
+ begin
931
+
932
+ @buffers[:ident] ||= []
933
+ yield @buffers[:ident]
934
+ end
935
+ when 6 then
936
+ begin
937
+
938
+ @buffers[:string] ||= []
939
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
940
+ end
941
+ begin
942
+
943
+ unless @buffers[:ident].is_a?(::AST::Node)
944
+ @buffers[:ident] ||= []
945
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
946
+ end
947
+ end
948
+ when 27 then
949
+ begin
950
+
951
+ @buffers[:string] ||= []
952
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
953
+ end
954
+ begin
955
+
956
+ @buffers[:string] ||= []
957
+ yield @buffers[:string]
958
+ end
959
+ when 21 then
960
+ begin
961
+
962
+ unless @buffers[:ident].is_a?(::AST::Node)
963
+ @buffers[:ident] ||= []
964
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
965
+ end
966
+ end
967
+ begin
968
+
969
+ #TODO: Mark @buffers[:list_arg] identifier as error.
970
+ @buffers[:list_arg] = list_item(@buffers[:ident])
971
+ end
972
+ begin
973
+
974
+ # Append list argument if its value is not empty.
975
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
976
+ if list_arg_value != ''
977
+ @buffers[:list] <<= @buffers[:list_arg]
978
+ end
979
+ end
980
+ when 14 then
981
+ begin
982
+
983
+ @buffers[:string] ||= []
984
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
985
+ end
986
+ begin
987
+
988
+ #TODO: Mark @buffers[:list_arg] string as error.
989
+ @buffers[:list_arg] = list_item(@buffers[:string])
990
+ end
991
+ begin
992
+
993
+ # Append list argument if its value is not empty.
994
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
995
+ if list_arg_value != ''
996
+ @buffers[:list] <<= @buffers[:list_arg]
997
+ end
998
+ end
999
+ when 33 then
1000
+ begin
1001
+
1002
+ unless @buffers[:ident].is_a?(::AST::Node)
1003
+ @buffers[:ident] ||= []
1004
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1005
+ end
1006
+ end
1007
+ begin
1008
+
1009
+ #TODO: Mark @buffers[:list_arg] identifier as error.
1010
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1011
+ end
1012
+ begin
1013
+
1014
+ # Append list argument if its value is not empty.
1015
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1016
+ if list_arg_value != ''
1017
+ @buffers[:list] <<= @buffers[:list_arg]
1018
+ end
1019
+ end
1020
+ begin
1021
+
1022
+ @buffers[:list] ||= list()
1023
+ yield @buffers[:list]
1024
+ end
1025
+ when 31 then
1026
+ begin
1027
+
1028
+ @buffers[:string] ||= []
1029
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1030
+ end
1031
+ begin
1032
+
1033
+ #TODO: Mark @buffers[:list_arg] string as error.
1034
+ @buffers[:list_arg] = list_item(@buffers[:string])
1035
+ end
1036
+ begin
1037
+
1038
+ # Append list argument if its value is not empty.
1039
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1040
+ if list_arg_value != ''
1041
+ @buffers[:list] <<= @buffers[:list_arg]
1042
+ end
1043
+ end
1044
+ begin
1045
+
1046
+ @buffers[:list] ||= list()
1047
+ yield @buffers[:list]
1048
+ end
1049
+ when 13 then
1050
+ begin
1051
+
1052
+ @buffers[:string] ||= []
1053
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1054
+ end
1055
+ begin
1056
+
1057
+ #TODO: Mark @buffers[:list_arg] string as error.
1058
+ @buffers[:list_arg] = list_item(@buffers[:string])
1059
+ end
1060
+ begin
1061
+
1062
+ unless @buffers[:ident].is_a?(::AST::Node)
1063
+ @buffers[:ident] ||= []
1064
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1065
+ end
1066
+ end
1067
+ begin
1068
+
1069
+ #TODO: Mark @buffers[:list_arg] identifier as error.
1070
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1071
+ end
1072
+ begin
1073
+
1074
+ # Append list argument if its value is not empty.
1075
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1076
+ if list_arg_value != ''
1077
+ @buffers[:list] <<= @buffers[:list_arg]
1078
+ end
1079
+ end
1080
+ when 30 then
1081
+ begin
1082
+
1083
+ @buffers[:string] ||= []
1084
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1085
+ end
1086
+ begin
1087
+
1088
+ #TODO: Mark @buffers[:list_arg] string as error.
1089
+ @buffers[:list_arg] = list_item(@buffers[:string])
1090
+ end
1091
+ begin
1092
+
1093
+ unless @buffers[:ident].is_a?(::AST::Node)
1094
+ @buffers[:ident] ||= []
1095
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1096
+ end
1097
+ end
1098
+ begin
1099
+
1100
+ #TODO: Mark @buffers[:list_arg] identifier as error.
1101
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1102
+ end
1103
+ begin
1104
+
1105
+ # Append list argument if its value is not empty.
1106
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1107
+ if list_arg_value != ''
1108
+ @buffers[:list] <<= @buffers[:list_arg]
1109
+ end
1110
+ end
1111
+ begin
1112
+
1113
+ @buffers[:list] ||= list()
1114
+ yield @buffers[:list]
1115
+ end
1116
+ end
1117
+ end
1118
+
1119
+ end
1120
+ if _goto_level <= _out
1121
+ break
1122
+ end
1123
+ end
1124
+ end
1125
+
1126
+ class << self
1127
+ attr_accessor :_bel_trans_keys
1128
+ private :_bel_trans_keys, :_bel_trans_keys=
1129
+ end
1130
+ self._bel_trans_keys = [
1131
+ 0, 0, 83, 115, 69, 101,
1132
+ 84, 116, 9, 32, 9,
1133
+ 122, 9, 122, 9, 61,
1134
+ 9, 32, 9, 123, 34, 92,
1135
+ 10, 10, 92, 92, 10,
1136
+ 122, 9, 122, 34, 92,
1137
+ 9, 125, 9, 125, 10, 10,
1138
+ 92, 92, 9, 125, 48,
1139
+ 122, 10, 122, 34, 34,
1140
+ 34, 92, 10, 10, 92, 92,
1141
+ 123, 123, 9, 122, 34,
1142
+ 92, 9, 125, 9, 125,
1143
+ 10, 10, 92, 92, 9, 125,
1144
+ 0, 0, 0, 0, 0,
1145
+ 0, 0, 0, 0
1146
+ ]
1147
+
1148
+ class << self
1149
+ attr_accessor :_bel_key_spans
1150
+ private :_bel_key_spans, :_bel_key_spans=
1151
+ end
1152
+ self._bel_key_spans = [
1153
+ 0, 33, 33, 33, 24, 114, 114, 53,
1154
+ 24, 115, 59, 1, 1, 113, 114, 59,
1155
+ 117, 117, 1, 1, 117, 75, 113, 1,
1156
+ 59, 1, 1, 1, 114, 59, 117, 117,
1157
+ 1, 1, 117, 0, 0, 0, 0
1158
+ ]
1159
+
1160
+ class << self
1161
+ attr_accessor :_bel_index_offsets
1162
+ private :_bel_index_offsets, :_bel_index_offsets=
1163
+ end
1164
+ self._bel_index_offsets = [
1165
+ 0, 0, 34, 68, 102, 127, 242, 357,
1166
+ 411, 436, 552, 612, 614, 616, 730, 845,
1167
+ 905, 1023, 1141, 1143, 1145, 1263, 1339, 1453,
1168
+ 1455, 1515, 1517, 1519, 1521, 1636, 1696, 1814,
1169
+ 1932, 1934, 1936, 2054, 2055, 2056, 2057
1170
+ ]
1171
+
1172
+ class << self
1173
+ attr_accessor :_bel_indicies
1174
+ private :_bel_indicies, :_bel_indicies=
1175
+ end
1176
+ self._bel_indicies = [
1177
+ 0, 1, 1, 1, 1, 1, 1, 1,
1178
+ 1, 1, 1, 1, 1, 1, 1, 1,
1179
+ 1, 1, 1, 1, 1, 1, 1, 1,
1180
+ 1, 1, 1, 1, 1, 1, 1, 1,
1181
+ 0, 1, 2, 1, 1, 1, 1, 1,
1182
+ 1, 1, 1, 1, 1, 1, 1, 1,
1183
+ 1, 1, 1, 1, 1, 1, 1, 1,
1184
+ 1, 1, 1, 1, 1, 1, 1, 1,
1185
+ 1, 1, 2, 1, 3, 1, 1, 1,
1186
+ 1, 1, 1, 1, 1, 1, 1, 1,
1187
+ 1, 1, 1, 1, 1, 1, 1, 1,
1188
+ 1, 1, 1, 1, 1, 1, 1, 1,
1189
+ 1, 1, 1, 1, 3, 1, 4, 1,
1190
+ 1, 1, 1, 1, 1, 1, 1, 1,
1191
+ 1, 1, 1, 1, 1, 1, 1, 1,
1192
+ 1, 1, 1, 1, 1, 4, 1, 6,
1193
+ 5, 5, 5, 5, 5, 5, 5, 5,
1194
+ 5, 5, 5, 5, 5, 5, 5, 5,
1195
+ 5, 5, 5, 5, 5, 5, 6, 5,
1196
+ 5, 5, 5, 5, 5, 5, 5, 5,
1197
+ 5, 5, 5, 5, 5, 5, 7, 7,
1198
+ 7, 7, 7, 7, 7, 7, 7, 7,
1199
+ 5, 5, 5, 5, 5, 5, 5, 7,
1200
+ 7, 7, 7, 7, 7, 7, 7, 7,
1201
+ 7, 7, 7, 7, 7, 7, 7, 7,
1202
+ 7, 7, 7, 7, 7, 7, 7, 7,
1203
+ 7, 5, 5, 5, 5, 7, 5, 7,
1204
+ 7, 7, 7, 7, 7, 7, 7, 7,
1205
+ 7, 7, 7, 7, 7, 7, 7, 7,
1206
+ 7, 7, 7, 7, 7, 7, 7, 7,
1207
+ 7, 5, 8, 5, 5, 5, 5, 5,
1208
+ 5, 5, 5, 5, 5, 5, 5, 5,
1209
+ 5, 5, 5, 5, 5, 5, 5, 5,
1210
+ 5, 8, 5, 5, 5, 5, 5, 5,
1211
+ 5, 5, 5, 5, 5, 5, 5, 5,
1212
+ 5, 9, 9, 9, 9, 9, 9, 9,
1213
+ 9, 9, 9, 5, 5, 5, 5, 5,
1214
+ 5, 5, 9, 9, 9, 9, 9, 9,
1215
+ 9, 9, 9, 9, 9, 9, 9, 9,
1216
+ 9, 9, 9, 9, 9, 9, 9, 9,
1217
+ 9, 9, 9, 9, 5, 5, 5, 5,
1218
+ 9, 5, 9, 9, 9, 9, 9, 9,
1219
+ 9, 9, 9, 9, 9, 9, 9, 9,
1220
+ 9, 9, 9, 9, 9, 9, 9, 9,
1221
+ 9, 9, 9, 9, 5, 10, 1, 1,
1222
+ 1, 1, 1, 1, 1, 1, 1, 1,
1223
+ 1, 1, 1, 1, 1, 1, 1, 1,
1224
+ 1, 1, 1, 1, 10, 1, 1, 1,
1225
+ 1, 1, 1, 1, 1, 1, 1, 1,
1226
+ 1, 1, 1, 1, 1, 1, 1, 1,
1227
+ 1, 1, 1, 1, 1, 1, 1, 1,
1228
+ 1, 11, 1, 12, 1, 1, 1, 1,
1229
+ 1, 1, 1, 1, 1, 1, 1, 1,
1230
+ 1, 1, 1, 1, 1, 1, 1, 1,
1231
+ 1, 1, 12, 1, 12, 13, 13, 13,
1232
+ 13, 13, 13, 13, 13, 13, 13, 13,
1233
+ 13, 13, 13, 13, 13, 13, 13, 13,
1234
+ 13, 13, 13, 12, 13, 14, 13, 13,
1235
+ 13, 13, 13, 13, 13, 13, 13, 13,
1236
+ 13, 13, 13, 15, 15, 15, 15, 15,
1237
+ 15, 15, 15, 15, 15, 13, 13, 13,
1238
+ 13, 13, 13, 13, 15, 15, 15, 15,
1239
+ 15, 15, 15, 15, 15, 15, 15, 15,
1240
+ 15, 15, 15, 15, 15, 15, 15, 15,
1241
+ 15, 15, 15, 15, 15, 15, 13, 13,
1242
+ 13, 13, 15, 13, 15, 15, 15, 15,
1243
+ 15, 15, 15, 15, 15, 15, 15, 15,
1244
+ 15, 15, 15, 15, 15, 15, 15, 15,
1245
+ 15, 15, 15, 15, 15, 15, 16, 13,
1246
+ 18, 17, 17, 17, 17, 17, 17, 17,
1247
+ 17, 17, 17, 17, 17, 17, 17, 17,
1248
+ 17, 17, 17, 17, 17, 17, 17, 17,
1249
+ 17, 17, 17, 17, 17, 17, 17, 17,
1250
+ 17, 17, 17, 17, 17, 17, 17, 17,
1251
+ 17, 17, 17, 17, 17, 17, 17, 17,
1252
+ 17, 17, 17, 17, 17, 17, 17, 17,
1253
+ 17, 17, 19, 17, 21, 20, 19, 17,
1254
+ 22, 5, 5, 5, 5, 5, 5, 5,
1255
+ 5, 5, 5, 5, 5, 5, 5, 5,
1256
+ 5, 5, 5, 5, 5, 5, 5, 5,
1257
+ 5, 5, 5, 5, 5, 5, 5, 5,
1258
+ 5, 5, 5, 5, 5, 5, 23, 23,
1259
+ 23, 23, 23, 23, 23, 23, 23, 23,
1260
+ 5, 5, 5, 5, 5, 5, 5, 23,
1261
+ 23, 23, 23, 23, 23, 23, 23, 23,
1262
+ 23, 23, 23, 23, 23, 23, 23, 23,
1263
+ 23, 23, 23, 23, 23, 23, 23, 23,
1264
+ 23, 5, 5, 5, 5, 23, 5, 23,
1265
+ 23, 23, 23, 23, 23, 23, 23, 23,
1266
+ 23, 23, 23, 23, 23, 23, 23, 23,
1267
+ 23, 23, 23, 23, 23, 23, 23, 23,
1268
+ 23, 5, 25, 24, 24, 24, 24, 24,
1269
+ 24, 24, 24, 24, 24, 24, 24, 24,
1270
+ 24, 24, 24, 24, 24, 24, 24, 24,
1271
+ 24, 25, 24, 26, 24, 24, 24, 24,
1272
+ 24, 24, 24, 24, 24, 24, 24, 24,
1273
+ 24, 27, 27, 27, 27, 27, 27, 27,
1274
+ 27, 27, 27, 24, 24, 24, 24, 24,
1275
+ 24, 24, 27, 27, 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, 24, 24, 24, 24,
1279
+ 27, 24, 27, 27, 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, 24, 29, 28, 28,
1283
+ 28, 28, 28, 28, 28, 28, 28, 28,
1284
+ 28, 28, 28, 28, 28, 28, 28, 28,
1285
+ 28, 28, 28, 28, 28, 28, 28, 28,
1286
+ 28, 28, 28, 28, 28, 28, 28, 28,
1287
+ 28, 28, 28, 28, 28, 28, 28, 28,
1288
+ 28, 28, 28, 28, 28, 28, 28, 28,
1289
+ 28, 28, 28, 28, 28, 28, 28, 30,
1290
+ 28, 32, 31, 31, 31, 31, 31, 31,
1291
+ 31, 31, 31, 31, 31, 31, 31, 31,
1292
+ 31, 31, 31, 31, 31, 31, 31, 31,
1293
+ 32, 31, 31, 31, 31, 31, 31, 31,
1294
+ 31, 31, 31, 31, 33, 31, 31, 31,
1295
+ 31, 31, 31, 31, 31, 31, 31, 31,
1296
+ 31, 31, 31, 31, 31, 31, 31, 31,
1297
+ 31, 31, 31, 31, 31, 31, 31, 31,
1298
+ 31, 31, 31, 31, 31, 31, 31, 31,
1299
+ 31, 31, 31, 31, 31, 31, 31, 31,
1300
+ 31, 31, 31, 31, 31, 31, 31, 31,
1301
+ 31, 31, 31, 31, 31, 31, 31, 31,
1302
+ 31, 31, 31, 31, 31, 31, 31, 31,
1303
+ 31, 31, 31, 31, 31, 31, 31, 31,
1304
+ 31, 31, 31, 31, 31, 34, 31, 35,
1305
+ 1, 1, 1, 1, 1, 1, 1, 1,
1306
+ 1, 1, 1, 1, 1, 1, 1, 1,
1307
+ 1, 1, 1, 1, 1, 1, 35, 1,
1308
+ 1, 1, 1, 1, 1, 1, 1, 1,
1309
+ 1, 1, 36, 1, 1, 1, 1, 1,
1310
+ 1, 1, 1, 1, 1, 1, 1, 1,
1311
+ 1, 1, 1, 1, 1, 1, 1, 1,
1312
+ 1, 1, 1, 1, 1, 1, 1, 1,
1313
+ 1, 1, 1, 1, 1, 1, 1, 1,
1314
+ 1, 1, 1, 1, 1, 1, 1, 1,
1315
+ 1, 1, 1, 1, 1, 1, 1, 1,
1316
+ 1, 1, 1, 1, 1, 1, 1, 1,
1317
+ 1, 1, 1, 1, 1, 1, 1, 1,
1318
+ 1, 1, 1, 1, 1, 1, 1, 1,
1319
+ 1, 1, 1, 37, 1, 38, 1, 30,
1320
+ 28, 40, 39, 39, 39, 39, 39, 39,
1321
+ 39, 39, 39, 39, 39, 39, 39, 39,
1322
+ 39, 39, 39, 39, 39, 39, 39, 39,
1323
+ 40, 39, 39, 39, 39, 39, 39, 39,
1324
+ 39, 39, 39, 39, 41, 39, 39, 39,
1325
+ 42, 42, 42, 42, 42, 42, 42, 42,
1326
+ 42, 42, 39, 39, 39, 39, 39, 39,
1327
+ 39, 42, 42, 42, 42, 42, 42, 42,
1328
+ 42, 42, 42, 42, 42, 42, 42, 42,
1329
+ 42, 42, 42, 42, 42, 42, 42, 42,
1330
+ 42, 42, 42, 39, 39, 39, 39, 42,
1331
+ 39, 42, 42, 42, 42, 42, 42, 42,
1332
+ 42, 42, 42, 42, 42, 42, 42, 42,
1333
+ 42, 42, 42, 42, 42, 42, 42, 42,
1334
+ 42, 42, 42, 39, 39, 43, 39, 45,
1335
+ 45, 45, 45, 45, 45, 45, 45, 45,
1336
+ 45, 44, 44, 44, 44, 44, 44, 44,
1337
+ 45, 45, 45, 45, 45, 45, 45, 45,
1338
+ 45, 45, 45, 45, 45, 45, 45, 45,
1339
+ 45, 45, 45, 45, 45, 45, 45, 45,
1340
+ 45, 45, 44, 44, 44, 44, 45, 44,
1341
+ 45, 45, 45, 45, 45, 45, 45, 45,
1342
+ 45, 45, 45, 45, 45, 45, 45, 45,
1343
+ 45, 45, 45, 45, 45, 45, 45, 45,
1344
+ 45, 45, 44, 46, 44, 44, 44, 44,
1345
+ 44, 44, 44, 44, 44, 44, 44, 44,
1346
+ 44, 44, 44, 44, 44, 44, 44, 44,
1347
+ 44, 44, 44, 44, 44, 44, 44, 44,
1348
+ 44, 44, 44, 44, 44, 44, 44, 44,
1349
+ 44, 47, 47, 47, 47, 47, 47, 47,
1350
+ 47, 47, 47, 44, 44, 44, 44, 44,
1351
+ 44, 44, 47, 47, 47, 47, 47, 47,
1352
+ 47, 47, 47, 47, 47, 47, 47, 47,
1353
+ 47, 47, 47, 47, 47, 47, 47, 47,
1354
+ 47, 47, 47, 47, 44, 44, 44, 44,
1355
+ 47, 44, 47, 47, 47, 47, 47, 47,
1356
+ 47, 47, 47, 47, 47, 47, 47, 47,
1357
+ 47, 47, 47, 47, 47, 47, 47, 47,
1358
+ 47, 47, 47, 47, 44, 49, 48, 51,
1359
+ 50, 50, 50, 50, 50, 50, 50, 50,
1360
+ 50, 50, 50, 50, 50, 50, 50, 50,
1361
+ 50, 50, 50, 50, 50, 50, 50, 50,
1362
+ 50, 50, 50, 50, 50, 50, 50, 50,
1363
+ 50, 50, 50, 50, 50, 50, 50, 50,
1364
+ 50, 50, 50, 50, 50, 50, 50, 50,
1365
+ 50, 50, 50, 50, 50, 50, 50, 50,
1366
+ 50, 52, 50, 53, 48, 52, 50, 55,
1367
+ 54, 57, 56, 56, 56, 56, 56, 56,
1368
+ 56, 56, 56, 56, 56, 56, 56, 56,
1369
+ 56, 56, 56, 56, 56, 56, 56, 56,
1370
+ 57, 56, 58, 56, 56, 56, 56, 56,
1371
+ 56, 56, 56, 56, 56, 56, 56, 56,
1372
+ 59, 59, 59, 59, 59, 59, 59, 59,
1373
+ 59, 59, 56, 56, 56, 56, 56, 56,
1374
+ 56, 59, 59, 59, 59, 59, 59, 59,
1375
+ 59, 59, 59, 59, 59, 59, 59, 59,
1376
+ 59, 59, 59, 59, 59, 59, 59, 59,
1377
+ 59, 59, 59, 56, 56, 56, 56, 59,
1378
+ 56, 59, 59, 59, 59, 59, 59, 59,
1379
+ 59, 59, 59, 59, 59, 59, 59, 59,
1380
+ 59, 59, 59, 59, 59, 59, 59, 59,
1381
+ 59, 59, 59, 56, 61, 60, 60, 60,
1382
+ 60, 60, 60, 60, 60, 60, 60, 60,
1383
+ 60, 60, 60, 60, 60, 60, 60, 60,
1384
+ 60, 60, 60, 60, 60, 60, 60, 60,
1385
+ 60, 60, 60, 60, 60, 60, 60, 60,
1386
+ 60, 60, 60, 60, 60, 60, 60, 60,
1387
+ 60, 60, 60, 60, 60, 60, 60, 60,
1388
+ 60, 60, 60, 60, 60, 60, 62, 60,
1389
+ 64, 63, 63, 63, 63, 63, 63, 63,
1390
+ 63, 63, 63, 63, 63, 63, 63, 63,
1391
+ 63, 63, 63, 63, 63, 63, 63, 64,
1392
+ 63, 63, 63, 63, 63, 63, 63, 63,
1393
+ 63, 63, 63, 65, 63, 63, 63, 63,
1394
+ 63, 63, 63, 63, 63, 63, 63, 63,
1395
+ 63, 63, 63, 63, 63, 63, 63, 63,
1396
+ 63, 63, 63, 63, 63, 63, 63, 63,
1397
+ 63, 63, 63, 63, 63, 63, 63, 63,
1398
+ 63, 63, 63, 63, 63, 63, 63, 63,
1399
+ 63, 63, 63, 63, 63, 63, 63, 63,
1400
+ 63, 63, 63, 63, 63, 63, 63, 63,
1401
+ 63, 63, 63, 63, 63, 63, 63, 63,
1402
+ 63, 63, 63, 63, 63, 63, 63, 63,
1403
+ 63, 63, 63, 63, 66, 63, 67, 54,
1404
+ 54, 54, 54, 54, 54, 54, 54, 54,
1405
+ 54, 54, 54, 54, 54, 54, 54, 54,
1406
+ 54, 54, 54, 54, 54, 67, 54, 54,
1407
+ 54, 54, 54, 54, 54, 54, 54, 54,
1408
+ 54, 68, 54, 54, 54, 54, 54, 54,
1409
+ 54, 54, 54, 54, 54, 54, 54, 54,
1410
+ 54, 54, 54, 54, 54, 54, 54, 54,
1411
+ 54, 54, 54, 54, 54, 54, 54, 54,
1412
+ 54, 54, 54, 54, 54, 54, 54, 54,
1413
+ 54, 54, 54, 54, 54, 54, 54, 54,
1414
+ 54, 54, 54, 54, 54, 54, 54, 54,
1415
+ 54, 54, 54, 54, 54, 54, 54, 54,
1416
+ 54, 54, 54, 54, 54, 54, 54, 54,
1417
+ 54, 54, 54, 54, 54, 54, 54, 54,
1418
+ 54, 54, 69, 54, 70, 54, 62, 60,
1419
+ 72, 71, 71, 71, 71, 71, 71, 71,
1420
+ 71, 71, 71, 71, 71, 71, 71, 71,
1421
+ 71, 71, 71, 71, 71, 71, 71, 72,
1422
+ 71, 71, 71, 71, 71, 71, 71, 71,
1423
+ 71, 71, 71, 73, 71, 71, 71, 74,
1424
+ 74, 74, 74, 74, 74, 74, 74, 74,
1425
+ 74, 71, 71, 71, 71, 71, 71, 71,
1426
+ 74, 74, 74, 74, 74, 74, 74, 74,
1427
+ 74, 74, 74, 74, 74, 74, 74, 74,
1428
+ 74, 74, 74, 74, 74, 74, 74, 74,
1429
+ 74, 74, 71, 71, 71, 71, 74, 71,
1430
+ 74, 74, 74, 74, 74, 74, 74, 74,
1431
+ 74, 74, 74, 74, 74, 74, 74, 74,
1432
+ 74, 74, 74, 74, 74, 74, 74, 74,
1433
+ 74, 74, 71, 71, 75, 71, 1, 1,
1434
+ 1, 1, 0
1435
+ ]
1436
+
1437
+ class << self
1438
+ attr_accessor :_bel_trans_targs
1439
+ private :_bel_trans_targs, :_bel_trans_targs=
1440
+ end
1441
+ self._bel_trans_targs = [
1442
+ 2, 0, 3, 4, 5, 0, 5, 6,
1443
+ 7, 6, 7, 8, 9, 0, 10, 13,
1444
+ 14, 10, 11, 12, 0, 35, 35, 13,
1445
+ 0, 14, 15, 20, 15, 16, 19, 0,
1446
+ 17, 14, 18, 17, 14, 18, 35, 0,
1447
+ 17, 14, 20, 18, 0, 22, 36, 22,
1448
+ 0, 24, 24, 25, 26, 37, 0, 28,
1449
+ 0, 28, 29, 34, 29, 30, 33, 0,
1450
+ 31, 28, 32, 31, 28, 32, 38, 0,
1451
+ 31, 28, 34, 32
1452
+ ]
1453
+
1454
+ class << self
1455
+ attr_accessor :_bel_trans_actions
1456
+ private :_bel_trans_actions, :_bel_trans_actions=
1457
+ end
1458
+ self._bel_trans_actions = [
1459
+ 0, 0, 0, 0, 1, 2, 0, 3,
1460
+ 4, 5, 0, 0, 0, 6, 7, 3,
1461
+ 8, 10, 10, 10, 9, 11, 12, 5,
1462
+ 13, 0, 7, 3, 10, 10, 10, 14,
1463
+ 15, 16, 17, 0, 18, 19, 20, 21,
1464
+ 22, 23, 5, 24, 25, 3, 26, 5,
1465
+ 27, 7, 10, 10, 10, 28, 29, 8,
1466
+ 30, 0, 7, 3, 10, 10, 10, 31,
1467
+ 15, 16, 17, 0, 18, 19, 32, 33,
1468
+ 22, 23, 5, 24
1469
+ ]
1470
+
1471
+ class << self
1472
+ attr_accessor :_bel_eof_actions
1473
+ private :_bel_eof_actions, :_bel_eof_actions=
1474
+ end
1475
+ self._bel_eof_actions = [
1476
+ 0, 0, 0, 0, 0, 2, 2, 0,
1477
+ 0, 6, 9, 9, 9, 2, 13, 14,
1478
+ 14, 0, 0, 14, 21, 25, 25, 27,
1479
+ 27, 27, 27, 29, 30, 31, 31, 29,
1480
+ 29, 31, 33, 0, 0, 0, 0
1481
+ ]
1482
+
1483
+ class << self
1484
+ attr_accessor :bel_start
1485
+ end
1486
+ self.bel_start = 1;
1487
+ class << self
1488
+ attr_accessor :bel_first_final
1489
+ end
1490
+ self.bel_first_final = 35;
1491
+ class << self
1492
+ attr_accessor :bel_error
1493
+ end
1494
+ self.bel_error = 0;
1495
+
1496
+ class << self
1497
+ attr_accessor :bel_en_ident
1498
+ end
1499
+ self.bel_en_ident = 21;
1500
+ class << self
1501
+ attr_accessor :bel_en_string
1502
+ end
1503
+ self.bel_en_string = 23;
1504
+ class << self
1505
+ attr_accessor :bel_en_list
1506
+ end
1507
+ self.bel_en_list = 27;
1508
+ class << self
1509
+ attr_accessor :bel_en_set
1510
+ end
1511
+ self.bel_en_set = 1;
1512
+
1513
+
1514
+ begin
1515
+ p ||= 0
1516
+ pe ||= data.length
1517
+ cs = bel_start
1518
+ end
1519
+
1520
+ begin
1521
+ testEof = false
1522
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
1523
+ _goto_level = 0
1524
+ _resume = 10
1525
+ _eof_trans = 15
1526
+ _again = 20
1527
+ _test_eof = 30
1528
+ _out = 40
1529
+ while true
1530
+ if _goto_level <= 0
1531
+ if p == pe
1532
+ _goto_level = _test_eof
1533
+ next
1534
+ end
1535
+ if cs == 0
1536
+ _goto_level = _out
1537
+ next
1538
+ end
1539
+ end
1540
+ if _goto_level <= _resume
1541
+ _keys = cs << 1
1542
+ _inds = _bel_index_offsets[cs]
1543
+ _slen = _bel_key_spans[cs]
1544
+ _wide = data[p].ord
1545
+ _trans = if ( _slen > 0 &&
1546
+ _bel_trans_keys[_keys] <= _wide &&
1547
+ _wide <= _bel_trans_keys[_keys + 1]
1548
+ ) then
1549
+ _bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ]
1550
+ else
1551
+ _bel_indicies[ _inds + _slen ]
1552
+ end
1553
+ cs = _bel_trans_targs[_trans]
1554
+ if _bel_trans_actions[_trans] != 0
1555
+ case _bel_trans_actions[_trans]
1556
+ when 5 then
1557
+ begin
1558
+
1559
+ (@buffers[:ident] ||= []) << data[p].ord
1560
+ end
1561
+ when 2 then
1562
+ begin
1563
+
1564
+ unless @buffers[:ident].is_a?(::AST::Node)
1565
+ @buffers[:ident] ||= []
1566
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1567
+ end
1568
+ end
1569
+ when 10 then
1570
+ begin
1571
+
1572
+ (@buffers[:string] ||= []) << data[p].ord
1573
+ end
1574
+ when 9 then
1575
+ begin
1576
+
1577
+ @buffers[:string] ||= []
1578
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1579
+ end
1580
+ when 18 then
1581
+ begin
1582
+
1583
+ @buffers.delete(:string)
1584
+ @buffers.delete(:ident)
1585
+ end
1586
+ when 8 then
1587
+ begin
1588
+
1589
+ @buffers[:list] = list()
1590
+ end
1591
+ when 19 then
1592
+ begin
1593
+
1594
+ #TODO: Mark @buffers[:list] as complete.
1595
+ end
1596
+ when 32 then
1597
+ begin
1598
+
1599
+ yield @buffers[:list]
1600
+ end
1601
+ when 29 then
1602
+ begin
1603
+
1604
+ @buffers[:list] ||= list()
1605
+ yield @buffers[:list]
1606
+ end
1607
+ when 1 then
1608
+ begin
1609
+
1610
+ @buffers[:set] = set()
1611
+ end
1612
+ when 3 then
1613
+ begin
1614
+
1615
+ @buffers[:ident] = []
1616
+ end
1617
+ begin
1618
+
1619
+ (@buffers[:ident] ||= []) << data[p].ord
1620
+ end
1621
+ when 26 then
1622
+ begin
1623
+
1624
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1625
+ end
1626
+ begin
1627
+
1628
+ yield @buffers[:ident]
1629
+ end
1630
+ when 4 then
1631
+ begin
1632
+
1633
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1634
+ end
1635
+ begin
1636
+
1637
+ @buffers[:set] = @buffers[:set] << name(@buffers[:ident])
1638
+ end
1639
+ when 25 then
1640
+ begin
1641
+
1642
+ unless @buffers[:ident].is_a?(::AST::Node)
1643
+ @buffers[:ident] ||= []
1644
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1645
+ end
1646
+ end
1647
+ begin
1648
+
1649
+ @buffers[:ident] ||= []
1650
+ yield @buffers[:ident]
1651
+ end
1652
+ when 7 then
1653
+ begin
1654
+
1655
+ @buffers[:string] = []
1656
+ end
1657
+ begin
1658
+
1659
+ (@buffers[:string] ||= []) << data[p].ord
1660
+ end
1661
+ when 28 then
1662
+ begin
1663
+
1664
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
1665
+ end
1666
+ begin
1667
+
1668
+ yield @buffers[:string]
1669
+ end
1670
+ when 6 then
1671
+ begin
1672
+
1673
+ @buffers[:string] ||= []
1674
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1675
+ end
1676
+ begin
1677
+
1678
+ unless @buffers[:ident].is_a?(::AST::Node)
1679
+ @buffers[:ident] ||= []
1680
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1681
+ end
1682
+ end
1683
+ when 27 then
1684
+ begin
1685
+
1686
+ @buffers[:string] ||= []
1687
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1688
+ end
1689
+ begin
1690
+
1691
+ @buffers[:string] ||= []
1692
+ yield @buffers[:string]
1693
+ end
1694
+ when 20 then
1695
+ begin
1696
+
1697
+ @buffers[:set] = @buffers[:set] << value(@buffers[:list])
1698
+ end
1699
+ begin
1700
+
1701
+ yield @buffers[:set]
1702
+ end
1703
+ when 22 then
1704
+ begin
1705
+
1706
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1707
+ end
1708
+ begin
1709
+
1710
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1711
+ end
1712
+ begin
1713
+
1714
+ # Append list argument if its value is not empty.
1715
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1716
+ if list_arg_value != ''
1717
+ @buffers[:list] <<= @buffers[:list_arg]
1718
+ end
1719
+ end
1720
+ when 12 then
1721
+ begin
1722
+
1723
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1724
+ end
1725
+ begin
1726
+
1727
+ @buffers[:set] = @buffers[:set] << value(@buffers[:ident])
1728
+ end
1729
+ begin
1730
+
1731
+ yield @buffers[:set]
1732
+ end
1733
+ when 21 then
1734
+ begin
1735
+
1736
+ unless @buffers[:ident].is_a?(::AST::Node)
1737
+ @buffers[:ident] ||= []
1738
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1739
+ end
1740
+ end
1741
+ begin
1742
+
1743
+ #TODO: Mark @buffers[:list_arg] identifier as error.
1744
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1745
+ end
1746
+ begin
1747
+
1748
+ # Append list argument if its value is not empty.
1749
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1750
+ if list_arg_value != ''
1751
+ @buffers[:list] <<= @buffers[:list_arg]
1752
+ end
1753
+ end
1754
+ when 15 then
1755
+ begin
1756
+
1757
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
1758
+ end
1759
+ begin
1760
+
1761
+ @buffers[:list_arg] = list_item(@buffers[:string])
1762
+ end
1763
+ begin
1764
+
1765
+ # Append list argument if its value is not empty.
1766
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1767
+ if list_arg_value != ''
1768
+ @buffers[:list] <<= @buffers[:list_arg]
1769
+ end
1770
+ end
1771
+ when 11 then
1772
+ begin
1773
+
1774
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
1775
+ end
1776
+ begin
1777
+
1778
+ @buffers[:set] = @buffers[:set] << value(@buffers[:string])
1779
+ end
1780
+ begin
1781
+
1782
+ yield @buffers[:set]
1783
+ end
1784
+ when 14 then
1785
+ begin
1786
+
1787
+ @buffers[:string] ||= []
1788
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1789
+ end
1790
+ begin
1791
+
1792
+ #TODO: Mark @buffers[:list_arg] string as error.
1793
+ @buffers[:list_arg] = list_item(@buffers[:string])
1794
+ end
1795
+ begin
1796
+
1797
+ # Append list argument if its value is not empty.
1798
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1799
+ if list_arg_value != ''
1800
+ @buffers[:list] <<= @buffers[:list_arg]
1801
+ end
1802
+ end
1803
+ when 23 then
1804
+ begin
1805
+
1806
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1807
+ end
1808
+ begin
1809
+
1810
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1811
+ end
1812
+ begin
1813
+
1814
+ # Append list argument if its value is not empty.
1815
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1816
+ if list_arg_value != ''
1817
+ @buffers[:list] <<= @buffers[:list_arg]
1818
+ end
1819
+ end
1820
+ begin
1821
+
1822
+ @buffers.delete(:string)
1823
+ @buffers.delete(:ident)
1824
+ end
1825
+ when 24 then
1826
+ begin
1827
+
1828
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
1829
+ end
1830
+ begin
1831
+
1832
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1833
+ end
1834
+ begin
1835
+
1836
+ # Append list argument if its value is not empty.
1837
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1838
+ if list_arg_value != ''
1839
+ @buffers[:list] <<= @buffers[:list_arg]
1840
+ end
1841
+ end
1842
+ begin
1843
+
1844
+ #TODO: Mark @buffers[:list] as complete.
1845
+ end
1846
+ when 33 then
1847
+ begin
1848
+
1849
+ unless @buffers[:ident].is_a?(::AST::Node)
1850
+ @buffers[:ident] ||= []
1851
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1852
+ end
1853
+ end
1854
+ begin
1855
+
1856
+ #TODO: Mark @buffers[:list_arg] identifier as error.
1857
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1858
+ end
1859
+ begin
1860
+
1861
+ # Append list argument if its value is not empty.
1862
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1863
+ if list_arg_value != ''
1864
+ @buffers[:list] <<= @buffers[:list_arg]
1865
+ end
1866
+ end
1867
+ begin
1868
+
1869
+ @buffers[:list] ||= list()
1870
+ yield @buffers[:list]
1871
+ end
1872
+ when 16 then
1873
+ begin
1874
+
1875
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
1876
+ end
1877
+ begin
1878
+
1879
+ @buffers[:list_arg] = list_item(@buffers[:string])
1880
+ end
1881
+ begin
1882
+
1883
+ # Append list argument if its value is not empty.
1884
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1885
+ if list_arg_value != ''
1886
+ @buffers[:list] <<= @buffers[:list_arg]
1887
+ end
1888
+ end
1889
+ begin
1890
+
1891
+ @buffers.delete(:string)
1892
+ @buffers.delete(:ident)
1893
+ end
1894
+ when 17 then
1895
+ begin
1896
+
1897
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
1898
+ end
1899
+ begin
1900
+
1901
+ @buffers[:list_arg] = list_item(@buffers[:string])
1902
+ end
1903
+ begin
1904
+
1905
+ # Append list argument if its value is not empty.
1906
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1907
+ if list_arg_value != ''
1908
+ @buffers[:list] <<= @buffers[:list_arg]
1909
+ end
1910
+ end
1911
+ begin
1912
+
1913
+ #TODO: Mark @buffers[:list] as complete.
1914
+ end
1915
+ when 31 then
1916
+ begin
1917
+
1918
+ @buffers[:string] ||= []
1919
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1920
+ end
1921
+ begin
1922
+
1923
+ #TODO: Mark @buffers[:list_arg] string as error.
1924
+ @buffers[:list_arg] = list_item(@buffers[:string])
1925
+ end
1926
+ begin
1927
+
1928
+ # Append list argument if its value is not empty.
1929
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1930
+ if list_arg_value != ''
1931
+ @buffers[:list] <<= @buffers[:list_arg]
1932
+ end
1933
+ end
1934
+ begin
1935
+
1936
+ @buffers[:list] ||= list()
1937
+ yield @buffers[:list]
1938
+ end
1939
+ when 13 then
1940
+ begin
1941
+
1942
+ @buffers[:string] ||= []
1943
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1944
+ end
1945
+ begin
1946
+
1947
+ #TODO: Mark @buffers[:list_arg] string as error.
1948
+ @buffers[:list_arg] = list_item(@buffers[:string])
1949
+ end
1950
+ begin
1951
+
1952
+ unless @buffers[:ident].is_a?(::AST::Node)
1953
+ @buffers[:ident] ||= []
1954
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1955
+ end
1956
+ end
1957
+ begin
1958
+
1959
+ #TODO: Mark @buffers[:list_arg] identifier as error.
1960
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1961
+ end
1962
+ begin
1963
+
1964
+ # Append list argument if its value is not empty.
1965
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1966
+ if list_arg_value != ''
1967
+ @buffers[:list] <<= @buffers[:list_arg]
1968
+ end
1969
+ end
1970
+ when 30 then
1971
+ begin
1972
+
1973
+ @buffers[:string] ||= []
1974
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
1975
+ end
1976
+ begin
1977
+
1978
+ #TODO: Mark @buffers[:list_arg] string as error.
1979
+ @buffers[:list_arg] = list_item(@buffers[:string])
1980
+ end
1981
+ begin
1982
+
1983
+ unless @buffers[:ident].is_a?(::AST::Node)
1984
+ @buffers[:ident] ||= []
1985
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
1986
+ end
1987
+ end
1988
+ begin
1989
+
1990
+ #TODO: Mark @buffers[:list_arg] identifier as error.
1991
+ @buffers[:list_arg] = list_item(@buffers[:ident])
1992
+ end
1993
+ begin
1994
+
1995
+ # Append list argument if its value is not empty.
1996
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
1997
+ if list_arg_value != ''
1998
+ @buffers[:list] <<= @buffers[:list_arg]
1999
+ end
2000
+ end
2001
+ begin
2002
+
2003
+ @buffers[:list] ||= list()
2004
+ yield @buffers[:list]
2005
+ end
2006
+ end
2007
+ end
2008
+ end
2009
+ if _goto_level <= _again
2010
+ if cs == 0
2011
+ _goto_level = _out
2012
+ next
2013
+ end
2014
+ p += 1
2015
+ if p != pe
2016
+ _goto_level = _resume
2017
+ next
2018
+ end
2019
+ end
2020
+ if _goto_level <= _test_eof
2021
+ if p == eof
2022
+ case _bel_eof_actions[cs]
2023
+ when 2 then
2024
+ begin
2025
+
2026
+ unless @buffers[:ident].is_a?(::AST::Node)
2027
+ @buffers[:ident] ||= []
2028
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2029
+ end
2030
+ end
2031
+ when 9 then
2032
+ begin
2033
+
2034
+ @buffers[:string] ||= []
2035
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2036
+ end
2037
+ when 29 then
2038
+ begin
2039
+
2040
+ @buffers[:list] ||= list()
2041
+ yield @buffers[:list]
2042
+ end
2043
+ when 25 then
2044
+ begin
2045
+
2046
+ unless @buffers[:ident].is_a?(::AST::Node)
2047
+ @buffers[:ident] ||= []
2048
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2049
+ end
2050
+ end
2051
+ begin
2052
+
2053
+ @buffers[:ident] ||= []
2054
+ yield @buffers[:ident]
2055
+ end
2056
+ when 6 then
2057
+ begin
2058
+
2059
+ @buffers[:string] ||= []
2060
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2061
+ end
2062
+ begin
2063
+
2064
+ unless @buffers[:ident].is_a?(::AST::Node)
2065
+ @buffers[:ident] ||= []
2066
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2067
+ end
2068
+ end
2069
+ when 27 then
2070
+ begin
2071
+
2072
+ @buffers[:string] ||= []
2073
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2074
+ end
2075
+ begin
2076
+
2077
+ @buffers[:string] ||= []
2078
+ yield @buffers[:string]
2079
+ end
2080
+ when 21 then
2081
+ begin
2082
+
2083
+ unless @buffers[:ident].is_a?(::AST::Node)
2084
+ @buffers[:ident] ||= []
2085
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2086
+ end
2087
+ end
2088
+ begin
2089
+
2090
+ #TODO: Mark @buffers[:list_arg] identifier as error.
2091
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2092
+ end
2093
+ begin
2094
+
2095
+ # Append list argument if its value is not empty.
2096
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2097
+ if list_arg_value != ''
2098
+ @buffers[:list] <<= @buffers[:list_arg]
2099
+ end
2100
+ end
2101
+ when 14 then
2102
+ begin
2103
+
2104
+ @buffers[:string] ||= []
2105
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2106
+ end
2107
+ begin
2108
+
2109
+ #TODO: Mark @buffers[:list_arg] string as error.
2110
+ @buffers[:list_arg] = list_item(@buffers[:string])
2111
+ end
2112
+ begin
2113
+
2114
+ # Append list argument if its value is not empty.
2115
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2116
+ if list_arg_value != ''
2117
+ @buffers[:list] <<= @buffers[:list_arg]
2118
+ end
2119
+ end
2120
+ when 33 then
2121
+ begin
2122
+
2123
+ unless @buffers[:ident].is_a?(::AST::Node)
2124
+ @buffers[:ident] ||= []
2125
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2126
+ end
2127
+ end
2128
+ begin
2129
+
2130
+ #TODO: Mark @buffers[:list_arg] identifier as error.
2131
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2132
+ end
2133
+ begin
2134
+
2135
+ # Append list argument if its value is not empty.
2136
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2137
+ if list_arg_value != ''
2138
+ @buffers[:list] <<= @buffers[:list_arg]
2139
+ end
2140
+ end
2141
+ begin
2142
+
2143
+ @buffers[:list] ||= list()
2144
+ yield @buffers[:list]
2145
+ end
2146
+ when 31 then
2147
+ begin
2148
+
2149
+ @buffers[:string] ||= []
2150
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2151
+ end
2152
+ begin
2153
+
2154
+ #TODO: Mark @buffers[:list_arg] string as error.
2155
+ @buffers[:list_arg] = list_item(@buffers[:string])
2156
+ end
2157
+ begin
2158
+
2159
+ # Append list argument if its value is not empty.
2160
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2161
+ if list_arg_value != ''
2162
+ @buffers[:list] <<= @buffers[:list_arg]
2163
+ end
2164
+ end
2165
+ begin
2166
+
2167
+ @buffers[:list] ||= list()
2168
+ yield @buffers[:list]
2169
+ end
2170
+ when 13 then
2171
+ begin
2172
+
2173
+ @buffers[:string] ||= []
2174
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2175
+ end
2176
+ begin
2177
+
2178
+ #TODO: Mark @buffers[:list_arg] string as error.
2179
+ @buffers[:list_arg] = list_item(@buffers[:string])
2180
+ end
2181
+ begin
2182
+
2183
+ unless @buffers[:ident].is_a?(::AST::Node)
2184
+ @buffers[:ident] ||= []
2185
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2186
+ end
2187
+ end
2188
+ begin
2189
+
2190
+ #TODO: Mark @buffers[:list_arg] identifier as error.
2191
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2192
+ end
2193
+ begin
2194
+
2195
+ # Append list argument if its value is not empty.
2196
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2197
+ if list_arg_value != ''
2198
+ @buffers[:list] <<= @buffers[:list_arg]
2199
+ end
2200
+ end
2201
+ when 30 then
2202
+ begin
2203
+
2204
+ @buffers[:string] ||= []
2205
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2206
+ end
2207
+ begin
2208
+
2209
+ #TODO: Mark @buffers[:list_arg] string as error.
2210
+ @buffers[:list_arg] = list_item(@buffers[:string])
2211
+ end
2212
+ begin
2213
+
2214
+ unless @buffers[:ident].is_a?(::AST::Node)
2215
+ @buffers[:ident] ||= []
2216
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2217
+ end
2218
+ end
2219
+ begin
2220
+
2221
+ #TODO: Mark @buffers[:list_arg] identifier as error.
2222
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2223
+ end
2224
+ begin
2225
+
2226
+ # Append list argument if its value is not empty.
2227
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2228
+ if list_arg_value != ''
2229
+ @buffers[:list] <<= @buffers[:list_arg]
2230
+ end
2231
+ end
2232
+ begin
2233
+
2234
+ @buffers[:list] ||= list()
2235
+ yield @buffers[:list]
2236
+ end
2237
+ end
2238
+ end
2239
+
2240
+ end
2241
+ if _goto_level <= _out
2242
+ break
2243
+ end
2244
+ end
2245
+ end
2246
+
2247
+ class << self
2248
+ attr_accessor :_bel_trans_keys
2249
+ private :_bel_trans_keys, :_bel_trans_keys=
2250
+ end
2251
+ self._bel_trans_keys = [
2252
+ 0, 0, 83, 115, 69, 101,
2253
+ 84, 116, 9, 32, 9,
2254
+ 122, 9, 122, 9, 61,
2255
+ 9, 32, 9, 123, 34, 92,
2256
+ 10, 10, 92, 92, 10,
2257
+ 122, 9, 122, 34, 92,
2258
+ 9, 125, 9, 125, 10, 10,
2259
+ 92, 92, 9, 125, 48,
2260
+ 122, 10, 122, 34, 34,
2261
+ 34, 92, 10, 10, 92, 92,
2262
+ 123, 123, 9, 122, 34,
2263
+ 92, 9, 125, 9, 125,
2264
+ 10, 10, 92, 92, 9, 125,
2265
+ 0, 0, 0, 0, 0,
2266
+ 0, 0, 0, 0
2267
+ ]
2268
+
2269
+ class << self
2270
+ attr_accessor :_bel_key_spans
2271
+ private :_bel_key_spans, :_bel_key_spans=
2272
+ end
2273
+ self._bel_key_spans = [
2274
+ 0, 33, 33, 33, 24, 114, 114, 53,
2275
+ 24, 115, 59, 1, 1, 113, 114, 59,
2276
+ 117, 117, 1, 1, 117, 75, 113, 1,
2277
+ 59, 1, 1, 1, 114, 59, 117, 117,
2278
+ 1, 1, 117, 0, 0, 0, 0
2279
+ ]
2280
+
2281
+ class << self
2282
+ attr_accessor :_bel_index_offsets
2283
+ private :_bel_index_offsets, :_bel_index_offsets=
2284
+ end
2285
+ self._bel_index_offsets = [
2286
+ 0, 0, 34, 68, 102, 127, 242, 357,
2287
+ 411, 436, 552, 612, 614, 616, 730, 845,
2288
+ 905, 1023, 1141, 1143, 1145, 1263, 1339, 1453,
2289
+ 1455, 1515, 1517, 1519, 1521, 1636, 1696, 1814,
2290
+ 1932, 1934, 1936, 2054, 2055, 2056, 2057
2291
+ ]
2292
+
2293
+ class << self
2294
+ attr_accessor :_bel_indicies
2295
+ private :_bel_indicies, :_bel_indicies=
2296
+ end
2297
+ self._bel_indicies = [
2298
+ 0, 1, 1, 1, 1, 1, 1, 1,
2299
+ 1, 1, 1, 1, 1, 1, 1, 1,
2300
+ 1, 1, 1, 1, 1, 1, 1, 1,
2301
+ 1, 1, 1, 1, 1, 1, 1, 1,
2302
+ 0, 1, 2, 1, 1, 1, 1, 1,
2303
+ 1, 1, 1, 1, 1, 1, 1, 1,
2304
+ 1, 1, 1, 1, 1, 1, 1, 1,
2305
+ 1, 1, 1, 1, 1, 1, 1, 1,
2306
+ 1, 1, 2, 1, 3, 1, 1, 1,
2307
+ 1, 1, 1, 1, 1, 1, 1, 1,
2308
+ 1, 1, 1, 1, 1, 1, 1, 1,
2309
+ 1, 1, 1, 1, 1, 1, 1, 1,
2310
+ 1, 1, 1, 1, 3, 1, 4, 1,
2311
+ 1, 1, 1, 1, 1, 1, 1, 1,
2312
+ 1, 1, 1, 1, 1, 1, 1, 1,
2313
+ 1, 1, 1, 1, 1, 4, 1, 6,
2314
+ 5, 5, 5, 5, 5, 5, 5, 5,
2315
+ 5, 5, 5, 5, 5, 5, 5, 5,
2316
+ 5, 5, 5, 5, 5, 5, 6, 5,
2317
+ 5, 5, 5, 5, 5, 5, 5, 5,
2318
+ 5, 5, 5, 5, 5, 5, 7, 7,
2319
+ 7, 7, 7, 7, 7, 7, 7, 7,
2320
+ 5, 5, 5, 5, 5, 5, 5, 7,
2321
+ 7, 7, 7, 7, 7, 7, 7, 7,
2322
+ 7, 7, 7, 7, 7, 7, 7, 7,
2323
+ 7, 7, 7, 7, 7, 7, 7, 7,
2324
+ 7, 5, 5, 5, 5, 7, 5, 7,
2325
+ 7, 7, 7, 7, 7, 7, 7, 7,
2326
+ 7, 7, 7, 7, 7, 7, 7, 7,
2327
+ 7, 7, 7, 7, 7, 7, 7, 7,
2328
+ 7, 5, 8, 5, 5, 5, 5, 5,
2329
+ 5, 5, 5, 5, 5, 5, 5, 5,
2330
+ 5, 5, 5, 5, 5, 5, 5, 5,
2331
+ 5, 8, 5, 5, 5, 5, 5, 5,
2332
+ 5, 5, 5, 5, 5, 5, 5, 5,
2333
+ 5, 9, 9, 9, 9, 9, 9, 9,
2334
+ 9, 9, 9, 5, 5, 5, 5, 5,
2335
+ 5, 5, 9, 9, 9, 9, 9, 9,
2336
+ 9, 9, 9, 9, 9, 9, 9, 9,
2337
+ 9, 9, 9, 9, 9, 9, 9, 9,
2338
+ 9, 9, 9, 9, 5, 5, 5, 5,
2339
+ 9, 5, 9, 9, 9, 9, 9, 9,
2340
+ 9, 9, 9, 9, 9, 9, 9, 9,
2341
+ 9, 9, 9, 9, 9, 9, 9, 9,
2342
+ 9, 9, 9, 9, 5, 10, 1, 1,
2343
+ 1, 1, 1, 1, 1, 1, 1, 1,
2344
+ 1, 1, 1, 1, 1, 1, 1, 1,
2345
+ 1, 1, 1, 1, 10, 1, 1, 1,
2346
+ 1, 1, 1, 1, 1, 1, 1, 1,
2347
+ 1, 1, 1, 1, 1, 1, 1, 1,
2348
+ 1, 1, 1, 1, 1, 1, 1, 1,
2349
+ 1, 11, 1, 12, 1, 1, 1, 1,
2350
+ 1, 1, 1, 1, 1, 1, 1, 1,
2351
+ 1, 1, 1, 1, 1, 1, 1, 1,
2352
+ 1, 1, 12, 1, 12, 13, 13, 13,
2353
+ 13, 13, 13, 13, 13, 13, 13, 13,
2354
+ 13, 13, 13, 13, 13, 13, 13, 13,
2355
+ 13, 13, 13, 12, 13, 14, 13, 13,
2356
+ 13, 13, 13, 13, 13, 13, 13, 13,
2357
+ 13, 13, 13, 15, 15, 15, 15, 15,
2358
+ 15, 15, 15, 15, 15, 13, 13, 13,
2359
+ 13, 13, 13, 13, 15, 15, 15, 15,
2360
+ 15, 15, 15, 15, 15, 15, 15, 15,
2361
+ 15, 15, 15, 15, 15, 15, 15, 15,
2362
+ 15, 15, 15, 15, 15, 15, 13, 13,
2363
+ 13, 13, 15, 13, 15, 15, 15, 15,
2364
+ 15, 15, 15, 15, 15, 15, 15, 15,
2365
+ 15, 15, 15, 15, 15, 15, 15, 15,
2366
+ 15, 15, 15, 15, 15, 15, 16, 13,
2367
+ 18, 17, 17, 17, 17, 17, 17, 17,
2368
+ 17, 17, 17, 17, 17, 17, 17, 17,
2369
+ 17, 17, 17, 17, 17, 17, 17, 17,
2370
+ 17, 17, 17, 17, 17, 17, 17, 17,
2371
+ 17, 17, 17, 17, 17, 17, 17, 17,
2372
+ 17, 17, 17, 17, 17, 17, 17, 17,
2373
+ 17, 17, 17, 17, 17, 17, 17, 17,
2374
+ 17, 17, 19, 17, 21, 20, 19, 17,
2375
+ 22, 5, 5, 5, 5, 5, 5, 5,
2376
+ 5, 5, 5, 5, 5, 5, 5, 5,
2377
+ 5, 5, 5, 5, 5, 5, 5, 5,
2378
+ 5, 5, 5, 5, 5, 5, 5, 5,
2379
+ 5, 5, 5, 5, 5, 5, 23, 23,
2380
+ 23, 23, 23, 23, 23, 23, 23, 23,
2381
+ 5, 5, 5, 5, 5, 5, 5, 23,
2382
+ 23, 23, 23, 23, 23, 23, 23, 23,
2383
+ 23, 23, 23, 23, 23, 23, 23, 23,
2384
+ 23, 23, 23, 23, 23, 23, 23, 23,
2385
+ 23, 5, 5, 5, 5, 23, 5, 23,
2386
+ 23, 23, 23, 23, 23, 23, 23, 23,
2387
+ 23, 23, 23, 23, 23, 23, 23, 23,
2388
+ 23, 23, 23, 23, 23, 23, 23, 23,
2389
+ 23, 5, 25, 24, 24, 24, 24, 24,
2390
+ 24, 24, 24, 24, 24, 24, 24, 24,
2391
+ 24, 24, 24, 24, 24, 24, 24, 24,
2392
+ 24, 25, 24, 26, 24, 24, 24, 24,
2393
+ 24, 24, 24, 24, 24, 24, 24, 24,
2394
+ 24, 27, 27, 27, 27, 27, 27, 27,
2395
+ 27, 27, 27, 24, 24, 24, 24, 24,
2396
+ 24, 24, 27, 27, 27, 27, 27, 27,
2397
+ 27, 27, 27, 27, 27, 27, 27, 27,
2398
+ 27, 27, 27, 27, 27, 27, 27, 27,
2399
+ 27, 27, 27, 27, 24, 24, 24, 24,
2400
+ 27, 24, 27, 27, 27, 27, 27, 27,
2401
+ 27, 27, 27, 27, 27, 27, 27, 27,
2402
+ 27, 27, 27, 27, 27, 27, 27, 27,
2403
+ 27, 27, 27, 27, 24, 29, 28, 28,
2404
+ 28, 28, 28, 28, 28, 28, 28, 28,
2405
+ 28, 28, 28, 28, 28, 28, 28, 28,
2406
+ 28, 28, 28, 28, 28, 28, 28, 28,
2407
+ 28, 28, 28, 28, 28, 28, 28, 28,
2408
+ 28, 28, 28, 28, 28, 28, 28, 28,
2409
+ 28, 28, 28, 28, 28, 28, 28, 28,
2410
+ 28, 28, 28, 28, 28, 28, 28, 30,
2411
+ 28, 32, 31, 31, 31, 31, 31, 31,
2412
+ 31, 31, 31, 31, 31, 31, 31, 31,
2413
+ 31, 31, 31, 31, 31, 31, 31, 31,
2414
+ 32, 31, 31, 31, 31, 31, 31, 31,
2415
+ 31, 31, 31, 31, 33, 31, 31, 31,
2416
+ 31, 31, 31, 31, 31, 31, 31, 31,
2417
+ 31, 31, 31, 31, 31, 31, 31, 31,
2418
+ 31, 31, 31, 31, 31, 31, 31, 31,
2419
+ 31, 31, 31, 31, 31, 31, 31, 31,
2420
+ 31, 31, 31, 31, 31, 31, 31, 31,
2421
+ 31, 31, 31, 31, 31, 31, 31, 31,
2422
+ 31, 31, 31, 31, 31, 31, 31, 31,
2423
+ 31, 31, 31, 31, 31, 31, 31, 31,
2424
+ 31, 31, 31, 31, 31, 31, 31, 31,
2425
+ 31, 31, 31, 31, 31, 34, 31, 35,
2426
+ 1, 1, 1, 1, 1, 1, 1, 1,
2427
+ 1, 1, 1, 1, 1, 1, 1, 1,
2428
+ 1, 1, 1, 1, 1, 1, 35, 1,
2429
+ 1, 1, 1, 1, 1, 1, 1, 1,
2430
+ 1, 1, 36, 1, 1, 1, 1, 1,
2431
+ 1, 1, 1, 1, 1, 1, 1, 1,
2432
+ 1, 1, 1, 1, 1, 1, 1, 1,
2433
+ 1, 1, 1, 1, 1, 1, 1, 1,
2434
+ 1, 1, 1, 1, 1, 1, 1, 1,
2435
+ 1, 1, 1, 1, 1, 1, 1, 1,
2436
+ 1, 1, 1, 1, 1, 1, 1, 1,
2437
+ 1, 1, 1, 1, 1, 1, 1, 1,
2438
+ 1, 1, 1, 1, 1, 1, 1, 1,
2439
+ 1, 1, 1, 1, 1, 1, 1, 1,
2440
+ 1, 1, 1, 37, 1, 38, 1, 30,
2441
+ 28, 40, 39, 39, 39, 39, 39, 39,
2442
+ 39, 39, 39, 39, 39, 39, 39, 39,
2443
+ 39, 39, 39, 39, 39, 39, 39, 39,
2444
+ 40, 39, 39, 39, 39, 39, 39, 39,
2445
+ 39, 39, 39, 39, 41, 39, 39, 39,
2446
+ 42, 42, 42, 42, 42, 42, 42, 42,
2447
+ 42, 42, 39, 39, 39, 39, 39, 39,
2448
+ 39, 42, 42, 42, 42, 42, 42, 42,
2449
+ 42, 42, 42, 42, 42, 42, 42, 42,
2450
+ 42, 42, 42, 42, 42, 42, 42, 42,
2451
+ 42, 42, 42, 39, 39, 39, 39, 42,
2452
+ 39, 42, 42, 42, 42, 42, 42, 42,
2453
+ 42, 42, 42, 42, 42, 42, 42, 42,
2454
+ 42, 42, 42, 42, 42, 42, 42, 42,
2455
+ 42, 42, 42, 39, 39, 43, 39, 45,
2456
+ 45, 45, 45, 45, 45, 45, 45, 45,
2457
+ 45, 44, 44, 44, 44, 44, 44, 44,
2458
+ 45, 45, 45, 45, 45, 45, 45, 45,
2459
+ 45, 45, 45, 45, 45, 45, 45, 45,
2460
+ 45, 45, 45, 45, 45, 45, 45, 45,
2461
+ 45, 45, 44, 44, 44, 44, 45, 44,
2462
+ 45, 45, 45, 45, 45, 45, 45, 45,
2463
+ 45, 45, 45, 45, 45, 45, 45, 45,
2464
+ 45, 45, 45, 45, 45, 45, 45, 45,
2465
+ 45, 45, 44, 46, 44, 44, 44, 44,
2466
+ 44, 44, 44, 44, 44, 44, 44, 44,
2467
+ 44, 44, 44, 44, 44, 44, 44, 44,
2468
+ 44, 44, 44, 44, 44, 44, 44, 44,
2469
+ 44, 44, 44, 44, 44, 44, 44, 44,
2470
+ 44, 47, 47, 47, 47, 47, 47, 47,
2471
+ 47, 47, 47, 44, 44, 44, 44, 44,
2472
+ 44, 44, 47, 47, 47, 47, 47, 47,
2473
+ 47, 47, 47, 47, 47, 47, 47, 47,
2474
+ 47, 47, 47, 47, 47, 47, 47, 47,
2475
+ 47, 47, 47, 47, 44, 44, 44, 44,
2476
+ 47, 44, 47, 47, 47, 47, 47, 47,
2477
+ 47, 47, 47, 47, 47, 47, 47, 47,
2478
+ 47, 47, 47, 47, 47, 47, 47, 47,
2479
+ 47, 47, 47, 47, 44, 49, 48, 51,
2480
+ 50, 50, 50, 50, 50, 50, 50, 50,
2481
+ 50, 50, 50, 50, 50, 50, 50, 50,
2482
+ 50, 50, 50, 50, 50, 50, 50, 50,
2483
+ 50, 50, 50, 50, 50, 50, 50, 50,
2484
+ 50, 50, 50, 50, 50, 50, 50, 50,
2485
+ 50, 50, 50, 50, 50, 50, 50, 50,
2486
+ 50, 50, 50, 50, 50, 50, 50, 50,
2487
+ 50, 52, 50, 53, 48, 52, 50, 55,
2488
+ 54, 57, 56, 56, 56, 56, 56, 56,
2489
+ 56, 56, 56, 56, 56, 56, 56, 56,
2490
+ 56, 56, 56, 56, 56, 56, 56, 56,
2491
+ 57, 56, 58, 56, 56, 56, 56, 56,
2492
+ 56, 56, 56, 56, 56, 56, 56, 56,
2493
+ 59, 59, 59, 59, 59, 59, 59, 59,
2494
+ 59, 59, 56, 56, 56, 56, 56, 56,
2495
+ 56, 59, 59, 59, 59, 59, 59, 59,
2496
+ 59, 59, 59, 59, 59, 59, 59, 59,
2497
+ 59, 59, 59, 59, 59, 59, 59, 59,
2498
+ 59, 59, 59, 56, 56, 56, 56, 59,
2499
+ 56, 59, 59, 59, 59, 59, 59, 59,
2500
+ 59, 59, 59, 59, 59, 59, 59, 59,
2501
+ 59, 59, 59, 59, 59, 59, 59, 59,
2502
+ 59, 59, 59, 56, 61, 60, 60, 60,
2503
+ 60, 60, 60, 60, 60, 60, 60, 60,
2504
+ 60, 60, 60, 60, 60, 60, 60, 60,
2505
+ 60, 60, 60, 60, 60, 60, 60, 60,
2506
+ 60, 60, 60, 60, 60, 60, 60, 60,
2507
+ 60, 60, 60, 60, 60, 60, 60, 60,
2508
+ 60, 60, 60, 60, 60, 60, 60, 60,
2509
+ 60, 60, 60, 60, 60, 60, 62, 60,
2510
+ 64, 63, 63, 63, 63, 63, 63, 63,
2511
+ 63, 63, 63, 63, 63, 63, 63, 63,
2512
+ 63, 63, 63, 63, 63, 63, 63, 64,
2513
+ 63, 63, 63, 63, 63, 63, 63, 63,
2514
+ 63, 63, 63, 65, 63, 63, 63, 63,
2515
+ 63, 63, 63, 63, 63, 63, 63, 63,
2516
+ 63, 63, 63, 63, 63, 63, 63, 63,
2517
+ 63, 63, 63, 63, 63, 63, 63, 63,
2518
+ 63, 63, 63, 63, 63, 63, 63, 63,
2519
+ 63, 63, 63, 63, 63, 63, 63, 63,
2520
+ 63, 63, 63, 63, 63, 63, 63, 63,
2521
+ 63, 63, 63, 63, 63, 63, 63, 63,
2522
+ 63, 63, 63, 63, 63, 63, 63, 63,
2523
+ 63, 63, 63, 63, 63, 63, 63, 63,
2524
+ 63, 63, 63, 63, 66, 63, 67, 54,
2525
+ 54, 54, 54, 54, 54, 54, 54, 54,
2526
+ 54, 54, 54, 54, 54, 54, 54, 54,
2527
+ 54, 54, 54, 54, 54, 67, 54, 54,
2528
+ 54, 54, 54, 54, 54, 54, 54, 54,
2529
+ 54, 68, 54, 54, 54, 54, 54, 54,
2530
+ 54, 54, 54, 54, 54, 54, 54, 54,
2531
+ 54, 54, 54, 54, 54, 54, 54, 54,
2532
+ 54, 54, 54, 54, 54, 54, 54, 54,
2533
+ 54, 54, 54, 54, 54, 54, 54, 54,
2534
+ 54, 54, 54, 54, 54, 54, 54, 54,
2535
+ 54, 54, 54, 54, 54, 54, 54, 54,
2536
+ 54, 54, 54, 54, 54, 54, 54, 54,
2537
+ 54, 54, 54, 54, 54, 54, 54, 54,
2538
+ 54, 54, 54, 54, 54, 54, 54, 54,
2539
+ 54, 54, 69, 54, 70, 54, 62, 60,
2540
+ 72, 71, 71, 71, 71, 71, 71, 71,
2541
+ 71, 71, 71, 71, 71, 71, 71, 71,
2542
+ 71, 71, 71, 71, 71, 71, 71, 72,
2543
+ 71, 71, 71, 71, 71, 71, 71, 71,
2544
+ 71, 71, 71, 73, 71, 71, 71, 74,
2545
+ 74, 74, 74, 74, 74, 74, 74, 74,
2546
+ 74, 71, 71, 71, 71, 71, 71, 71,
2547
+ 74, 74, 74, 74, 74, 74, 74, 74,
2548
+ 74, 74, 74, 74, 74, 74, 74, 74,
2549
+ 74, 74, 74, 74, 74, 74, 74, 74,
2550
+ 74, 74, 71, 71, 71, 71, 74, 71,
2551
+ 74, 74, 74, 74, 74, 74, 74, 74,
2552
+ 74, 74, 74, 74, 74, 74, 74, 74,
2553
+ 74, 74, 74, 74, 74, 74, 74, 74,
2554
+ 74, 74, 71, 71, 75, 71, 1, 1,
2555
+ 1, 1, 0
2556
+ ]
2557
+
2558
+ class << self
2559
+ attr_accessor :_bel_trans_targs
2560
+ private :_bel_trans_targs, :_bel_trans_targs=
2561
+ end
2562
+ self._bel_trans_targs = [
2563
+ 2, 0, 3, 4, 5, 0, 5, 6,
2564
+ 7, 6, 7, 8, 9, 0, 10, 13,
2565
+ 14, 10, 11, 12, 0, 35, 35, 13,
2566
+ 0, 14, 15, 20, 15, 16, 19, 0,
2567
+ 17, 14, 18, 17, 14, 18, 35, 0,
2568
+ 17, 14, 20, 18, 0, 22, 36, 22,
2569
+ 0, 24, 24, 25, 26, 37, 0, 28,
2570
+ 0, 28, 29, 34, 29, 30, 33, 0,
2571
+ 31, 28, 32, 31, 28, 32, 38, 0,
2572
+ 31, 28, 34, 32
2573
+ ]
2574
+
2575
+ class << self
2576
+ attr_accessor :_bel_trans_actions
2577
+ private :_bel_trans_actions, :_bel_trans_actions=
2578
+ end
2579
+ self._bel_trans_actions = [
2580
+ 0, 0, 0, 0, 1, 2, 0, 3,
2581
+ 4, 5, 0, 0, 0, 6, 7, 3,
2582
+ 8, 10, 10, 10, 9, 11, 12, 5,
2583
+ 13, 0, 7, 3, 10, 10, 10, 14,
2584
+ 15, 16, 17, 0, 18, 19, 20, 21,
2585
+ 22, 23, 5, 24, 25, 3, 26, 5,
2586
+ 27, 7, 10, 10, 10, 28, 29, 8,
2587
+ 30, 0, 7, 3, 10, 10, 10, 31,
2588
+ 15, 16, 17, 0, 18, 19, 32, 33,
2589
+ 22, 23, 5, 24
2590
+ ]
2591
+
2592
+ class << self
2593
+ attr_accessor :_bel_eof_actions
2594
+ private :_bel_eof_actions, :_bel_eof_actions=
2595
+ end
2596
+ self._bel_eof_actions = [
2597
+ 0, 0, 0, 0, 0, 2, 2, 0,
2598
+ 0, 6, 9, 9, 9, 2, 13, 14,
2599
+ 14, 0, 0, 14, 21, 25, 25, 27,
2600
+ 27, 27, 27, 29, 30, 31, 31, 29,
2601
+ 29, 31, 33, 0, 0, 0, 0
2602
+ ]
2603
+
2604
+ class << self
2605
+ attr_accessor :bel_start
2606
+ end
2607
+ self.bel_start = 1;
2608
+ class << self
2609
+ attr_accessor :bel_first_final
2610
+ end
2611
+ self.bel_first_final = 35;
2612
+ class << self
2613
+ attr_accessor :bel_error
2614
+ end
2615
+ self.bel_error = 0;
2616
+
2617
+ class << self
2618
+ attr_accessor :bel_en_ident
2619
+ end
2620
+ self.bel_en_ident = 21;
2621
+ class << self
2622
+ attr_accessor :bel_en_string
2623
+ end
2624
+ self.bel_en_string = 23;
2625
+ class << self
2626
+ attr_accessor :bel_en_list
2627
+ end
2628
+ self.bel_en_list = 27;
2629
+ class << self
2630
+ attr_accessor :bel_en_set
2631
+ end
2632
+ self.bel_en_set = 1;
2633
+
2634
+
2635
+ begin
2636
+ p ||= 0
2637
+ pe ||= data.length
2638
+ cs = bel_start
2639
+ end
2640
+
2641
+ begin
2642
+ testEof = false
2643
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
2644
+ _goto_level = 0
2645
+ _resume = 10
2646
+ _eof_trans = 15
2647
+ _again = 20
2648
+ _test_eof = 30
2649
+ _out = 40
2650
+ while true
2651
+ if _goto_level <= 0
2652
+ if p == pe
2653
+ _goto_level = _test_eof
2654
+ next
2655
+ end
2656
+ if cs == 0
2657
+ _goto_level = _out
2658
+ next
2659
+ end
2660
+ end
2661
+ if _goto_level <= _resume
2662
+ _keys = cs << 1
2663
+ _inds = _bel_index_offsets[cs]
2664
+ _slen = _bel_key_spans[cs]
2665
+ _wide = data[p].ord
2666
+ _trans = if ( _slen > 0 &&
2667
+ _bel_trans_keys[_keys] <= _wide &&
2668
+ _wide <= _bel_trans_keys[_keys + 1]
2669
+ ) then
2670
+ _bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ]
2671
+ else
2672
+ _bel_indicies[ _inds + _slen ]
2673
+ end
2674
+ cs = _bel_trans_targs[_trans]
2675
+ if _bel_trans_actions[_trans] != 0
2676
+ case _bel_trans_actions[_trans]
2677
+ when 5 then
2678
+ begin
2679
+
2680
+ (@buffers[:ident] ||= []) << data[p].ord
2681
+ end
2682
+ when 2 then
2683
+ begin
2684
+
2685
+ unless @buffers[:ident].is_a?(::AST::Node)
2686
+ @buffers[:ident] ||= []
2687
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2688
+ end
2689
+ end
2690
+ when 10 then
2691
+ begin
2692
+
2693
+ (@buffers[:string] ||= []) << data[p].ord
2694
+ end
2695
+ when 9 then
2696
+ begin
2697
+
2698
+ @buffers[:string] ||= []
2699
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2700
+ end
2701
+ when 18 then
2702
+ begin
2703
+
2704
+ @buffers.delete(:string)
2705
+ @buffers.delete(:ident)
2706
+ end
2707
+ when 8 then
2708
+ begin
2709
+
2710
+ @buffers[:list] = list()
2711
+ end
2712
+ when 19 then
2713
+ begin
2714
+
2715
+ #TODO: Mark @buffers[:list] as complete.
2716
+ end
2717
+ when 32 then
2718
+ begin
2719
+
2720
+ yield @buffers[:list]
2721
+ end
2722
+ when 29 then
2723
+ begin
2724
+
2725
+ @buffers[:list] ||= list()
2726
+ yield @buffers[:list]
2727
+ end
2728
+ when 1 then
2729
+ begin
2730
+
2731
+ @buffers[:set] = set()
2732
+ end
2733
+ when 3 then
2734
+ begin
2735
+
2736
+ @buffers[:ident] = []
2737
+ end
2738
+ begin
2739
+
2740
+ (@buffers[:ident] ||= []) << data[p].ord
2741
+ end
2742
+ when 26 then
2743
+ begin
2744
+
2745
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
2746
+ end
2747
+ begin
2748
+
2749
+ yield @buffers[:ident]
2750
+ end
2751
+ when 4 then
2752
+ begin
2753
+
2754
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
2755
+ end
2756
+ begin
2757
+
2758
+ @buffers[:set] = @buffers[:set] << name(@buffers[:ident])
2759
+ end
2760
+ when 25 then
2761
+ begin
2762
+
2763
+ unless @buffers[:ident].is_a?(::AST::Node)
2764
+ @buffers[:ident] ||= []
2765
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2766
+ end
2767
+ end
2768
+ begin
2769
+
2770
+ @buffers[:ident] ||= []
2771
+ yield @buffers[:ident]
2772
+ end
2773
+ when 7 then
2774
+ begin
2775
+
2776
+ @buffers[:string] = []
2777
+ end
2778
+ begin
2779
+
2780
+ (@buffers[:string] ||= []) << data[p].ord
2781
+ end
2782
+ when 28 then
2783
+ begin
2784
+
2785
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
2786
+ end
2787
+ begin
2788
+
2789
+ yield @buffers[:string]
2790
+ end
2791
+ when 6 then
2792
+ begin
2793
+
2794
+ @buffers[:string] ||= []
2795
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2796
+ end
2797
+ begin
2798
+
2799
+ unless @buffers[:ident].is_a?(::AST::Node)
2800
+ @buffers[:ident] ||= []
2801
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2802
+ end
2803
+ end
2804
+ when 27 then
2805
+ begin
2806
+
2807
+ @buffers[:string] ||= []
2808
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2809
+ end
2810
+ begin
2811
+
2812
+ @buffers[:string] ||= []
2813
+ yield @buffers[:string]
2814
+ end
2815
+ when 20 then
2816
+ begin
2817
+
2818
+ @buffers[:set] = @buffers[:set] << value(@buffers[:list])
2819
+ end
2820
+ begin
2821
+
2822
+ yield @buffers[:set]
2823
+ end
2824
+ when 22 then
2825
+ begin
2826
+
2827
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
2828
+ end
2829
+ begin
2830
+
2831
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2832
+ end
2833
+ begin
2834
+
2835
+ # Append list argument if its value is not empty.
2836
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2837
+ if list_arg_value != ''
2838
+ @buffers[:list] <<= @buffers[:list_arg]
2839
+ end
2840
+ end
2841
+ when 12 then
2842
+ begin
2843
+
2844
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
2845
+ end
2846
+ begin
2847
+
2848
+ @buffers[:set] = @buffers[:set] << value(@buffers[:ident])
2849
+ end
2850
+ begin
2851
+
2852
+ yield @buffers[:set]
2853
+ end
2854
+ when 21 then
2855
+ begin
2856
+
2857
+ unless @buffers[:ident].is_a?(::AST::Node)
2858
+ @buffers[:ident] ||= []
2859
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2860
+ end
2861
+ end
2862
+ begin
2863
+
2864
+ #TODO: Mark @buffers[:list_arg] identifier as error.
2865
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2866
+ end
2867
+ begin
2868
+
2869
+ # Append list argument if its value is not empty.
2870
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2871
+ if list_arg_value != ''
2872
+ @buffers[:list] <<= @buffers[:list_arg]
2873
+ end
2874
+ end
2875
+ when 15 then
2876
+ begin
2877
+
2878
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
2879
+ end
2880
+ begin
2881
+
2882
+ @buffers[:list_arg] = list_item(@buffers[:string])
2883
+ end
2884
+ begin
2885
+
2886
+ # Append list argument if its value is not empty.
2887
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2888
+ if list_arg_value != ''
2889
+ @buffers[:list] <<= @buffers[:list_arg]
2890
+ end
2891
+ end
2892
+ when 11 then
2893
+ begin
2894
+
2895
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
2896
+ end
2897
+ begin
2898
+
2899
+ @buffers[:set] = @buffers[:set] << value(@buffers[:string])
2900
+ end
2901
+ begin
2902
+
2903
+ yield @buffers[:set]
2904
+ end
2905
+ when 14 then
2906
+ begin
2907
+
2908
+ @buffers[:string] ||= []
2909
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
2910
+ end
2911
+ begin
2912
+
2913
+ #TODO: Mark @buffers[:list_arg] string as error.
2914
+ @buffers[:list_arg] = list_item(@buffers[:string])
2915
+ end
2916
+ begin
2917
+
2918
+ # Append list argument if its value is not empty.
2919
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2920
+ if list_arg_value != ''
2921
+ @buffers[:list] <<= @buffers[:list_arg]
2922
+ end
2923
+ end
2924
+ when 23 then
2925
+ begin
2926
+
2927
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
2928
+ end
2929
+ begin
2930
+
2931
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2932
+ end
2933
+ begin
2934
+
2935
+ # Append list argument if its value is not empty.
2936
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2937
+ if list_arg_value != ''
2938
+ @buffers[:list] <<= @buffers[:list_arg]
2939
+ end
2940
+ end
2941
+ begin
2942
+
2943
+ @buffers.delete(:string)
2944
+ @buffers.delete(:ident)
2945
+ end
2946
+ when 24 then
2947
+ begin
2948
+
2949
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
2950
+ end
2951
+ begin
2952
+
2953
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2954
+ end
2955
+ begin
2956
+
2957
+ # Append list argument if its value is not empty.
2958
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2959
+ if list_arg_value != ''
2960
+ @buffers[:list] <<= @buffers[:list_arg]
2961
+ end
2962
+ end
2963
+ begin
2964
+
2965
+ #TODO: Mark @buffers[:list] as complete.
2966
+ end
2967
+ when 33 then
2968
+ begin
2969
+
2970
+ unless @buffers[:ident].is_a?(::AST::Node)
2971
+ @buffers[:ident] ||= []
2972
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
2973
+ end
2974
+ end
2975
+ begin
2976
+
2977
+ #TODO: Mark @buffers[:list_arg] identifier as error.
2978
+ @buffers[:list_arg] = list_item(@buffers[:ident])
2979
+ end
2980
+ begin
2981
+
2982
+ # Append list argument if its value is not empty.
2983
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
2984
+ if list_arg_value != ''
2985
+ @buffers[:list] <<= @buffers[:list_arg]
2986
+ end
2987
+ end
2988
+ begin
2989
+
2990
+ @buffers[:list] ||= list()
2991
+ yield @buffers[:list]
2992
+ end
2993
+ when 16 then
2994
+ begin
2995
+
2996
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
2997
+ end
2998
+ begin
2999
+
3000
+ @buffers[:list_arg] = list_item(@buffers[:string])
3001
+ end
3002
+ begin
3003
+
3004
+ # Append list argument if its value is not empty.
3005
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3006
+ if list_arg_value != ''
3007
+ @buffers[:list] <<= @buffers[:list_arg]
3008
+ end
3009
+ end
3010
+ begin
3011
+
3012
+ @buffers.delete(:string)
3013
+ @buffers.delete(:ident)
3014
+ end
3015
+ when 17 then
3016
+ begin
3017
+
3018
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
3019
+ end
3020
+ begin
3021
+
3022
+ @buffers[:list_arg] = list_item(@buffers[:string])
3023
+ end
3024
+ begin
3025
+
3026
+ # Append list argument if its value is not empty.
3027
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3028
+ if list_arg_value != ''
3029
+ @buffers[:list] <<= @buffers[:list_arg]
3030
+ end
3031
+ end
3032
+ begin
3033
+
3034
+ #TODO: Mark @buffers[:list] as complete.
3035
+ end
3036
+ when 31 then
3037
+ begin
3038
+
3039
+ @buffers[:string] ||= []
3040
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3041
+ end
3042
+ begin
3043
+
3044
+ #TODO: Mark @buffers[:list_arg] string as error.
3045
+ @buffers[:list_arg] = list_item(@buffers[:string])
3046
+ end
3047
+ begin
3048
+
3049
+ # Append list argument if its value is not empty.
3050
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3051
+ if list_arg_value != ''
3052
+ @buffers[:list] <<= @buffers[:list_arg]
3053
+ end
3054
+ end
3055
+ begin
3056
+
3057
+ @buffers[:list] ||= list()
3058
+ yield @buffers[:list]
3059
+ end
3060
+ when 13 then
3061
+ begin
3062
+
3063
+ @buffers[:string] ||= []
3064
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3065
+ end
3066
+ begin
3067
+
3068
+ #TODO: Mark @buffers[:list_arg] string as error.
3069
+ @buffers[:list_arg] = list_item(@buffers[:string])
3070
+ end
3071
+ begin
3072
+
3073
+ unless @buffers[:ident].is_a?(::AST::Node)
3074
+ @buffers[:ident] ||= []
3075
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3076
+ end
3077
+ end
3078
+ begin
3079
+
3080
+ #TODO: Mark @buffers[:list_arg] identifier as error.
3081
+ @buffers[:list_arg] = list_item(@buffers[:ident])
3082
+ end
3083
+ begin
3084
+
3085
+ # Append list argument if its value is not empty.
3086
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3087
+ if list_arg_value != ''
3088
+ @buffers[:list] <<= @buffers[:list_arg]
3089
+ end
3090
+ end
3091
+ when 30 then
3092
+ begin
3093
+
3094
+ @buffers[:string] ||= []
3095
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3096
+ end
3097
+ begin
3098
+
3099
+ #TODO: Mark @buffers[:list_arg] string as error.
3100
+ @buffers[:list_arg] = list_item(@buffers[:string])
3101
+ end
3102
+ begin
3103
+
3104
+ unless @buffers[:ident].is_a?(::AST::Node)
3105
+ @buffers[:ident] ||= []
3106
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3107
+ end
3108
+ end
3109
+ begin
3110
+
3111
+ #TODO: Mark @buffers[:list_arg] identifier as error.
3112
+ @buffers[:list_arg] = list_item(@buffers[:ident])
3113
+ end
3114
+ begin
3115
+
3116
+ # Append list argument if its value is not empty.
3117
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3118
+ if list_arg_value != ''
3119
+ @buffers[:list] <<= @buffers[:list_arg]
3120
+ end
3121
+ end
3122
+ begin
3123
+
3124
+ @buffers[:list] ||= list()
3125
+ yield @buffers[:list]
3126
+ end
3127
+ end
3128
+ end
3129
+ end
3130
+ if _goto_level <= _again
3131
+ if cs == 0
3132
+ _goto_level = _out
3133
+ next
3134
+ end
3135
+ p += 1
3136
+ if p != pe
3137
+ _goto_level = _resume
3138
+ next
3139
+ end
3140
+ end
3141
+ if _goto_level <= _test_eof
3142
+ if p == eof
3143
+ case _bel_eof_actions[cs]
3144
+ when 2 then
3145
+ begin
3146
+
3147
+ unless @buffers[:ident].is_a?(::AST::Node)
3148
+ @buffers[:ident] ||= []
3149
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3150
+ end
3151
+ end
3152
+ when 9 then
3153
+ begin
3154
+
3155
+ @buffers[:string] ||= []
3156
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3157
+ end
3158
+ when 29 then
3159
+ begin
3160
+
3161
+ @buffers[:list] ||= list()
3162
+ yield @buffers[:list]
3163
+ end
3164
+ when 25 then
3165
+ begin
3166
+
3167
+ unless @buffers[:ident].is_a?(::AST::Node)
3168
+ @buffers[:ident] ||= []
3169
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3170
+ end
3171
+ end
3172
+ begin
3173
+
3174
+ @buffers[:ident] ||= []
3175
+ yield @buffers[:ident]
3176
+ end
3177
+ when 6 then
3178
+ begin
3179
+
3180
+ @buffers[:string] ||= []
3181
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3182
+ end
3183
+ begin
3184
+
3185
+ unless @buffers[:ident].is_a?(::AST::Node)
3186
+ @buffers[:ident] ||= []
3187
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3188
+ end
3189
+ end
3190
+ when 27 then
3191
+ begin
3192
+
3193
+ @buffers[:string] ||= []
3194
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3195
+ end
3196
+ begin
3197
+
3198
+ @buffers[:string] ||= []
3199
+ yield @buffers[:string]
3200
+ end
3201
+ when 21 then
3202
+ begin
3203
+
3204
+ unless @buffers[:ident].is_a?(::AST::Node)
3205
+ @buffers[:ident] ||= []
3206
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3207
+ end
3208
+ end
3209
+ begin
3210
+
3211
+ #TODO: Mark @buffers[:list_arg] identifier as error.
3212
+ @buffers[:list_arg] = list_item(@buffers[:ident])
3213
+ end
3214
+ begin
3215
+
3216
+ # Append list argument if its value is not empty.
3217
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3218
+ if list_arg_value != ''
3219
+ @buffers[:list] <<= @buffers[:list_arg]
3220
+ end
3221
+ end
3222
+ when 14 then
3223
+ begin
3224
+
3225
+ @buffers[:string] ||= []
3226
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3227
+ end
3228
+ begin
3229
+
3230
+ #TODO: Mark @buffers[:list_arg] string as error.
3231
+ @buffers[:list_arg] = list_item(@buffers[:string])
3232
+ end
3233
+ begin
3234
+
3235
+ # Append list argument if its value is not empty.
3236
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3237
+ if list_arg_value != ''
3238
+ @buffers[:list] <<= @buffers[:list_arg]
3239
+ end
3240
+ end
3241
+ when 33 then
3242
+ begin
3243
+
3244
+ unless @buffers[:ident].is_a?(::AST::Node)
3245
+ @buffers[:ident] ||= []
3246
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3247
+ end
3248
+ end
3249
+ begin
3250
+
3251
+ #TODO: Mark @buffers[:list_arg] identifier as error.
3252
+ @buffers[:list_arg] = list_item(@buffers[:ident])
3253
+ end
3254
+ begin
3255
+
3256
+ # Append list argument if its value is not empty.
3257
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3258
+ if list_arg_value != ''
3259
+ @buffers[:list] <<= @buffers[:list_arg]
3260
+ end
3261
+ end
3262
+ begin
3263
+
3264
+ @buffers[:list] ||= list()
3265
+ yield @buffers[:list]
3266
+ end
3267
+ when 31 then
3268
+ begin
3269
+
3270
+ @buffers[:string] ||= []
3271
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3272
+ end
3273
+ begin
3274
+
3275
+ #TODO: Mark @buffers[:list_arg] string as error.
3276
+ @buffers[:list_arg] = list_item(@buffers[:string])
3277
+ end
3278
+ begin
3279
+
3280
+ # Append list argument if its value is not empty.
3281
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3282
+ if list_arg_value != ''
3283
+ @buffers[:list] <<= @buffers[:list_arg]
3284
+ end
3285
+ end
3286
+ begin
3287
+
3288
+ @buffers[:list] ||= list()
3289
+ yield @buffers[:list]
3290
+ end
3291
+ when 13 then
3292
+ begin
3293
+
3294
+ @buffers[:string] ||= []
3295
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3296
+ end
3297
+ begin
3298
+
3299
+ #TODO: Mark @buffers[:list_arg] string as error.
3300
+ @buffers[:list_arg] = list_item(@buffers[:string])
3301
+ end
3302
+ begin
3303
+
3304
+ unless @buffers[:ident].is_a?(::AST::Node)
3305
+ @buffers[:ident] ||= []
3306
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3307
+ end
3308
+ end
3309
+ begin
3310
+
3311
+ #TODO: Mark @buffers[:list_arg] identifier as error.
3312
+ @buffers[:list_arg] = list_item(@buffers[:ident])
3313
+ end
3314
+ begin
3315
+
3316
+ # Append list argument if its value is not empty.
3317
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3318
+ if list_arg_value != ''
3319
+ @buffers[:list] <<= @buffers[:list_arg]
3320
+ end
3321
+ end
3322
+ when 30 then
3323
+ begin
3324
+
3325
+ @buffers[:string] ||= []
3326
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3327
+ end
3328
+ begin
3329
+
3330
+ #TODO: Mark @buffers[:list_arg] string as error.
3331
+ @buffers[:list_arg] = list_item(@buffers[:string])
3332
+ end
3333
+ begin
3334
+
3335
+ unless @buffers[:ident].is_a?(::AST::Node)
3336
+ @buffers[:ident] ||= []
3337
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3338
+ end
3339
+ end
3340
+ begin
3341
+
3342
+ #TODO: Mark @buffers[:list_arg] identifier as error.
3343
+ @buffers[:list_arg] = list_item(@buffers[:ident])
3344
+ end
3345
+ begin
3346
+
3347
+ # Append list argument if its value is not empty.
3348
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
3349
+ if list_arg_value != ''
3350
+ @buffers[:list] <<= @buffers[:list_arg]
3351
+ end
3352
+ end
3353
+ begin
3354
+
3355
+ @buffers[:list] ||= list()
3356
+ yield @buffers[:list]
3357
+ end
3358
+ end
3359
+ end
3360
+
3361
+ end
3362
+ if _goto_level <= _out
3363
+ break
3364
+ end
3365
+ end
3366
+ end
3367
+
3368
+
3369
+ =end
3370
+ # end: ragel
3371
+
3372
+ require_relative '../ast/node'
3373
+ require_relative '../mixin/buffer'
3374
+ require_relative '../nonblocking_io_wrapper'
3375
+
3376
+ module BELParser
3377
+ module Parsers
3378
+ module BELScript
3379
+ module Set
3380
+
3381
+ class << self
3382
+
3383
+ MAX_LENGTH = 1024 * 128 # 128K
3384
+
3385
+ def parse(content)
3386
+ return nil unless content
3387
+
3388
+ Parser.new(content).each do |obj|
3389
+ yield obj
3390
+ end
3391
+ end
3392
+ end
3393
+
3394
+ private
3395
+
3396
+ class Parser
3397
+ include Enumerable
3398
+ include BELParser::Parsers::Buffer
3399
+ include BELParser::Parsers::AST::Sexp
3400
+
3401
+ def initialize(content)
3402
+ @content = content
3403
+ # begin: ragel
3404
+
3405
+ class << self
3406
+ attr_accessor :_bel_trans_keys
3407
+ private :_bel_trans_keys, :_bel_trans_keys=
3408
+ end
3409
+ self._bel_trans_keys = [
3410
+ 0, 0, 83, 115, 69, 101,
3411
+ 84, 116, 9, 32, 9,
3412
+ 122, 9, 122, 9, 61,
3413
+ 9, 32, 9, 123, 34, 92,
3414
+ 10, 10, 92, 92, 10,
3415
+ 122, 9, 122, 34, 92,
3416
+ 9, 125, 9, 125, 10, 10,
3417
+ 92, 92, 9, 125, 48,
3418
+ 122, 10, 122, 34, 34,
3419
+ 34, 92, 10, 10, 92, 92,
3420
+ 123, 123, 9, 122, 34,
3421
+ 92, 9, 125, 9, 125,
3422
+ 10, 10, 92, 92, 9, 125,
3423
+ 0, 0, 0, 0, 0,
3424
+ 0, 0, 0, 0
3425
+ ]
3426
+
3427
+ class << self
3428
+ attr_accessor :_bel_key_spans
3429
+ private :_bel_key_spans, :_bel_key_spans=
3430
+ end
3431
+ self._bel_key_spans = [
3432
+ 0, 33, 33, 33, 24, 114, 114, 53,
3433
+ 24, 115, 59, 1, 1, 113, 114, 59,
3434
+ 117, 117, 1, 1, 117, 75, 113, 1,
3435
+ 59, 1, 1, 1, 114, 59, 117, 117,
3436
+ 1, 1, 117, 0, 0, 0, 0
3437
+ ]
3438
+
3439
+ class << self
3440
+ attr_accessor :_bel_index_offsets
3441
+ private :_bel_index_offsets, :_bel_index_offsets=
3442
+ end
3443
+ self._bel_index_offsets = [
3444
+ 0, 0, 34, 68, 102, 127, 242, 357,
3445
+ 411, 436, 552, 612, 614, 616, 730, 845,
3446
+ 905, 1023, 1141, 1143, 1145, 1263, 1339, 1453,
3447
+ 1455, 1515, 1517, 1519, 1521, 1636, 1696, 1814,
3448
+ 1932, 1934, 1936, 2054, 2055, 2056, 2057
3449
+ ]
3450
+
3451
+ class << self
3452
+ attr_accessor :_bel_indicies
3453
+ private :_bel_indicies, :_bel_indicies=
3454
+ end
3455
+ self._bel_indicies = [
3456
+ 0, 1, 1, 1, 1, 1, 1, 1,
3457
+ 1, 1, 1, 1, 1, 1, 1, 1,
3458
+ 1, 1, 1, 1, 1, 1, 1, 1,
3459
+ 1, 1, 1, 1, 1, 1, 1, 1,
3460
+ 0, 1, 2, 1, 1, 1, 1, 1,
3461
+ 1, 1, 1, 1, 1, 1, 1, 1,
3462
+ 1, 1, 1, 1, 1, 1, 1, 1,
3463
+ 1, 1, 1, 1, 1, 1, 1, 1,
3464
+ 1, 1, 2, 1, 3, 1, 1, 1,
3465
+ 1, 1, 1, 1, 1, 1, 1, 1,
3466
+ 1, 1, 1, 1, 1, 1, 1, 1,
3467
+ 1, 1, 1, 1, 1, 1, 1, 1,
3468
+ 1, 1, 1, 1, 3, 1, 4, 1,
3469
+ 1, 1, 1, 1, 1, 1, 1, 1,
3470
+ 1, 1, 1, 1, 1, 1, 1, 1,
3471
+ 1, 1, 1, 1, 1, 4, 1, 6,
3472
+ 5, 5, 5, 5, 5, 5, 5, 5,
3473
+ 5, 5, 5, 5, 5, 5, 5, 5,
3474
+ 5, 5, 5, 5, 5, 5, 6, 5,
3475
+ 5, 5, 5, 5, 5, 5, 5, 5,
3476
+ 5, 5, 5, 5, 5, 5, 7, 7,
3477
+ 7, 7, 7, 7, 7, 7, 7, 7,
3478
+ 5, 5, 5, 5, 5, 5, 5, 7,
3479
+ 7, 7, 7, 7, 7, 7, 7, 7,
3480
+ 7, 7, 7, 7, 7, 7, 7, 7,
3481
+ 7, 7, 7, 7, 7, 7, 7, 7,
3482
+ 7, 5, 5, 5, 5, 7, 5, 7,
3483
+ 7, 7, 7, 7, 7, 7, 7, 7,
3484
+ 7, 7, 7, 7, 7, 7, 7, 7,
3485
+ 7, 7, 7, 7, 7, 7, 7, 7,
3486
+ 7, 5, 8, 5, 5, 5, 5, 5,
3487
+ 5, 5, 5, 5, 5, 5, 5, 5,
3488
+ 5, 5, 5, 5, 5, 5, 5, 5,
3489
+ 5, 8, 5, 5, 5, 5, 5, 5,
3490
+ 5, 5, 5, 5, 5, 5, 5, 5,
3491
+ 5, 9, 9, 9, 9, 9, 9, 9,
3492
+ 9, 9, 9, 5, 5, 5, 5, 5,
3493
+ 5, 5, 9, 9, 9, 9, 9, 9,
3494
+ 9, 9, 9, 9, 9, 9, 9, 9,
3495
+ 9, 9, 9, 9, 9, 9, 9, 9,
3496
+ 9, 9, 9, 9, 5, 5, 5, 5,
3497
+ 9, 5, 9, 9, 9, 9, 9, 9,
3498
+ 9, 9, 9, 9, 9, 9, 9, 9,
3499
+ 9, 9, 9, 9, 9, 9, 9, 9,
3500
+ 9, 9, 9, 9, 5, 10, 1, 1,
3501
+ 1, 1, 1, 1, 1, 1, 1, 1,
3502
+ 1, 1, 1, 1, 1, 1, 1, 1,
3503
+ 1, 1, 1, 1, 10, 1, 1, 1,
3504
+ 1, 1, 1, 1, 1, 1, 1, 1,
3505
+ 1, 1, 1, 1, 1, 1, 1, 1,
3506
+ 1, 1, 1, 1, 1, 1, 1, 1,
3507
+ 1, 11, 1, 12, 1, 1, 1, 1,
3508
+ 1, 1, 1, 1, 1, 1, 1, 1,
3509
+ 1, 1, 1, 1, 1, 1, 1, 1,
3510
+ 1, 1, 12, 1, 12, 13, 13, 13,
3511
+ 13, 13, 13, 13, 13, 13, 13, 13,
3512
+ 13, 13, 13, 13, 13, 13, 13, 13,
3513
+ 13, 13, 13, 12, 13, 14, 13, 13,
3514
+ 13, 13, 13, 13, 13, 13, 13, 13,
3515
+ 13, 13, 13, 15, 15, 15, 15, 15,
3516
+ 15, 15, 15, 15, 15, 13, 13, 13,
3517
+ 13, 13, 13, 13, 15, 15, 15, 15,
3518
+ 15, 15, 15, 15, 15, 15, 15, 15,
3519
+ 15, 15, 15, 15, 15, 15, 15, 15,
3520
+ 15, 15, 15, 15, 15, 15, 13, 13,
3521
+ 13, 13, 15, 13, 15, 15, 15, 15,
3522
+ 15, 15, 15, 15, 15, 15, 15, 15,
3523
+ 15, 15, 15, 15, 15, 15, 15, 15,
3524
+ 15, 15, 15, 15, 15, 15, 16, 13,
3525
+ 18, 17, 17, 17, 17, 17, 17, 17,
3526
+ 17, 17, 17, 17, 17, 17, 17, 17,
3527
+ 17, 17, 17, 17, 17, 17, 17, 17,
3528
+ 17, 17, 17, 17, 17, 17, 17, 17,
3529
+ 17, 17, 17, 17, 17, 17, 17, 17,
3530
+ 17, 17, 17, 17, 17, 17, 17, 17,
3531
+ 17, 17, 17, 17, 17, 17, 17, 17,
3532
+ 17, 17, 19, 17, 21, 20, 19, 17,
3533
+ 22, 5, 5, 5, 5, 5, 5, 5,
3534
+ 5, 5, 5, 5, 5, 5, 5, 5,
3535
+ 5, 5, 5, 5, 5, 5, 5, 5,
3536
+ 5, 5, 5, 5, 5, 5, 5, 5,
3537
+ 5, 5, 5, 5, 5, 5, 23, 23,
3538
+ 23, 23, 23, 23, 23, 23, 23, 23,
3539
+ 5, 5, 5, 5, 5, 5, 5, 23,
3540
+ 23, 23, 23, 23, 23, 23, 23, 23,
3541
+ 23, 23, 23, 23, 23, 23, 23, 23,
3542
+ 23, 23, 23, 23, 23, 23, 23, 23,
3543
+ 23, 5, 5, 5, 5, 23, 5, 23,
3544
+ 23, 23, 23, 23, 23, 23, 23, 23,
3545
+ 23, 23, 23, 23, 23, 23, 23, 23,
3546
+ 23, 23, 23, 23, 23, 23, 23, 23,
3547
+ 23, 5, 25, 24, 24, 24, 24, 24,
3548
+ 24, 24, 24, 24, 24, 24, 24, 24,
3549
+ 24, 24, 24, 24, 24, 24, 24, 24,
3550
+ 24, 25, 24, 26, 24, 24, 24, 24,
3551
+ 24, 24, 24, 24, 24, 24, 24, 24,
3552
+ 24, 27, 27, 27, 27, 27, 27, 27,
3553
+ 27, 27, 27, 24, 24, 24, 24, 24,
3554
+ 24, 24, 27, 27, 27, 27, 27, 27,
3555
+ 27, 27, 27, 27, 27, 27, 27, 27,
3556
+ 27, 27, 27, 27, 27, 27, 27, 27,
3557
+ 27, 27, 27, 27, 24, 24, 24, 24,
3558
+ 27, 24, 27, 27, 27, 27, 27, 27,
3559
+ 27, 27, 27, 27, 27, 27, 27, 27,
3560
+ 27, 27, 27, 27, 27, 27, 27, 27,
3561
+ 27, 27, 27, 27, 24, 29, 28, 28,
3562
+ 28, 28, 28, 28, 28, 28, 28, 28,
3563
+ 28, 28, 28, 28, 28, 28, 28, 28,
3564
+ 28, 28, 28, 28, 28, 28, 28, 28,
3565
+ 28, 28, 28, 28, 28, 28, 28, 28,
3566
+ 28, 28, 28, 28, 28, 28, 28, 28,
3567
+ 28, 28, 28, 28, 28, 28, 28, 28,
3568
+ 28, 28, 28, 28, 28, 28, 28, 30,
3569
+ 28, 32, 31, 31, 31, 31, 31, 31,
3570
+ 31, 31, 31, 31, 31, 31, 31, 31,
3571
+ 31, 31, 31, 31, 31, 31, 31, 31,
3572
+ 32, 31, 31, 31, 31, 31, 31, 31,
3573
+ 31, 31, 31, 31, 33, 31, 31, 31,
3574
+ 31, 31, 31, 31, 31, 31, 31, 31,
3575
+ 31, 31, 31, 31, 31, 31, 31, 31,
3576
+ 31, 31, 31, 31, 31, 31, 31, 31,
3577
+ 31, 31, 31, 31, 31, 31, 31, 31,
3578
+ 31, 31, 31, 31, 31, 31, 31, 31,
3579
+ 31, 31, 31, 31, 31, 31, 31, 31,
3580
+ 31, 31, 31, 31, 31, 31, 31, 31,
3581
+ 31, 31, 31, 31, 31, 31, 31, 31,
3582
+ 31, 31, 31, 31, 31, 31, 31, 31,
3583
+ 31, 31, 31, 31, 31, 34, 31, 35,
3584
+ 1, 1, 1, 1, 1, 1, 1, 1,
3585
+ 1, 1, 1, 1, 1, 1, 1, 1,
3586
+ 1, 1, 1, 1, 1, 1, 35, 1,
3587
+ 1, 1, 1, 1, 1, 1, 1, 1,
3588
+ 1, 1, 36, 1, 1, 1, 1, 1,
3589
+ 1, 1, 1, 1, 1, 1, 1, 1,
3590
+ 1, 1, 1, 1, 1, 1, 1, 1,
3591
+ 1, 1, 1, 1, 1, 1, 1, 1,
3592
+ 1, 1, 1, 1, 1, 1, 1, 1,
3593
+ 1, 1, 1, 1, 1, 1, 1, 1,
3594
+ 1, 1, 1, 1, 1, 1, 1, 1,
3595
+ 1, 1, 1, 1, 1, 1, 1, 1,
3596
+ 1, 1, 1, 1, 1, 1, 1, 1,
3597
+ 1, 1, 1, 1, 1, 1, 1, 1,
3598
+ 1, 1, 1, 37, 1, 38, 1, 30,
3599
+ 28, 40, 39, 39, 39, 39, 39, 39,
3600
+ 39, 39, 39, 39, 39, 39, 39, 39,
3601
+ 39, 39, 39, 39, 39, 39, 39, 39,
3602
+ 40, 39, 39, 39, 39, 39, 39, 39,
3603
+ 39, 39, 39, 39, 41, 39, 39, 39,
3604
+ 42, 42, 42, 42, 42, 42, 42, 42,
3605
+ 42, 42, 39, 39, 39, 39, 39, 39,
3606
+ 39, 42, 42, 42, 42, 42, 42, 42,
3607
+ 42, 42, 42, 42, 42, 42, 42, 42,
3608
+ 42, 42, 42, 42, 42, 42, 42, 42,
3609
+ 42, 42, 42, 39, 39, 39, 39, 42,
3610
+ 39, 42, 42, 42, 42, 42, 42, 42,
3611
+ 42, 42, 42, 42, 42, 42, 42, 42,
3612
+ 42, 42, 42, 42, 42, 42, 42, 42,
3613
+ 42, 42, 42, 39, 39, 43, 39, 45,
3614
+ 45, 45, 45, 45, 45, 45, 45, 45,
3615
+ 45, 44, 44, 44, 44, 44, 44, 44,
3616
+ 45, 45, 45, 45, 45, 45, 45, 45,
3617
+ 45, 45, 45, 45, 45, 45, 45, 45,
3618
+ 45, 45, 45, 45, 45, 45, 45, 45,
3619
+ 45, 45, 44, 44, 44, 44, 45, 44,
3620
+ 45, 45, 45, 45, 45, 45, 45, 45,
3621
+ 45, 45, 45, 45, 45, 45, 45, 45,
3622
+ 45, 45, 45, 45, 45, 45, 45, 45,
3623
+ 45, 45, 44, 46, 44, 44, 44, 44,
3624
+ 44, 44, 44, 44, 44, 44, 44, 44,
3625
+ 44, 44, 44, 44, 44, 44, 44, 44,
3626
+ 44, 44, 44, 44, 44, 44, 44, 44,
3627
+ 44, 44, 44, 44, 44, 44, 44, 44,
3628
+ 44, 47, 47, 47, 47, 47, 47, 47,
3629
+ 47, 47, 47, 44, 44, 44, 44, 44,
3630
+ 44, 44, 47, 47, 47, 47, 47, 47,
3631
+ 47, 47, 47, 47, 47, 47, 47, 47,
3632
+ 47, 47, 47, 47, 47, 47, 47, 47,
3633
+ 47, 47, 47, 47, 44, 44, 44, 44,
3634
+ 47, 44, 47, 47, 47, 47, 47, 47,
3635
+ 47, 47, 47, 47, 47, 47, 47, 47,
3636
+ 47, 47, 47, 47, 47, 47, 47, 47,
3637
+ 47, 47, 47, 47, 44, 49, 48, 51,
3638
+ 50, 50, 50, 50, 50, 50, 50, 50,
3639
+ 50, 50, 50, 50, 50, 50, 50, 50,
3640
+ 50, 50, 50, 50, 50, 50, 50, 50,
3641
+ 50, 50, 50, 50, 50, 50, 50, 50,
3642
+ 50, 50, 50, 50, 50, 50, 50, 50,
3643
+ 50, 50, 50, 50, 50, 50, 50, 50,
3644
+ 50, 50, 50, 50, 50, 50, 50, 50,
3645
+ 50, 52, 50, 53, 48, 52, 50, 55,
3646
+ 54, 57, 56, 56, 56, 56, 56, 56,
3647
+ 56, 56, 56, 56, 56, 56, 56, 56,
3648
+ 56, 56, 56, 56, 56, 56, 56, 56,
3649
+ 57, 56, 58, 56, 56, 56, 56, 56,
3650
+ 56, 56, 56, 56, 56, 56, 56, 56,
3651
+ 59, 59, 59, 59, 59, 59, 59, 59,
3652
+ 59, 59, 56, 56, 56, 56, 56, 56,
3653
+ 56, 59, 59, 59, 59, 59, 59, 59,
3654
+ 59, 59, 59, 59, 59, 59, 59, 59,
3655
+ 59, 59, 59, 59, 59, 59, 59, 59,
3656
+ 59, 59, 59, 56, 56, 56, 56, 59,
3657
+ 56, 59, 59, 59, 59, 59, 59, 59,
3658
+ 59, 59, 59, 59, 59, 59, 59, 59,
3659
+ 59, 59, 59, 59, 59, 59, 59, 59,
3660
+ 59, 59, 59, 56, 61, 60, 60, 60,
3661
+ 60, 60, 60, 60, 60, 60, 60, 60,
3662
+ 60, 60, 60, 60, 60, 60, 60, 60,
3663
+ 60, 60, 60, 60, 60, 60, 60, 60,
3664
+ 60, 60, 60, 60, 60, 60, 60, 60,
3665
+ 60, 60, 60, 60, 60, 60, 60, 60,
3666
+ 60, 60, 60, 60, 60, 60, 60, 60,
3667
+ 60, 60, 60, 60, 60, 60, 62, 60,
3668
+ 64, 63, 63, 63, 63, 63, 63, 63,
3669
+ 63, 63, 63, 63, 63, 63, 63, 63,
3670
+ 63, 63, 63, 63, 63, 63, 63, 64,
3671
+ 63, 63, 63, 63, 63, 63, 63, 63,
3672
+ 63, 63, 63, 65, 63, 63, 63, 63,
3673
+ 63, 63, 63, 63, 63, 63, 63, 63,
3674
+ 63, 63, 63, 63, 63, 63, 63, 63,
3675
+ 63, 63, 63, 63, 63, 63, 63, 63,
3676
+ 63, 63, 63, 63, 63, 63, 63, 63,
3677
+ 63, 63, 63, 63, 63, 63, 63, 63,
3678
+ 63, 63, 63, 63, 63, 63, 63, 63,
3679
+ 63, 63, 63, 63, 63, 63, 63, 63,
3680
+ 63, 63, 63, 63, 63, 63, 63, 63,
3681
+ 63, 63, 63, 63, 63, 63, 63, 63,
3682
+ 63, 63, 63, 63, 66, 63, 67, 54,
3683
+ 54, 54, 54, 54, 54, 54, 54, 54,
3684
+ 54, 54, 54, 54, 54, 54, 54, 54,
3685
+ 54, 54, 54, 54, 54, 67, 54, 54,
3686
+ 54, 54, 54, 54, 54, 54, 54, 54,
3687
+ 54, 68, 54, 54, 54, 54, 54, 54,
3688
+ 54, 54, 54, 54, 54, 54, 54, 54,
3689
+ 54, 54, 54, 54, 54, 54, 54, 54,
3690
+ 54, 54, 54, 54, 54, 54, 54, 54,
3691
+ 54, 54, 54, 54, 54, 54, 54, 54,
3692
+ 54, 54, 54, 54, 54, 54, 54, 54,
3693
+ 54, 54, 54, 54, 54, 54, 54, 54,
3694
+ 54, 54, 54, 54, 54, 54, 54, 54,
3695
+ 54, 54, 54, 54, 54, 54, 54, 54,
3696
+ 54, 54, 54, 54, 54, 54, 54, 54,
3697
+ 54, 54, 69, 54, 70, 54, 62, 60,
3698
+ 72, 71, 71, 71, 71, 71, 71, 71,
3699
+ 71, 71, 71, 71, 71, 71, 71, 71,
3700
+ 71, 71, 71, 71, 71, 71, 71, 72,
3701
+ 71, 71, 71, 71, 71, 71, 71, 71,
3702
+ 71, 71, 71, 73, 71, 71, 71, 74,
3703
+ 74, 74, 74, 74, 74, 74, 74, 74,
3704
+ 74, 71, 71, 71, 71, 71, 71, 71,
3705
+ 74, 74, 74, 74, 74, 74, 74, 74,
3706
+ 74, 74, 74, 74, 74, 74, 74, 74,
3707
+ 74, 74, 74, 74, 74, 74, 74, 74,
3708
+ 74, 74, 71, 71, 71, 71, 74, 71,
3709
+ 74, 74, 74, 74, 74, 74, 74, 74,
3710
+ 74, 74, 74, 74, 74, 74, 74, 74,
3711
+ 74, 74, 74, 74, 74, 74, 74, 74,
3712
+ 74, 74, 71, 71, 75, 71, 1, 1,
3713
+ 1, 1, 0
3714
+ ]
3715
+
3716
+ class << self
3717
+ attr_accessor :_bel_trans_targs
3718
+ private :_bel_trans_targs, :_bel_trans_targs=
3719
+ end
3720
+ self._bel_trans_targs = [
3721
+ 2, 0, 3, 4, 5, 0, 5, 6,
3722
+ 7, 6, 7, 8, 9, 0, 10, 13,
3723
+ 14, 10, 11, 12, 0, 35, 35, 13,
3724
+ 0, 14, 15, 20, 15, 16, 19, 0,
3725
+ 17, 14, 18, 17, 14, 18, 35, 0,
3726
+ 17, 14, 20, 18, 0, 22, 36, 22,
3727
+ 0, 24, 24, 25, 26, 37, 0, 28,
3728
+ 0, 28, 29, 34, 29, 30, 33, 0,
3729
+ 31, 28, 32, 31, 28, 32, 38, 0,
3730
+ 31, 28, 34, 32
3731
+ ]
3732
+
3733
+ class << self
3734
+ attr_accessor :_bel_trans_actions
3735
+ private :_bel_trans_actions, :_bel_trans_actions=
3736
+ end
3737
+ self._bel_trans_actions = [
3738
+ 0, 0, 0, 0, 1, 2, 0, 3,
3739
+ 4, 5, 0, 0, 0, 6, 7, 3,
3740
+ 8, 10, 10, 10, 9, 11, 12, 5,
3741
+ 13, 0, 7, 3, 10, 10, 10, 14,
3742
+ 15, 16, 17, 0, 18, 19, 20, 21,
3743
+ 22, 23, 5, 24, 25, 3, 26, 5,
3744
+ 27, 7, 10, 10, 10, 28, 29, 8,
3745
+ 30, 0, 7, 3, 10, 10, 10, 31,
3746
+ 15, 16, 17, 0, 18, 19, 32, 33,
3747
+ 22, 23, 5, 24
3748
+ ]
3749
+
3750
+ class << self
3751
+ attr_accessor :_bel_eof_actions
3752
+ private :_bel_eof_actions, :_bel_eof_actions=
3753
+ end
3754
+ self._bel_eof_actions = [
3755
+ 0, 0, 0, 0, 0, 2, 2, 0,
3756
+ 0, 6, 9, 9, 9, 2, 13, 14,
3757
+ 14, 0, 0, 14, 21, 25, 25, 27,
3758
+ 27, 27, 27, 29, 30, 31, 31, 29,
3759
+ 29, 31, 33, 0, 0, 0, 0
3760
+ ]
3761
+
3762
+ class << self
3763
+ attr_accessor :bel_start
3764
+ end
3765
+ self.bel_start = 1;
3766
+ class << self
3767
+ attr_accessor :bel_first_final
3768
+ end
3769
+ self.bel_first_final = 35;
3770
+ class << self
3771
+ attr_accessor :bel_error
3772
+ end
3773
+ self.bel_error = 0;
3774
+
3775
+ class << self
3776
+ attr_accessor :bel_en_ident
3777
+ end
3778
+ self.bel_en_ident = 21;
3779
+ class << self
3780
+ attr_accessor :bel_en_string
3781
+ end
3782
+ self.bel_en_string = 23;
3783
+ class << self
3784
+ attr_accessor :bel_en_list
3785
+ end
3786
+ self.bel_en_list = 27;
3787
+ class << self
3788
+ attr_accessor :bel_en_set
3789
+ end
3790
+ self.bel_en_set = 1;
3791
+
3792
+
3793
+ # end: ragel
3794
+ end
3795
+
3796
+ def each
3797
+ @buffers = {}
3798
+ data = @content.unpack('C*')
3799
+ p = 0
3800
+ pe = data.length
3801
+ eof = data.length
3802
+
3803
+ # begin: ragel
3804
+
3805
+ begin
3806
+ p ||= 0
3807
+ pe ||= data.length
3808
+ cs = bel_start
3809
+ end
3810
+
3811
+
3812
+ begin
3813
+ testEof = false
3814
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
3815
+ _goto_level = 0
3816
+ _resume = 10
3817
+ _eof_trans = 15
3818
+ _again = 20
3819
+ _test_eof = 30
3820
+ _out = 40
3821
+ while true
3822
+ if _goto_level <= 0
3823
+ if p == pe
3824
+ _goto_level = _test_eof
3825
+ next
3826
+ end
3827
+ if cs == 0
3828
+ _goto_level = _out
3829
+ next
3830
+ end
3831
+ end
3832
+ if _goto_level <= _resume
3833
+ _keys = cs << 1
3834
+ _inds = _bel_index_offsets[cs]
3835
+ _slen = _bel_key_spans[cs]
3836
+ _wide = data[p].ord
3837
+ _trans = if ( _slen > 0 &&
3838
+ _bel_trans_keys[_keys] <= _wide &&
3839
+ _wide <= _bel_trans_keys[_keys + 1]
3840
+ ) then
3841
+ _bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ]
3842
+ else
3843
+ _bel_indicies[ _inds + _slen ]
3844
+ end
3845
+ cs = _bel_trans_targs[_trans]
3846
+ if _bel_trans_actions[_trans] != 0
3847
+ case _bel_trans_actions[_trans]
3848
+ when 5 then
3849
+ begin
3850
+
3851
+ (@buffers[:ident] ||= []) << data[p].ord
3852
+ end
3853
+ when 2 then
3854
+ begin
3855
+
3856
+ unless @buffers[:ident].is_a?(::AST::Node)
3857
+ @buffers[:ident] ||= []
3858
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3859
+ end
3860
+ end
3861
+ when 10 then
3862
+ begin
3863
+
3864
+ (@buffers[:string] ||= []) << data[p].ord
3865
+ end
3866
+ when 9 then
3867
+ begin
3868
+
3869
+ @buffers[:string] ||= []
3870
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3871
+ end
3872
+ when 18 then
3873
+ begin
3874
+
3875
+ @buffers.delete(:string)
3876
+ @buffers.delete(:ident)
3877
+ end
3878
+ when 8 then
3879
+ begin
3880
+
3881
+ @buffers[:list] = list()
3882
+ end
3883
+ when 19 then
3884
+ begin
3885
+
3886
+ #TODO: Mark @buffers[:list] as complete.
3887
+ end
3888
+ when 32 then
3889
+ begin
3890
+
3891
+ yield @buffers[:list]
3892
+ end
3893
+ when 29 then
3894
+ begin
3895
+
3896
+ @buffers[:list] ||= list()
3897
+ yield @buffers[:list]
3898
+ end
3899
+ when 1 then
3900
+ begin
3901
+
3902
+ @buffers[:set] = set()
3903
+ end
3904
+ when 3 then
3905
+ begin
3906
+
3907
+ @buffers[:ident] = []
3908
+ end
3909
+ begin
3910
+
3911
+ (@buffers[:ident] ||= []) << data[p].ord
3912
+ end
3913
+ when 26 then
3914
+ begin
3915
+
3916
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
3917
+ end
3918
+ begin
3919
+
3920
+ yield @buffers[:ident]
3921
+ end
3922
+ when 4 then
3923
+ begin
3924
+
3925
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
3926
+ end
3927
+ begin
3928
+
3929
+ @buffers[:set] = @buffers[:set] << name(@buffers[:ident])
3930
+ end
3931
+ when 25 then
3932
+ begin
3933
+
3934
+ unless @buffers[:ident].is_a?(::AST::Node)
3935
+ @buffers[:ident] ||= []
3936
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3937
+ end
3938
+ end
3939
+ begin
3940
+
3941
+ @buffers[:ident] ||= []
3942
+ yield @buffers[:ident]
3943
+ end
3944
+ when 7 then
3945
+ begin
3946
+
3947
+ @buffers[:string] = []
3948
+ end
3949
+ begin
3950
+
3951
+ (@buffers[:string] ||= []) << data[p].ord
3952
+ end
3953
+ when 28 then
3954
+ begin
3955
+
3956
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
3957
+ end
3958
+ begin
3959
+
3960
+ yield @buffers[:string]
3961
+ end
3962
+ when 6 then
3963
+ begin
3964
+
3965
+ @buffers[:string] ||= []
3966
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3967
+ end
3968
+ begin
3969
+
3970
+ unless @buffers[:ident].is_a?(::AST::Node)
3971
+ @buffers[:ident] ||= []
3972
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
3973
+ end
3974
+ end
3975
+ when 27 then
3976
+ begin
3977
+
3978
+ @buffers[:string] ||= []
3979
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
3980
+ end
3981
+ begin
3982
+
3983
+ @buffers[:string] ||= []
3984
+ yield @buffers[:string]
3985
+ end
3986
+ when 20 then
3987
+ begin
3988
+
3989
+ @buffers[:set] = @buffers[:set] << value(@buffers[:list])
3990
+ end
3991
+ begin
3992
+
3993
+ yield @buffers[:set]
3994
+ end
3995
+ when 22 then
3996
+ begin
3997
+
3998
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
3999
+ end
4000
+ begin
4001
+
4002
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4003
+ end
4004
+ begin
4005
+
4006
+ # Append list argument if its value is not empty.
4007
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4008
+ if list_arg_value != ''
4009
+ @buffers[:list] <<= @buffers[:list_arg]
4010
+ end
4011
+ end
4012
+ when 12 then
4013
+ begin
4014
+
4015
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
4016
+ end
4017
+ begin
4018
+
4019
+ @buffers[:set] = @buffers[:set] << value(@buffers[:ident])
4020
+ end
4021
+ begin
4022
+
4023
+ yield @buffers[:set]
4024
+ end
4025
+ when 21 then
4026
+ begin
4027
+
4028
+ unless @buffers[:ident].is_a?(::AST::Node)
4029
+ @buffers[:ident] ||= []
4030
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4031
+ end
4032
+ end
4033
+ begin
4034
+
4035
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4036
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4037
+ end
4038
+ begin
4039
+
4040
+ # Append list argument if its value is not empty.
4041
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4042
+ if list_arg_value != ''
4043
+ @buffers[:list] <<= @buffers[:list_arg]
4044
+ end
4045
+ end
4046
+ when 15 then
4047
+ begin
4048
+
4049
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
4050
+ end
4051
+ begin
4052
+
4053
+ @buffers[:list_arg] = list_item(@buffers[:string])
4054
+ end
4055
+ begin
4056
+
4057
+ # Append list argument if its value is not empty.
4058
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4059
+ if list_arg_value != ''
4060
+ @buffers[:list] <<= @buffers[:list_arg]
4061
+ end
4062
+ end
4063
+ when 11 then
4064
+ begin
4065
+
4066
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
4067
+ end
4068
+ begin
4069
+
4070
+ @buffers[:set] = @buffers[:set] << value(@buffers[:string])
4071
+ end
4072
+ begin
4073
+
4074
+ yield @buffers[:set]
4075
+ end
4076
+ when 14 then
4077
+ begin
4078
+
4079
+ @buffers[:string] ||= []
4080
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4081
+ end
4082
+ begin
4083
+
4084
+ #TODO: Mark @buffers[:list_arg] string as error.
4085
+ @buffers[:list_arg] = list_item(@buffers[:string])
4086
+ end
4087
+ begin
4088
+
4089
+ # Append list argument if its value is not empty.
4090
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4091
+ if list_arg_value != ''
4092
+ @buffers[:list] <<= @buffers[:list_arg]
4093
+ end
4094
+ end
4095
+ when 23 then
4096
+ begin
4097
+
4098
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
4099
+ end
4100
+ begin
4101
+
4102
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4103
+ end
4104
+ begin
4105
+
4106
+ # Append list argument if its value is not empty.
4107
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4108
+ if list_arg_value != ''
4109
+ @buffers[:list] <<= @buffers[:list_arg]
4110
+ end
4111
+ end
4112
+ begin
4113
+
4114
+ @buffers.delete(:string)
4115
+ @buffers.delete(:ident)
4116
+ end
4117
+ when 24 then
4118
+ begin
4119
+
4120
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]))
4121
+ end
4122
+ begin
4123
+
4124
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4125
+ end
4126
+ begin
4127
+
4128
+ # Append list argument if its value is not empty.
4129
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4130
+ if list_arg_value != ''
4131
+ @buffers[:list] <<= @buffers[:list_arg]
4132
+ end
4133
+ end
4134
+ begin
4135
+
4136
+ #TODO: Mark @buffers[:list] as complete.
4137
+ end
4138
+ when 33 then
4139
+ begin
4140
+
4141
+ unless @buffers[:ident].is_a?(::AST::Node)
4142
+ @buffers[:ident] ||= []
4143
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4144
+ end
4145
+ end
4146
+ begin
4147
+
4148
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4149
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4150
+ end
4151
+ begin
4152
+
4153
+ # Append list argument if its value is not empty.
4154
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4155
+ if list_arg_value != ''
4156
+ @buffers[:list] <<= @buffers[:list_arg]
4157
+ end
4158
+ end
4159
+ begin
4160
+
4161
+ @buffers[:list] ||= list()
4162
+ yield @buffers[:list]
4163
+ end
4164
+ when 16 then
4165
+ begin
4166
+
4167
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
4168
+ end
4169
+ begin
4170
+
4171
+ @buffers[:list_arg] = list_item(@buffers[:string])
4172
+ end
4173
+ begin
4174
+
4175
+ # Append list argument if its value is not empty.
4176
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4177
+ if list_arg_value != ''
4178
+ @buffers[:list] <<= @buffers[:list_arg]
4179
+ end
4180
+ end
4181
+ begin
4182
+
4183
+ @buffers.delete(:string)
4184
+ @buffers.delete(:ident)
4185
+ end
4186
+ when 17 then
4187
+ begin
4188
+
4189
+ @buffers[:string] = string(utf8_string(@buffers[:string]))
4190
+ end
4191
+ begin
4192
+
4193
+ @buffers[:list_arg] = list_item(@buffers[:string])
4194
+ end
4195
+ begin
4196
+
4197
+ # Append list argument if its value is not empty.
4198
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4199
+ if list_arg_value != ''
4200
+ @buffers[:list] <<= @buffers[:list_arg]
4201
+ end
4202
+ end
4203
+ begin
4204
+
4205
+ #TODO: Mark @buffers[:list] as complete.
4206
+ end
4207
+ when 31 then
4208
+ begin
4209
+
4210
+ @buffers[:string] ||= []
4211
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4212
+ end
4213
+ begin
4214
+
4215
+ #TODO: Mark @buffers[:list_arg] string as error.
4216
+ @buffers[:list_arg] = list_item(@buffers[:string])
4217
+ end
4218
+ begin
4219
+
4220
+ # Append list argument if its value is not empty.
4221
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4222
+ if list_arg_value != ''
4223
+ @buffers[:list] <<= @buffers[:list_arg]
4224
+ end
4225
+ end
4226
+ begin
4227
+
4228
+ @buffers[:list] ||= list()
4229
+ yield @buffers[:list]
4230
+ end
4231
+ when 13 then
4232
+ begin
4233
+
4234
+ @buffers[:string] ||= []
4235
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4236
+ end
4237
+ begin
4238
+
4239
+ #TODO: Mark @buffers[:list_arg] string as error.
4240
+ @buffers[:list_arg] = list_item(@buffers[:string])
4241
+ end
4242
+ begin
4243
+
4244
+ unless @buffers[:ident].is_a?(::AST::Node)
4245
+ @buffers[:ident] ||= []
4246
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4247
+ end
4248
+ end
4249
+ begin
4250
+
4251
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4252
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4253
+ end
4254
+ begin
4255
+
4256
+ # Append list argument if its value is not empty.
4257
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4258
+ if list_arg_value != ''
4259
+ @buffers[:list] <<= @buffers[:list_arg]
4260
+ end
4261
+ end
4262
+ when 30 then
4263
+ begin
4264
+
4265
+ @buffers[:string] ||= []
4266
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4267
+ end
4268
+ begin
4269
+
4270
+ #TODO: Mark @buffers[:list_arg] string as error.
4271
+ @buffers[:list_arg] = list_item(@buffers[:string])
4272
+ end
4273
+ begin
4274
+
4275
+ unless @buffers[:ident].is_a?(::AST::Node)
4276
+ @buffers[:ident] ||= []
4277
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4278
+ end
4279
+ end
4280
+ begin
4281
+
4282
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4283
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4284
+ end
4285
+ begin
4286
+
4287
+ # Append list argument if its value is not empty.
4288
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4289
+ if list_arg_value != ''
4290
+ @buffers[:list] <<= @buffers[:list_arg]
4291
+ end
4292
+ end
4293
+ begin
4294
+
4295
+ @buffers[:list] ||= list()
4296
+ yield @buffers[:list]
4297
+ end
4298
+ end
4299
+ end
4300
+ end
4301
+ if _goto_level <= _again
4302
+ if cs == 0
4303
+ _goto_level = _out
4304
+ next
4305
+ end
4306
+ p += 1
4307
+ if p != pe
4308
+ _goto_level = _resume
4309
+ next
4310
+ end
4311
+ end
4312
+ if _goto_level <= _test_eof
4313
+ if p == eof
4314
+ case _bel_eof_actions[cs]
4315
+ when 2 then
4316
+ begin
4317
+
4318
+ unless @buffers[:ident].is_a?(::AST::Node)
4319
+ @buffers[:ident] ||= []
4320
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4321
+ end
4322
+ end
4323
+ when 9 then
4324
+ begin
4325
+
4326
+ @buffers[:string] ||= []
4327
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4328
+ end
4329
+ when 29 then
4330
+ begin
4331
+
4332
+ @buffers[:list] ||= list()
4333
+ yield @buffers[:list]
4334
+ end
4335
+ when 25 then
4336
+ begin
4337
+
4338
+ unless @buffers[:ident].is_a?(::AST::Node)
4339
+ @buffers[:ident] ||= []
4340
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4341
+ end
4342
+ end
4343
+ begin
4344
+
4345
+ @buffers[:ident] ||= []
4346
+ yield @buffers[:ident]
4347
+ end
4348
+ when 6 then
4349
+ begin
4350
+
4351
+ @buffers[:string] ||= []
4352
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4353
+ end
4354
+ begin
4355
+
4356
+ unless @buffers[:ident].is_a?(::AST::Node)
4357
+ @buffers[:ident] ||= []
4358
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4359
+ end
4360
+ end
4361
+ when 27 then
4362
+ begin
4363
+
4364
+ @buffers[:string] ||= []
4365
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4366
+ end
4367
+ begin
4368
+
4369
+ @buffers[:string] ||= []
4370
+ yield @buffers[:string]
4371
+ end
4372
+ when 21 then
4373
+ begin
4374
+
4375
+ unless @buffers[:ident].is_a?(::AST::Node)
4376
+ @buffers[:ident] ||= []
4377
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4378
+ end
4379
+ end
4380
+ begin
4381
+
4382
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4383
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4384
+ end
4385
+ begin
4386
+
4387
+ # Append list argument if its value is not empty.
4388
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4389
+ if list_arg_value != ''
4390
+ @buffers[:list] <<= @buffers[:list_arg]
4391
+ end
4392
+ end
4393
+ when 14 then
4394
+ begin
4395
+
4396
+ @buffers[:string] ||= []
4397
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4398
+ end
4399
+ begin
4400
+
4401
+ #TODO: Mark @buffers[:list_arg] string as error.
4402
+ @buffers[:list_arg] = list_item(@buffers[:string])
4403
+ end
4404
+ begin
4405
+
4406
+ # Append list argument if its value is not empty.
4407
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4408
+ if list_arg_value != ''
4409
+ @buffers[:list] <<= @buffers[:list_arg]
4410
+ end
4411
+ end
4412
+ when 33 then
4413
+ begin
4414
+
4415
+ unless @buffers[:ident].is_a?(::AST::Node)
4416
+ @buffers[:ident] ||= []
4417
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4418
+ end
4419
+ end
4420
+ begin
4421
+
4422
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4423
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4424
+ end
4425
+ begin
4426
+
4427
+ # Append list argument if its value is not empty.
4428
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4429
+ if list_arg_value != ''
4430
+ @buffers[:list] <<= @buffers[:list_arg]
4431
+ end
4432
+ end
4433
+ begin
4434
+
4435
+ @buffers[:list] ||= list()
4436
+ yield @buffers[:list]
4437
+ end
4438
+ when 31 then
4439
+ begin
4440
+
4441
+ @buffers[:string] ||= []
4442
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4443
+ end
4444
+ begin
4445
+
4446
+ #TODO: Mark @buffers[:list_arg] string as error.
4447
+ @buffers[:list_arg] = list_item(@buffers[:string])
4448
+ end
4449
+ begin
4450
+
4451
+ # Append list argument if its value is not empty.
4452
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4453
+ if list_arg_value != ''
4454
+ @buffers[:list] <<= @buffers[:list_arg]
4455
+ end
4456
+ end
4457
+ begin
4458
+
4459
+ @buffers[:list] ||= list()
4460
+ yield @buffers[:list]
4461
+ end
4462
+ when 13 then
4463
+ begin
4464
+
4465
+ @buffers[:string] ||= []
4466
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4467
+ end
4468
+ begin
4469
+
4470
+ #TODO: Mark @buffers[:list_arg] string as error.
4471
+ @buffers[:list_arg] = list_item(@buffers[:string])
4472
+ end
4473
+ begin
4474
+
4475
+ unless @buffers[:ident].is_a?(::AST::Node)
4476
+ @buffers[:ident] ||= []
4477
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4478
+ end
4479
+ end
4480
+ begin
4481
+
4482
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4483
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4484
+ end
4485
+ begin
4486
+
4487
+ # Append list argument if its value is not empty.
4488
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4489
+ if list_arg_value != ''
4490
+ @buffers[:list] <<= @buffers[:list_arg]
4491
+ end
4492
+ end
4493
+ when 30 then
4494
+ begin
4495
+
4496
+ @buffers[:string] ||= []
4497
+ @buffers[:string] = string(utf8_string(@buffers[:string]).sub(/\n$/, ''))
4498
+ end
4499
+ begin
4500
+
4501
+ #TODO: Mark @buffers[:list_arg] string as error.
4502
+ @buffers[:list_arg] = list_item(@buffers[:string])
4503
+ end
4504
+ begin
4505
+
4506
+ unless @buffers[:ident].is_a?(::AST::Node)
4507
+ @buffers[:ident] ||= []
4508
+ @buffers[:ident] = identifier(utf8_string(@buffers[:ident]).sub(/\n$/, ''))
4509
+ end
4510
+ end
4511
+ begin
4512
+
4513
+ #TODO: Mark @buffers[:list_arg] identifier as error.
4514
+ @buffers[:list_arg] = list_item(@buffers[:ident])
4515
+ end
4516
+ begin
4517
+
4518
+ # Append list argument if its value is not empty.
4519
+ list_arg_value = @buffers[:list_arg].children[0].children[0]
4520
+ if list_arg_value != ''
4521
+ @buffers[:list] <<= @buffers[:list_arg]
4522
+ end
4523
+ end
4524
+ begin
4525
+
4526
+ @buffers[:list] ||= list()
4527
+ yield @buffers[:list]
4528
+ end
4529
+ end
4530
+ end
4531
+
4532
+ end
4533
+ if _goto_level <= _out
4534
+ break
4535
+ end
4536
+ end
4537
+ end
4538
+
4539
+ # end: ragel
4540
+ end
4541
+ end
4542
+ end
4543
+ end
4544
+ end
4545
+ end
4546
+
4547
+ if __FILE__ == $0
4548
+ $stdin.each_line do |line|
4549
+ BELParser::Parsers::BELScript::Set.parse(line) { |obj|
4550
+ puts obj.inspect
4551
+ }
4552
+ end
4553
+ end
4554
+
4555
+ # vim: ft=ruby ts=2 sw=2:
4556
+ # encoding: utf-8