rattler 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (347) hide show
  1. data/README.rdoc +9 -3
  2. data/features/command_line/dest_option.feature +1 -1
  3. data/features/command_line/lib_option.feature +2 -2
  4. data/features/command_line/output_option.feature +2 -2
  5. data/features/command_line/parser_generator.feature +3 -3
  6. data/features/grammar/any_character.feature +0 -4
  7. data/features/grammar/back_reference.feature +0 -4
  8. data/features/grammar/character_class.feature +0 -4
  9. data/features/grammar/comments.feature +0 -4
  10. data/features/grammar/e_symbol.feature +18 -0
  11. data/features/grammar/eof.feature +0 -4
  12. data/features/grammar/fail.feature +0 -4
  13. data/features/grammar/list_matching.feature +52 -3
  14. data/features/grammar/literal.feature +0 -4
  15. data/features/grammar/negative_lookahead.feature +0 -4
  16. data/features/grammar/negative_semantic_predicate.feature +99 -0
  17. data/features/grammar/node_action.feature +17 -4
  18. data/features/grammar/nonterminal.feature +3 -7
  19. data/features/grammar/one_or_more.feature +0 -4
  20. data/features/grammar/optional.feature +0 -4
  21. data/features/grammar/ordered_choice.feature +0 -4
  22. data/features/grammar/positive_lookahead.feature +0 -4
  23. data/features/grammar/positive_semantic_predicate.feature +99 -0
  24. data/features/grammar/posix_class.feature +3 -6
  25. data/features/grammar/repeat.feature +50 -0
  26. data/features/grammar/sequence.feature +0 -4
  27. data/features/grammar/side_effect.feature +81 -0
  28. data/features/grammar/skip_operator.feature +2 -5
  29. data/features/grammar/start_rule.feature +1 -5
  30. data/features/grammar/symantic_action.feature +9 -4
  31. data/features/grammar/token.feature +0 -4
  32. data/features/grammar/whitespace.feature +0 -4
  33. data/features/grammar/word_literal.feature +0 -4
  34. data/features/grammar/zero_or_more.feature +0 -4
  35. data/features/step_definitions/grammar_steps.rb +5 -1
  36. data/lib/rattler/back_end/optimizer.rb +1 -0
  37. data/lib/rattler/back_end/optimizer/reduce_repeat_match.rb +20 -8
  38. data/lib/rattler/back_end/optimizer/simplify_redundant_repeat.rb +10 -7
  39. data/lib/rattler/back_end/optimizer/specialize_repeat.rb +40 -0
  40. data/lib/rattler/back_end/parser_generator.rb +11 -6
  41. data/lib/rattler/back_end/parser_generator/delegating_generator.rb +20 -0
  42. data/lib/rattler/back_end/parser_generator/e_symbol_generator.rb +52 -0
  43. data/lib/rattler/back_end/parser_generator/eof_generator.rb +58 -0
  44. data/lib/rattler/back_end/parser_generator/expr_generator.rb +6 -2
  45. data/lib/rattler/back_end/parser_generator/gen_method_names.rb +15 -5
  46. data/lib/rattler/back_end/parser_generator/general_list_generator.rb +194 -0
  47. data/lib/rattler/back_end/parser_generator/general_repeat_generator.rb +177 -0
  48. data/lib/rattler/back_end/parser_generator/label_generator.rb +4 -1
  49. data/lib/rattler/back_end/parser_generator/list0_generating.rb +36 -0
  50. data/lib/rattler/back_end/parser_generator/list1_generating.rb +30 -0
  51. data/lib/rattler/back_end/parser_generator/list_generator.rb +16 -20
  52. data/lib/rattler/back_end/parser_generator/one_or_more_generating.rb +25 -0
  53. data/lib/rattler/back_end/parser_generator/{optional_generator.rb → optional_generating.rb} +66 -81
  54. data/lib/rattler/back_end/parser_generator/predicate_propogating.rb +4 -4
  55. data/lib/rattler/back_end/parser_generator/repeat_generator.rb +53 -0
  56. data/lib/rattler/back_end/parser_generator/skip_propogating.rb +2 -2
  57. data/lib/rattler/back_end/parser_generator/sub_generating.rb +16 -18
  58. data/lib/rattler/back_end/parser_generator/token_propogating.rb +1 -1
  59. data/lib/rattler/back_end/parser_generator/zero_or_more_generating.rb +31 -0
  60. data/lib/rattler/grammar/grammar_parser.rb +20 -0
  61. data/lib/rattler/grammar/metagrammar.rb +131 -13
  62. data/lib/rattler/grammar/rattler.rtlr +25 -12
  63. data/lib/rattler/parsers.rb +9 -5
  64. data/lib/rattler/parsers/assert_code.rb +31 -0
  65. data/lib/rattler/parsers/atomic.rb +19 -0
  66. data/lib/rattler/parsers/direct_action.rb +12 -4
  67. data/lib/rattler/parsers/disallow_code.rb +31 -0
  68. data/lib/rattler/parsers/dispatch_action.rb +3 -2
  69. data/lib/rattler/parsers/e_symbol.rb +47 -0
  70. data/lib/rattler/parsers/effect_code.rb +31 -0
  71. data/lib/rattler/parsers/eof.rb +6 -13
  72. data/lib/rattler/parsers/list_parser.rb +33 -14
  73. data/lib/rattler/parsers/match.rb +1 -6
  74. data/lib/rattler/parsers/parser_dsl.rb +78 -35
  75. data/lib/rattler/parsers/predicate.rb +1 -4
  76. data/lib/rattler/parsers/repeat.rb +76 -0
  77. data/lib/rattler/parsers/semantic_assert.rb +19 -0
  78. data/lib/rattler/parsers/semantic_disallow.rb +19 -0
  79. data/lib/rattler/parsers/side_effect.rb +19 -0
  80. data/lib/rattler/parsers/skip.rb +1 -9
  81. data/lib/rattler/parsers/token.rb +1 -6
  82. data/lib/rattler/util/graphviz/node_builder.rb +6 -3
  83. data/spec/rattler/back_end/assert_compiler_examples.rb +187 -0
  84. data/spec/rattler/back_end/direct_action_compiler_examples.rb +227 -0
  85. data/spec/rattler/back_end/disallow_compiler_examples.rb +187 -0
  86. data/spec/rattler/back_end/dispatch_action_compiler_examples.rb +225 -0
  87. data/spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rb +45 -33
  88. data/spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rb +32 -172
  89. data/spec/rattler/back_end/parser_generator/e_symbol_generator_spec.rb +149 -0
  90. data/spec/rattler/back_end/parser_generator/eof_generator_spec.rb +152 -0
  91. data/spec/rattler/back_end/parser_generator/label_generator_spec.rb +4 -4
  92. data/spec/rattler/back_end/parser_generator/list0_generator_examples.rb +322 -0
  93. data/spec/rattler/back_end/parser_generator/list1_generator_examples.rb +343 -0
  94. data/spec/rattler/back_end/parser_generator/list_generator_spec.rb +597 -140
  95. data/spec/rattler/back_end/parser_generator/one_or_more_generator_examples.rb +292 -0
  96. data/spec/rattler/back_end/parser_generator/optional_generator_examples.rb +233 -0
  97. data/spec/rattler/back_end/parser_generator/repeat_generator_spec.rb +281 -0
  98. data/spec/rattler/back_end/parser_generator/zero_or_more_generator_examples.rb +277 -0
  99. data/spec/rattler/back_end/semantic_assert_compiler_examples.rb +152 -0
  100. data/spec/rattler/back_end/semantic_disallow_compiler_examples.rb +152 -0
  101. data/spec/rattler/back_end/shared_compiler_examples.rb +106 -651
  102. data/spec/rattler/back_end/side_effect_compiler_examples.rb +227 -0
  103. data/spec/rattler/back_end/skip_compiler_examples.rb +161 -0
  104. data/spec/rattler/back_end/token_compiler_examples.rb +262 -0
  105. data/spec/rattler/grammar/grammar_parser_spec.rb +302 -23
  106. data/spec/rattler/parsers/apply_spec.rb +6 -0
  107. data/spec/rattler/parsers/assert_spec.rb +18 -7
  108. data/spec/rattler/parsers/back_reference_spec.rb +9 -0
  109. data/spec/rattler/parsers/choice_spec.rb +36 -21
  110. data/spec/rattler/parsers/direct_action_spec.rb +76 -36
  111. data/spec/rattler/parsers/disallow_spec.rb +18 -7
  112. data/spec/rattler/parsers/dispatch_action_spec.rb +128 -22
  113. data/spec/rattler/parsers/e_symbol_spec.rb +30 -0
  114. data/spec/rattler/parsers/eof_spec.rb +15 -6
  115. data/spec/rattler/parsers/label_spec.rb +15 -2
  116. data/spec/rattler/parsers/list_parser_spec.rb +187 -0
  117. data/spec/rattler/parsers/match_spec.rb +16 -7
  118. data/spec/rattler/parsers/parser_dsl_spec.rb +82 -23
  119. data/spec/rattler/parsers/repeat_spec.rb +233 -0
  120. data/spec/rattler/parsers/semantic_assert_spec.rb +83 -0
  121. data/spec/rattler/parsers/semantic_disallow_spec.rb +83 -0
  122. data/spec/rattler/parsers/sequence_spec.rb +34 -20
  123. data/spec/rattler/parsers/side_effect_spec.rb +214 -0
  124. data/spec/rattler/parsers/skip_spec.rb +17 -6
  125. data/spec/rattler_spec.rb +2 -0
  126. data/spec/support/compiler_spec_helper.rb +8 -0
  127. metadata +156 -447
  128. data/bin/rtlr.compiled.rbc +0 -201
  129. data/features/step_definitions/cli_steps.rbc +0 -149
  130. data/features/step_definitions/grammar_steps.rbc +0 -1211
  131. data/features/support/env.rbc +0 -389
  132. data/lib/rattler.rbc +0 -1231
  133. data/lib/rattler/back_end.rbc +0 -286
  134. data/lib/rattler/back_end/compiler.rbc +0 -1394
  135. data/lib/rattler/back_end/optimizer.rbc +0 -2000
  136. data/lib/rattler/back_end/optimizer/composite_reducing.rbc +0 -337
  137. data/lib/rattler/back_end/optimizer/flatten_choice.rbc +0 -443
  138. data/lib/rattler/back_end/optimizer/flatten_sequence.rbc +0 -827
  139. data/lib/rattler/back_end/optimizer/flattening.rbc +0 -570
  140. data/lib/rattler/back_end/optimizer/inline_regular_rules.rbc +0 -691
  141. data/lib/rattler/back_end/optimizer/join_match_capturing_sequence.rbc +0 -1299
  142. data/lib/rattler/back_end/optimizer/join_match_choice.rbc +0 -523
  143. data/lib/rattler/back_end/optimizer/join_match_matching_sequence.rbc +0 -619
  144. data/lib/rattler/back_end/optimizer/join_match_sequence.rbc +0 -174
  145. data/lib/rattler/back_end/optimizer/join_predicate_bare_match.rbc +0 -1505
  146. data/lib/rattler/back_end/optimizer/join_predicate_match.rbc +0 -174
  147. data/lib/rattler/back_end/optimizer/join_predicate_nested_match.rbc +0 -620
  148. data/lib/rattler/back_end/optimizer/join_predicate_or_bare_match.rbc +0 -1502
  149. data/lib/rattler/back_end/optimizer/join_predicate_or_match.rbc +0 -174
  150. data/lib/rattler/back_end/optimizer/join_predicate_or_nested_match.rbc +0 -616
  151. data/lib/rattler/back_end/optimizer/match_joining.rbc +0 -1454
  152. data/lib/rattler/back_end/optimizer/optimization.rbc +0 -1366
  153. data/lib/rattler/back_end/optimizer/optimization_context.rbc +0 -1386
  154. data/lib/rattler/back_end/optimizer/optimization_sequence.rbc +0 -520
  155. data/lib/rattler/back_end/optimizer/optimize_children.rbc +0 -793
  156. data/lib/rattler/back_end/optimizer/reduce_repeat_match.rbc +0 -788
  157. data/lib/rattler/back_end/optimizer/remove_meaningless_wrapper.rbc +0 -508
  158. data/lib/rattler/back_end/optimizer/simplify_redundant_repeat.rbc +0 -807
  159. data/lib/rattler/back_end/optimizer/simplify_token_match.rbc +0 -561
  160. data/lib/rattler/back_end/parser_generator.rbc +0 -1326
  161. data/lib/rattler/back_end/parser_generator/apply_generator.rbc +0 -2148
  162. data/lib/rattler/back_end/parser_generator/assert_generator.rbc +0 -1967
  163. data/lib/rattler/back_end/parser_generator/back_reference_generator.rbc +0 -1665
  164. data/lib/rattler/back_end/parser_generator/choice_generator.rbc +0 -2793
  165. data/lib/rattler/back_end/parser_generator/direct_action_generator.rbc +0 -1071
  166. data/lib/rattler/back_end/parser_generator/disallow_generator.rbc +0 -1967
  167. data/lib/rattler/back_end/parser_generator/dispatch_action_generator.rbc +0 -1071
  168. data/lib/rattler/back_end/parser_generator/expr_generator.rbc +0 -2295
  169. data/lib/rattler/back_end/parser_generator/fail_generator.rbc +0 -1216
  170. data/lib/rattler/back_end/parser_generator/gen_method_names.rbc +0 -296
  171. data/lib/rattler/back_end/parser_generator/group_match.rbc +0 -612
  172. data/lib/rattler/back_end/parser_generator/group_match_generator.rbc +0 -1647
  173. data/lib/rattler/back_end/parser_generator/label_generator.rbc +0 -1401
  174. data/lib/rattler/back_end/parser_generator/list1_generator.rb +0 -54
  175. data/lib/rattler/back_end/parser_generator/list1_generator.rbc +0 -1237
  176. data/lib/rattler/back_end/parser_generator/list_generating.rb +0 -71
  177. data/lib/rattler/back_end/parser_generator/list_generating.rbc +0 -1900
  178. data/lib/rattler/back_end/parser_generator/list_generator.rbc +0 -1068
  179. data/lib/rattler/back_end/parser_generator/match_generator.rbc +0 -1743
  180. data/lib/rattler/back_end/parser_generator/nested.rbc +0 -496
  181. data/lib/rattler/back_end/parser_generator/one_or_more_generator.rb +0 -56
  182. data/lib/rattler/back_end/parser_generator/one_or_more_generator.rbc +0 -1277
  183. data/lib/rattler/back_end/parser_generator/optional_generator.rbc +0 -2025
  184. data/lib/rattler/back_end/parser_generator/predicate_propogating.rbc +0 -648
  185. data/lib/rattler/back_end/parser_generator/repeat_generating.rb +0 -57
  186. data/lib/rattler/back_end/parser_generator/repeat_generating.rbc +0 -1549
  187. data/lib/rattler/back_end/parser_generator/rule_generator.rbc +0 -1239
  188. data/lib/rattler/back_end/parser_generator/rule_set_generator.rbc +0 -2641
  189. data/lib/rattler/back_end/parser_generator/sequence_generator.rbc +0 -4867
  190. data/lib/rattler/back_end/parser_generator/skip_generator.rbc +0 -1278
  191. data/lib/rattler/back_end/parser_generator/skip_propogating.rbc +0 -432
  192. data/lib/rattler/back_end/parser_generator/sub_generating.rbc +0 -2785
  193. data/lib/rattler/back_end/parser_generator/token_generator.rbc +0 -755
  194. data/lib/rattler/back_end/parser_generator/token_propogating.rbc +0 -324
  195. data/lib/rattler/back_end/parser_generator/top_level.rbc +0 -352
  196. data/lib/rattler/back_end/parser_generator/zero_or_more_generator.rb +0 -53
  197. data/lib/rattler/back_end/parser_generator/zero_or_more_generator.rbc +0 -1111
  198. data/lib/rattler/back_end/ruby_generator.rbc +0 -1841
  199. data/lib/rattler/grammar.rbc +0 -557
  200. data/lib/rattler/grammar/analysis.rbc +0 -1944
  201. data/lib/rattler/grammar/grammar.rbc +0 -1090
  202. data/lib/rattler/grammar/grammar_dsl.rbc +0 -1401
  203. data/lib/rattler/grammar/grammar_parser.rbc +0 -2096
  204. data/lib/rattler/grammar/metagrammar.rbc +0 -11014
  205. data/lib/rattler/parsers.rbc +0 -1006
  206. data/lib/rattler/parsers/action_code.rbc +0 -1577
  207. data/lib/rattler/parsers/apply.rbc +0 -562
  208. data/lib/rattler/parsers/assert.rbc +0 -378
  209. data/lib/rattler/parsers/back_reference.rbc +0 -871
  210. data/lib/rattler/parsers/choice.rbc +0 -607
  211. data/lib/rattler/parsers/combinator_parser.rbc +0 -612
  212. data/lib/rattler/parsers/combining.rbc +0 -570
  213. data/lib/rattler/parsers/direct_action.rbc +0 -1472
  214. data/lib/rattler/parsers/disallow.rbc +0 -379
  215. data/lib/rattler/parsers/dispatch_action.rbc +0 -2078
  216. data/lib/rattler/parsers/eof.rbc +0 -567
  217. data/lib/rattler/parsers/fail.rbc +0 -745
  218. data/lib/rattler/parsers/label.rbc +0 -749
  219. data/lib/rattler/parsers/list.rbc +0 -292
  220. data/lib/rattler/parsers/list0.rb +0 -26
  221. data/lib/rattler/parsers/list0.rbc +0 -292
  222. data/lib/rattler/parsers/list1.rb +0 -26
  223. data/lib/rattler/parsers/list1.rbc +0 -305
  224. data/lib/rattler/parsers/list_parser.rbc +0 -886
  225. data/lib/rattler/parsers/match.rbc +0 -621
  226. data/lib/rattler/parsers/node_code.rbc +0 -1064
  227. data/lib/rattler/parsers/one_or_more.rb +0 -47
  228. data/lib/rattler/parsers/one_or_more.rbc +0 -475
  229. data/lib/rattler/parsers/optional.rb +0 -42
  230. data/lib/rattler/parsers/optional.rbc +0 -450
  231. data/lib/rattler/parsers/parser.rbc +0 -994
  232. data/lib/rattler/parsers/parser_dsl.rbc +0 -4765
  233. data/lib/rattler/parsers/predicate.rbc +0 -490
  234. data/lib/rattler/parsers/rule.rbc +0 -777
  235. data/lib/rattler/parsers/rule_set.rbc +0 -1438
  236. data/lib/rattler/parsers/sequence.rbc +0 -1040
  237. data/lib/rattler/parsers/skip.rbc +0 -613
  238. data/lib/rattler/parsers/token.rbc +0 -457
  239. data/lib/rattler/parsers/zero_or_more.rb +0 -40
  240. data/lib/rattler/parsers/zero_or_more.rbc +0 -462
  241. data/lib/rattler/runner.rbc +0 -3813
  242. data/lib/rattler/runtime.rbc +0 -370
  243. data/lib/rattler/runtime/extended_packrat_parser.rbc +0 -2351
  244. data/lib/rattler/runtime/packrat_parser.rbc +0 -1390
  245. data/lib/rattler/runtime/parse_failure.rbc +0 -909
  246. data/lib/rattler/runtime/parse_node.rbc +0 -1007
  247. data/lib/rattler/runtime/parser.rbc +0 -2267
  248. data/lib/rattler/runtime/parser_helper.rbc +0 -337
  249. data/lib/rattler/runtime/recursive_descent_parser.rbc +0 -942
  250. data/lib/rattler/util.rbc +0 -286
  251. data/lib/rattler/util/graphviz.rbc +0 -327
  252. data/lib/rattler/util/graphviz/node_builder.rbc +0 -2207
  253. data/lib/rattler/util/line_counter.rbc +0 -988
  254. data/lib/rattler/util/node.rbc +0 -2393
  255. data/lib/rattler/util/parser_spec_helper.rbc +0 -2533
  256. data/spec/rattler/back_end/compiler_spec.rbc +0 -1187
  257. data/spec/rattler/back_end/optimizer/flatten_choice_spec.rbc +0 -2093
  258. data/spec/rattler/back_end/optimizer/flatten_sequence_spec.rbc +0 -4055
  259. data/spec/rattler/back_end/optimizer/inline_regular_rules_spec.rbc +0 -2345
  260. data/spec/rattler/back_end/optimizer/join_match_capturing_sequence_spec.rbc +0 -7006
  261. data/spec/rattler/back_end/optimizer/join_match_choice_spec.rbc +0 -3252
  262. data/spec/rattler/back_end/optimizer/join_match_matching_sequence_spec.rbc +0 -3681
  263. data/spec/rattler/back_end/optimizer/join_predicate_bare_match_spec.rbc +0 -5603
  264. data/spec/rattler/back_end/optimizer/join_predicate_nested_match_spec.rbc +0 -5232
  265. data/spec/rattler/back_end/optimizer/join_predicate_or_bare_match_spec.rbc +0 -4272
  266. data/spec/rattler/back_end/optimizer/join_predicate_or_nested_match_spec.rbc +0 -4342
  267. data/spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rbc +0 -2960
  268. data/spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rbc +0 -6929
  269. data/spec/rattler/back_end/optimizer/simplify_token_match_spec.rbc +0 -2327
  270. data/spec/rattler/back_end/optimizer_spec.rbc +0 -372
  271. data/spec/rattler/back_end/parser_generator/apply_generator_spec.rbc +0 -4710
  272. data/spec/rattler/back_end/parser_generator/assert_generator_spec.rbc +0 -4697
  273. data/spec/rattler/back_end/parser_generator/back_reference_generator_spec.rbc +0 -4855
  274. data/spec/rattler/back_end/parser_generator/choice_generator_spec.rbc +0 -5350
  275. data/spec/rattler/back_end/parser_generator/direct_action_generator_spec.rbc +0 -4737
  276. data/spec/rattler/back_end/parser_generator/disallow_generator_spec.rbc +0 -4697
  277. data/spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rbc +0 -4731
  278. data/spec/rattler/back_end/parser_generator/fail_generator_spec.rbc +0 -2115
  279. data/spec/rattler/back_end/parser_generator/group_match_generator_spec.rbc +0 -4195
  280. data/spec/rattler/back_end/parser_generator/group_match_spec.rbc +0 -1414
  281. data/spec/rattler/back_end/parser_generator/label_generator_spec.rbc +0 -4696
  282. data/spec/rattler/back_end/parser_generator/list1_generator_spec.rb +0 -309
  283. data/spec/rattler/back_end/parser_generator/list1_generator_spec.rbc +0 -5213
  284. data/spec/rattler/back_end/parser_generator/list_generator_spec.rbc +0 -5179
  285. data/spec/rattler/back_end/parser_generator/match_generator_spec.rbc +0 -4681
  286. data/spec/rattler/back_end/parser_generator/one_or_more_generator_spec.rb +0 -259
  287. data/spec/rattler/back_end/parser_generator/one_or_more_generator_spec.rbc +0 -4957
  288. data/spec/rattler/back_end/parser_generator/optional_generator_spec.rb +0 -190
  289. data/spec/rattler/back_end/parser_generator/optional_generator_spec.rbc +0 -4704
  290. data/spec/rattler/back_end/parser_generator/rule_generator_spec.rbc +0 -545
  291. data/spec/rattler/back_end/parser_generator/rule_set_generator_spec.rbc +0 -1110
  292. data/spec/rattler/back_end/parser_generator/sequence_generator_spec.rbc +0 -5453
  293. data/spec/rattler/back_end/parser_generator/skip_generator_spec.rbc +0 -4691
  294. data/spec/rattler/back_end/parser_generator/token_generator_spec.rbc +0 -4691
  295. data/spec/rattler/back_end/parser_generator/zero_or_more_generator_spec.rb +0 -244
  296. data/spec/rattler/back_end/parser_generator/zero_or_more_generator_spec.rbc +0 -4924
  297. data/spec/rattler/back_end/ruby_generator_spec.rbc +0 -2460
  298. data/spec/rattler/back_end/shared_compiler_examples.rbc +0 -41886
  299. data/spec/rattler/grammar/analysis_spec.rbc +0 -4365
  300. data/spec/rattler/grammar/grammar_parser_spec.rbc +0 -10344
  301. data/spec/rattler/grammar/grammar_spec.rbc +0 -1701
  302. data/spec/rattler/parsers/action_code_spec.rbc +0 -4674
  303. data/spec/rattler/parsers/apply_spec.rbc +0 -851
  304. data/spec/rattler/parsers/assert_spec.rbc +0 -752
  305. data/spec/rattler/parsers/back_reference_spec.rbc +0 -1002
  306. data/spec/rattler/parsers/choice_spec.rbc +0 -1696
  307. data/spec/rattler/parsers/combinator_parser_spec.rbc +0 -361
  308. data/spec/rattler/parsers/direct_action_spec.rbc +0 -5222
  309. data/spec/rattler/parsers/disallow_spec.rbc +0 -752
  310. data/spec/rattler/parsers/dispatch_action_spec.rbc +0 -3033
  311. data/spec/rattler/parsers/eof_spec.rbc +0 -728
  312. data/spec/rattler/parsers/fail_spec.rbc +0 -548
  313. data/spec/rattler/parsers/label_spec.rbc +0 -1091
  314. data/spec/rattler/parsers/list0_spec.rb +0 -82
  315. data/spec/rattler/parsers/list0_spec.rbc +0 -2308
  316. data/spec/rattler/parsers/list1_spec.rb +0 -82
  317. data/spec/rattler/parsers/list1_spec.rbc +0 -2287
  318. data/spec/rattler/parsers/list_spec.rbc +0 -2308
  319. data/spec/rattler/parsers/match_spec.rbc +0 -780
  320. data/spec/rattler/parsers/node_code_spec.rbc +0 -1754
  321. data/spec/rattler/parsers/one_or_more_spec.rb +0 -64
  322. data/spec/rattler/parsers/one_or_more_spec.rbc +0 -1698
  323. data/spec/rattler/parsers/optional_spec.rb +0 -64
  324. data/spec/rattler/parsers/optional_spec.rbc +0 -1717
  325. data/spec/rattler/parsers/parser_dsl_spec.rbc +0 -10150
  326. data/spec/rattler/parsers/rule_set_spec.rbc +0 -1060
  327. data/spec/rattler/parsers/sequence_spec.rbc +0 -2899
  328. data/spec/rattler/parsers/skip_spec.rbc +0 -753
  329. data/spec/rattler/parsers/token_spec.rbc +0 -1511
  330. data/spec/rattler/parsers/zero_or_more_spec.rb +0 -64
  331. data/spec/rattler/parsers/zero_or_more_spec.rbc +0 -1719
  332. data/spec/rattler/runtime/extended_packrat_parser_spec.rbc +0 -1341
  333. data/spec/rattler/runtime/packrat_parser_spec.rbc +0 -210
  334. data/spec/rattler/runtime/parse_failure_spec.rbc +0 -2244
  335. data/spec/rattler/runtime/parse_node_spec.rbc +0 -2008
  336. data/spec/rattler/runtime/parser_spec.rbc +0 -2757
  337. data/spec/rattler/runtime/recursive_descent_parser_spec.rbc +0 -210
  338. data/spec/rattler/runtime/shared_parser_examples.rbc +0 -2567
  339. data/spec/rattler/util/graphviz/node_builder_spec.rbc +0 -3439
  340. data/spec/rattler/util/line_counter_spec.rbc +0 -2272
  341. data/spec/rattler/util/node_spec.rbc +0 -15023
  342. data/spec/rattler_spec.rbc +0 -1591
  343. data/spec/spec_helper.rbc +0 -336
  344. data/spec/support/combinator_parser_spec_helper.rbc +0 -1284
  345. data/spec/support/compiler_spec_helper.rbc +0 -1941
  346. data/spec/support/parser_generator_spec_helper.rbc +0 -718
  347. data/spec/support/runtime_parser_spec_helper.rbc +0 -313
