bel_parser 1.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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