@@ -1,54 +0,0 @@
1
- require 'rattler/back_end/parser_generator'
2
-
3
- module Rattler::BackEnd::ParserGenerator
4
-
5
- # @private
6
- class List1Generator < ExprGenerator #:nodoc:
7
- include ListGenerating
8
- include NestedSubGenerating
9
- include PredicatePropogating
10
-
11
- def gen_skip(list, scope={})
12
- expr :block do
13
- (@g << "#{result_name} = false").newline
14
- gen_skipping(list, scope) { (@g << "#{result_name} = true").newline }
15
- @g.newline << result_name
16
- end
17
- end
18
-
19
- protected
20
-
21
- def gen_result(captures)
22
- @g << captures << " unless #{accumulator_name}.empty?"
23
- end
24
-
25
- end
26
-
27
- # @private
28
- class NestedList1Generator < List1Generator #:nodoc:
29
- include Nested
30
- end
31
-
32
- def List1Generator.nested(*args)
33
- NestedList1Generator.new(*args)
34
- end
35
-
36
- # @private
37
- class TopLevelList1Generator < List1Generator #:nodoc:
38
- include TopLevel
39
-
40
- def gen_assert(parser, scope = {})
41
- gen_top_level parser.child, :assert, scope
42
- end
43
-
44
- def gen_disallow(parser, scope = {})
45
- gen_top_level parser.child, :disallow, scope
46
- end
47
-
48
- end
49
-
50
- def List1Generator.top_level(*args)
51
- TopLevelList1Generator.new(*args)
52
- end
53
-
54
- end
@@ -1,1237 +0,0 @@
1
- !RBIX
2
- 3105615304195158506
3
- x
4
- M
5
- 1
6
- n
7
- n
8
- x
9
- 10
10
- __script__
11
- i
12
- 41
13
- 5
14
- 7
15
- 0
16
- 64
17
- 47
18
- 49
19
- 1
20
- 1
21
- 15
22
- 99
23
- 7
24
- 2
25
- 45
26
- 3
27
- 4
28
- 43
29
- 5
30
- 49
31
- 6
32
- 2
33
- 13
34
- 99
35
- 12
36
- 7
37
- 7
38
- 12
39
- 7
40
- 8
41
- 12
42
- 65
43
- 12
44
- 49
45
- 9
46
- 4
47
- 15
48
- 49
49
- 7
50
- 0
51
- 15
52
- 2
53
- 11
54
- I
55
- 6
56
- I
57
- 0
58
- I
59
- 0
60
- I
61
- 0
62
- n
63
- p
64
- 10
65
- s
66
- 33
67
- rattler/back_end/parser_generator
68
- x
69
- 7
70
- require
71
- x
72
- 15
73
- ParserGenerator
74
- x
75
- 7
76
- Rattler
77
- n
78
- x
79
- 7
80
- BackEnd
81
- x
82
- 17
83
- open_module_under
84
- x
85
- 15
86
- __module_init__
87
- M
88
- 1
89
- n
90
- n
91
- x
92
- 15
93
- ParserGenerator
94
- i
95
- 115
96
- 5
97
- 66
98
- 99
99
- 7
100
- 0
101
- 45
102
- 1
103
- 2
104
- 65
105
- 49
106
- 3
107
- 3
108
- 13
109
- 99
110
- 12
111
- 7
112
- 4
113
- 12
114
- 7
115
- 5
116
- 12
117
- 65
118
- 12
119
- 49
120
- 6
121
- 4
122
- 15
123
- 49
124
- 4
125
- 0
126
- 15
127
- 99
128
- 7
129
- 7
130
- 45
131
- 0
132
- 8
133
- 65
134
- 49
135
- 3
136
- 3
137
- 13
138
- 99
139
- 12
140
- 7
141
- 4
142
- 12
143
- 7
144
- 9
145
- 12
146
- 65
147
- 12
148
- 49
149
- 6
150
- 4
151
- 15
152
- 49
153
- 4
154
- 0
155
- 15
156
- 99
157
- 7
158
- 10
159
- 7
160
- 11
161
- 65
162
- 45
163
- 0
164
- 12
165
- 49
166
- 6
167
- 4
168
- 15
169
- 99
170
- 7
171
- 13
172
- 45
173
- 0
174
- 14
175
- 65
176
- 49
177
- 3
178
- 3
179
- 13
180
- 99
181
- 12
182
- 7
183
- 4
184
- 12
185
- 7
186
- 15
187
- 12
188
- 65
189
- 12
190
- 49
191
- 6
192
- 4
193
- 15
194
- 49
195
- 4
196
- 0
197
- 15
198
- 99
199
- 7
200
- 16
201
- 7
202
- 17
203
- 65
204
- 45
205
- 0
206
- 18
207
- 49
208
- 6
209
- 4
210
- 11
211
- I
212
- 6
213
- I
214
- 0
215
- I
216
- 0
217
- I
218
- 0
219
- n
220
- p
221
- 19
222
- x
223
- 14
224
- List1Generator
225
- x
226
- 13
227
- ExprGenerator
228
- n
229
- x
230
- 10
231
- open_class
232
- x
233
- 14
234
- __class_init__
235
- M
236
- 1
237
- n
238
- n
239
- x
240
- 14
241
- List1Generator
242
- i
243
- 61
244
- 5
245
- 66
246
- 5
247
- 45
248
- 0
249
- 1
250
- 47
251
- 49
252
- 2
253
- 1
254
- 15
255
- 5
256
- 45
257
- 3
258
- 4
259
- 47
260
- 49
261
- 2
262
- 1
263
- 15
264
- 5
265
- 45
266
- 5
267
- 6
268
- 47
269
- 49
270
- 2
271
- 1
272
- 15
273
- 99
274
- 7
275
- 7
276
- 7
277
- 8
278
- 65
279
- 67
280
- 49
281
- 9
282
- 0
283
- 49
284
- 10
285
- 4
286
- 15
287
- 5
288
- 48
289
- 11
290
- 15
291
- 99
292
- 7
293
- 12
294
- 7
295
- 13
296
- 65
297
- 67
298
- 49
299
- 9
300
- 0
301
- 49
302
- 10
303
- 4
304
- 11
305
- I
306
- 5
307
- I
308
- 0
309
- I
310
- 0
311
- I
312
- 0
313
- n
314
- p
315
- 14
316
- x
317
- 14
318
- ListGenerating
319
- n
320
- x
321
- 7
322
- include
323
- x
324
- 19
325
- NestedSubGenerating
326
- n
327
- x
328
- 20
329
- PredicatePropogating
330
- n
331
- x
332
- 8
333
- gen_skip
334
- M
335
- 1
336
- n
337
- n
338
- x
339
- 8
340
- gen_skip
341
- i
342
- 24
343
- 23
344
- 1
345
- 10
346
- 14
347
- 44
348
- 43
349
- 0
350
- 78
351
- 49
352
- 1
353
- 1
354
- 19
355
- 1
356
- 15
357
- 5
358
- 7
359
- 2
360
- 56
361
- 3
362
- 47
363
- 50
364
- 4
365
- 1
366
- 11
367
- I
368
- 5
369
- I
370
- 2
371
- I
372
- 1
373
- I
374
- 2
375
- n
376
- p
377
- 5
378
- x
379
- 4
380
- Hash
381
- x
382
- 16
383
- new_from_literal
384
- x
385
- 5
386
- block
387
- M
388
- 1
389
- p
390
- 2
391
- x
392
- 9
393
- for_block
394
- t
395
- n
396
- x
397
- 8
398
- gen_skip
399
- i
400
- 45
401
- 39
402
- 0
403
- 5
404
- 48
405
- 1
406
- 47
407
- 101
408
- 2
409
- 7
410
- 3
411
- 63
412
- 2
413
- 49
414
- 4
415
- 1
416
- 49
417
- 5
418
- 0
419
- 15
420
- 5
421
- 21
422
- 1
423
- 0
424
- 21
425
- 1
426
- 1
427
- 56
428
- 6
429
- 47
430
- 50
431
- 7
432
- 2
433
- 15
434
- 39
435
- 0
436
- 49
437
- 5
438
- 0
439
- 5
440
- 48
441
- 1
442
- 49
443
- 4
444
- 1
445
- 11
446
- I
447
- 5
448
- I
449
- 0
450
- I
451
- 0
452
- I
453
- 0
454
- I
455
- -2
456
- p
457
- 8
458
- x
459
- 2
460
- @g
461
- x
462
- 11
463
- result_name
464
- x
465
- 4
466
- to_s
467
- s
468
- 8
469
- = false
470
- x
471
- 2
472
- <<
473
- x
474
- 7
475
- newline
476
- M
477
- 1
478
- p
479
- 2
480
- x
481
- 9
482
- for_block
483
- t
484
- n
485
- x
486
- 8
487
- gen_skip
488
- i
489
- 19
490
- 39
491
- 0
492
- 5
493
- 48
494
- 1
495
- 47
496
- 101
497
- 2
498
- 7
499
- 3
500
- 63
501
- 2
502
- 49
503
- 4
504
- 1
505
- 49
506
- 5
507
- 0
508
- 11
509
- I
510
- 4
511
- I
512
- 0
513
- I
514
- 0
515
- I
516
- 0
517
- I
518
- -2
519
- p
520
- 6
521
- x
522
- 2
523
- @g
524
- x
525
- 11
526
- result_name
527
- x
528
- 4
529
- to_s
530
- s
531
- 7
532
- = true
533
- x
534
- 2
535
- <<
536
- x
537
- 7
538
- newline
539
- p
540
- 3
541
- I
542
- 0
543
- I
544
- e
545
- I
546
- 13
547
- x
548
- 102
549
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
550
- p
551
- 0
552
- x
553
- 12
554
- gen_skipping
555
- p
556
- 7
557
- I
558
- 0
559
- I
560
- d
561
- I
562
- 13
563
- I
564
- e
565
- I
566
- 21
567
- I
568
- f
569
- I
570
- 2d
571
- x
572
- 102
573
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
574
- p
575
- 0
576
- x
577
- 4
578
- expr
579
- p
580
- 5
581
- I
582
- -1
583
- I
584
- b
585
- I
586
- e
587
- I
588
- c
589
- I
590
- 18
591
- x
592
- 102
593
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
594
- p
595
- 2
596
- x
597
- 4
598
- list
599
- x
600
- 5
601
- scope
602
- x
603
- 17
604
- method_visibility
605
- x
606
- 15
607
- add_defn_method
608
- x
609
- 9
610
- protected
611
- x
612
- 10
613
- gen_result
614
- M
615
- 1
616
- n
617
- n
618
- x
619
- 10
620
- gen_result
621
- i
622
- 23
623
- 39
624
- 0
625
- 20
626
- 0
627
- 49
628
- 1
629
- 1
630
- 7
631
- 2
632
- 5
633
- 48
634
- 3
635
- 47
636
- 101
637
- 4
638
- 7
639
- 5
640
- 63
641
- 3
642
- 49
643
- 1
644
- 1
645
- 11
646
- I
647
- 5
648
- I
649
- 1
650
- I
651
- 1
652
- I
653
- 1
654
- n
655
- p
656
- 6
657
- x
658
- 2
659
- @g
660
- x
661
- 2
662
- <<
663
- s
664
- 8
665
- unless
666
- x
667
- 16
668
- accumulator_name
669
- x
670
- 4
671
- to_s
672
- s
673
- 7
674
- .empty?
675
- p
676
- 5
677
- I
678
- -1
679
- I
680
- 15
681
- I
682
- 0
683
- I
684
- 16
685
- I
686
- 17
687
- x
688
- 102
689
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
690
- p
691
- 1
692
- x
693
- 8
694
- captures
695
- p
696
- 13
697
- I
698
- 2
699
- I
700
- 7
701
- I
702
- b
703
- I
704
- 8
705
- I
706
- 14
707
- I
708
- 9
709
- I
710
- 1d
711
- I
712
- b
713
- I
714
- 2b
715
- I
716
- 13
717
- I
718
- 2f
719
- I
720
- 15
721
- I
722
- 3d
723
- x
724
- 102
725
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
726
- p
727
- 0
728
- x
729
- 13
730
- attach_method
731
- x
732
- 20
733
- NestedList1Generator
734
- n
735
- M
736
- 1
737
- n
738
- n
739
- x
740
- 20
741
- NestedList1Generator
742
- i
743
- 11
744
- 5
745
- 66
746
- 5
747
- 45
748
- 0
749
- 1
750
- 47
751
- 49
752
- 2
753
- 1
754
- 11
755
- I
756
- 2
757
- I
758
- 0
759
- I
760
- 0
761
- I
762
- 0
763
- n
764
- p
765
- 3
766
- x
767
- 6
768
- Nested
769
- n
770
- x
771
- 7
772
- include
773
- p
774
- 3
775
- I
776
- 2
777
- I
778
- 1d
779
- I
780
- b
781
- x
782
- 102
783
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
784
- p
785
- 0
786
- x
787
- 6
788
- nested
789
- M
790
- 1
791
- n
792
- n
793
- x
794
- 6
795
- nested
796
- i
797
- 11
798
- 45
799
- 0
800
- 1
801
- 20
802
- 0
803
- 36
804
- 1
805
- 51
806
- 2
807
- 0
808
- 11
809
- I
810
- 4
811
- I
812
- 1
813
- I
814
- 0
815
- I
816
- 0
817
- I
818
- 0
819
- p
820
- 3
821
- x
822
- 20
823
- NestedList1Generator
824
- n
825
- x
826
- 3
827
- new
828
- p
829
- 5
830
- I
831
- -1
832
- I
833
- 20
834
- I
835
- 0
836
- I
837
- 21
838
- I
839
- b
840
- x
841
- 102
842
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
843
- p
844
- 1
845
- x
846
- 4
847
- args
848
- n
849
- x
850
- 22
851
- TopLevelList1Generator
852
- n
853
- M
854
- 1
855
- n
856
- n
857
- x
858
- 22
859
- TopLevelList1Generator
860
- i
861
- 39
862
- 5
863
- 66
864
- 5
865
- 45
866
- 0
867
- 1
868
- 47
869
- 49
870
- 2
871
- 1
872
- 15
873
- 99
874
- 7
875
- 3
876
- 7
877
- 4
878
- 65
879
- 67
880
- 49
881
- 5
882
- 0
883
- 49
884
- 6
885
- 4
886
- 15
887
- 99
888
- 7
889
- 7
890
- 7
891
- 8
892
- 65
893
- 67
894
- 49
895
- 5
896
- 0
897
- 49
898
- 6
899
- 4
900
- 11
901
- I
902
- 5
903
- I
904
- 0
905
- I
906
- 0
907
- I
908
- 0
909
- n
910
- p
911
- 9
912
- x
913
- 8
914
- TopLevel
915
- n
916
- x
917
- 7
918
- include
919
- x
920
- 10
921
- gen_assert
922
- M
923
- 1
924
- n
925
- n
926
- x
927
- 10
928
- gen_assert
929
- i
930
- 29
931
- 23
932
- 1
933
- 10
934
- 14
935
- 44
936
- 43
937
- 0
938
- 78
939
- 49
940
- 1
941
- 1
942
- 19
943
- 1
944
- 15
945
- 5
946
- 20
947
- 0
948
- 49
949
- 2
950
- 0
951
- 7
952
- 3
953
- 20
954
- 1
955
- 47
956
- 49
957
- 4
958
- 3
959
- 11
960
- I
961
- 6
962
- I
963
- 2
964
- I
965
- 1
966
- I
967
- 2
968
- n
969
- p
970
- 5
971
- x
972
- 4
973
- Hash
974
- x
975
- 16
976
- new_from_literal
977
- x
978
- 5
979
- child
980
- x
981
- 6
982
- assert
983
- x
984
- 13
985
- gen_top_level
986
- p
987
- 5
988
- I
989
- -1
990
- I
991
- 28
992
- I
993
- e
994
- I
995
- 29
996
- I
997
- 1d
998
- x
999
- 102
1000
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
1001
- p
1002
- 2
1003
- x
1004
- 6
1005
- parser
1006
- x
1007
- 5
1008
- scope
1009
- x
1010
- 17
1011
- method_visibility
1012
- x
1013
- 15
1014
- add_defn_method
1015
- x
1016
- 12
1017
- gen_disallow
1018
- M
1019
- 1
1020
- n
1021
- n
1022
- x
1023
- 12
1024
- gen_disallow
1025
- i
1026
- 29
1027
- 23
1028
- 1
1029
- 10
1030
- 14
1031
- 44
1032
- 43
1033
- 0
1034
- 78
1035
- 49
1036
- 1
1037
- 1
1038
- 19
1039
- 1
1040
- 15
1041
- 5
1042
- 20
1043
- 0
1044
- 49
1045
- 2
1046
- 0
1047
- 7
1048
- 3
1049
- 20
1050
- 1
1051
- 47
1052
- 49
1053
- 4
1054
- 3
1055
- 11
1056
- I
1057
- 6
1058
- I
1059
- 2
1060
- I
1061
- 1
1062
- I
1063
- 2
1064
- n
1065
- p
1066
- 5
1067
- x
1068
- 4
1069
- Hash
1070
- x
1071
- 16
1072
- new_from_literal
1073
- x
1074
- 5
1075
- child
1076
- x
1077
- 8
1078
- disallow
1079
- x
1080
- 13
1081
- gen_top_level
1082
- p
1083
- 5
1084
- I
1085
- -1
1086
- I
1087
- 2c
1088
- I
1089
- e
1090
- I
1091
- 2d
1092
- I
1093
- 1d
1094
- x
1095
- 102
1096
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
1097
- p
1098
- 2
1099
- x
1100
- 6
1101
- parser
1102
- x
1103
- 5
1104
- scope
1105
- p
1106
- 7
1107
- I
1108
- 2
1109
- I
1110
- 26
1111
- I
1112
- b
1113
- I
1114
- 28
1115
- I
1116
- 19
1117
- I
1118
- 2c
1119
- I
1120
- 27
1121
- x
1122
- 102
1123
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
1124
- p
1125
- 0
1126
- x
1127
- 9
1128
- top_level
1129
- M
1130
- 1
1131
- n
1132
- n
1133
- x
1134
- 9
1135
- top_level
1136
- i
1137
- 11
1138
- 45
1139
- 0
1140
- 1
1141
- 20
1142
- 0
1143
- 36
1144
- 1
1145
- 51
1146
- 2
1147
- 0
1148
- 11
1149
- I
1150
- 4
1151
- I
1152
- 1
1153
- I
1154
- 0
1155
- I
1156
- 0
1157
- I
1158
- 0
1159
- p
1160
- 3
1161
- x
1162
- 22
1163
- TopLevelList1Generator
1164
- n
1165
- x
1166
- 3
1167
- new
1168
- p
1169
- 5
1170
- I
1171
- -1
1172
- I
1173
- 32
1174
- I
1175
- 0
1176
- I
1177
- 33
1178
- I
1179
- b
1180
- x
1181
- 102
1182
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
1183
- p
1184
- 1
1185
- x
1186
- 4
1187
- args
1188
- n
1189
- p
1190
- 11
1191
- I
1192
- 2
1193
- I
1194
- 6
1195
- I
1196
- 1f
1197
- I
1198
- 1c
1199
- I
1200
- 3c
1201
- I
1202
- 20
1203
- I
1204
- 49
1205
- I
1206
- 25
1207
- I
1208
- 66
1209
- I
1210
- 32
1211
- I
1212
- 73
1213
- x
1214
- 102
1215
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
1216
- p
1217
- 0
1218
- x
1219
- 13
1220
- attach_method
1221
- p
1222
- 5
1223
- I
1224
- 0
1225
- I
1226
- 1
1227
- I
1228
- 9
1229
- I
1230
- 3
1231
- I
1232
- 29
1233
- x
1234
- 102
1235
- /home/jarhart/Dropbox/Workspaces/Ruby/rattler/lib/rattler/back_end/parser_generator/list1_generator.rb
1236
- p
1237
- 0