rattler 0.4.2 → 0.5.0

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 (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
@@ -0,0 +1,214 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe SideEffect do
4
+ include CombinatorParserSpecHelper
5
+
6
+ subject { SideEffect[nested, code] }
7
+
8
+ before { $__side_effect_result__ = nil }
9
+
10
+ describe '#parse' do
11
+
12
+ context 'with a capturing parser' do
13
+
14
+ let(:nested) { Match[/[[:digit:]]+/] }
15
+ let(:code) { '|s| $__side_effect_result__ = s * 2' }
16
+
17
+ context 'when the parser matches' do
18
+ it 'applies the action binding the captured results as arguments' do
19
+ parsing('451a').should result_in('451').at(3)
20
+ $__side_effect_result__.should == '451451'
21
+ end
22
+ end
23
+
24
+ context 'when the parser fails' do
25
+ it 'fails' do
26
+ parsing('foo').should fail
27
+ end
28
+ end
29
+
30
+ context 'using the "_" character' do
31
+
32
+ let(:code) { '$__side_effect_result__ = _ * 2' }
33
+
34
+ it 'applies the action binding the captured result as "_"' do
35
+ parsing('321a').should result_in('321').at(3)
36
+ $__side_effect_result__.should == '321321'
37
+ end
38
+ end
39
+ end
40
+
41
+ context 'with a sequence parser' do
42
+
43
+ let :nested do
44
+ Sequence[Match[/[[:alpha:]]+/], Skip[Match[/\=/]], Match[/[[:digit:]]+/]]
45
+ end
46
+
47
+ let(:code) { '|l, r| $__side_effect_result__ = "#{r} -> #{l}"' }
48
+
49
+ context 'when the parser matches' do
50
+ it 'applies the action binding the captured results as arguments' do
51
+ parsing('val=42 ').should result_in(['val', '42']).at(6)
52
+ $__side_effect_result__.should == '42 -> val'
53
+ end
54
+ end
55
+
56
+ context 'using the "_" character' do
57
+
58
+ let(:code) { '$__side_effect_result__ = _.join " <- "' }
59
+
60
+ it 'applies the action binding the captured result array as "_"' do
61
+ parsing('val=42 ').should result_in(['val', '42']).at(6)
62
+ $__side_effect_result__.should == 'val <- 42'
63
+ end
64
+ end
65
+ end
66
+
67
+ context 'with an optional parser' do
68
+
69
+ let(:nested) { Repeat[Match[/\d/], 0, 1] }
70
+ let(:code) { '|s| $__side_effect_result__ = s' }
71
+
72
+ context 'when the nested parser matches' do
73
+ it 'applies the action to an array containing the match' do
74
+ parsing('451a').should result_in(['4']).at(1)
75
+ $__side_effect_result__.should == ['4']
76
+ end
77
+ end
78
+ end
79
+
80
+ context 'with a zero-or-more parser' do
81
+
82
+ let(:nested) { Repeat[Match[/\d/], 0, nil] }
83
+ let(:code) { '|s| $__side_effect_result__ = s * 2' }
84
+
85
+ context 'when the nested parser matches' do
86
+ it 'applies the action to an array containing the matches' do
87
+ parsing('451a').should result_in(%w{4 5 1}).at(3)
88
+ $__side_effect_result__.should == %w{4 5 1 4 5 1}
89
+ end
90
+ end
91
+ end
92
+
93
+ context 'with a one-or-more parser' do
94
+
95
+ let(:nested) { Repeat[Match[/\d/], 1, nil] }
96
+ let(:code) { '|s| $__side_effect_result__ = s * 2' }
97
+
98
+ context 'when the nested parser matches' do
99
+ it 'applies the action to an array containing the matches' do
100
+ parsing('451a').should result_in(%w{4 5 1}).at(3)
101
+ $__side_effect_result__.should == %w{4 5 1 4 5 1}
102
+ end
103
+ end
104
+ end
105
+
106
+ context 'with a list parser' do
107
+
108
+ let(:nested) { ListParser[Match[/[[:digit:]]+/], Match[/,/], 2, 4] }
109
+ let(:code) { '$__side_effect_result__ = _.map {|s| s.to_i }' }
110
+
111
+ context 'when the nested parser matches' do
112
+ it 'applies the action to an array containing the matches' do
113
+ parsing('1,2,42').should result_in(["1", "2", "42"]).at(6)
114
+ $__side_effect_result__.should == [1, 2, 42]
115
+ end
116
+ end
117
+ end
118
+
119
+ context 'with a token parser' do
120
+
121
+ let(:nested) { Token[Match[/[[:digit:]]+/]] }
122
+ let(:code) { '|s| $__side_effect_result__ = s.to_i' }
123
+
124
+ context 'when the parser matches' do
125
+ it 'applies the action to the matched string' do
126
+ parsing('42 ').should result_in('42').at(2)
127
+ $__side_effect_result__.should == 42
128
+ end
129
+ end
130
+ end
131
+
132
+ context 'with a non-capturing parser' do
133
+
134
+ let(:nested) { Skip[Match[/\w+/]] }
135
+ let(:code) { '$__side_effect_result__ = 42' }
136
+
137
+ context 'when the parser matches' do
138
+ it 'applies the action with no arguments' do
139
+ parsing('abc123 ').should result_in(true).at(6)
140
+ $__side_effect_result__.should == 42
141
+ end
142
+ end
143
+ end
144
+
145
+ context 'with a labeled parser' do
146
+
147
+ let(:nested) { Label[:word, Match[/[[:alpha:]]+/]] }
148
+ let(:code) { '$__side_effect_result__ = word * 2' }
149
+
150
+ context 'when the parser matches' do
151
+ it 'applies the action binding the label to the result' do
152
+ parsing('foo ').should result_in('foo').at(3)
153
+ $__side_effect_result__.should == 'foofoo'
154
+ end
155
+ end
156
+ end
157
+
158
+ context 'with a sequence of labeled parsers' do
159
+
160
+ let :nested do
161
+ Sequence[
162
+ Label[:left, Match[/[[:alpha:]]+/]],
163
+ Match[/\=/],
164
+ Label[:right, Match[/[[:digit:]]+/]]
165
+ ]
166
+ end
167
+
168
+ let(:code) { '$__side_effect_result__ = "#{right} -> #{left}"' }
169
+
170
+ context 'when the parser matches' do
171
+ it 'applies the action binding the labels to the results' do
172
+ parsing('val=42 ').should result_in(['val', '=', '42']).at(6)
173
+ $__side_effect_result__.should == '42 -> val'
174
+ end
175
+ end
176
+ end
177
+ end
178
+
179
+ describe '#capturing?' do
180
+
181
+ let(:code) { '' }
182
+
183
+ context 'with a capturing parser' do
184
+
185
+ let(:nested) { Match[/\w+/] }
186
+
187
+ it 'is true' do
188
+ subject.should be_capturing
189
+ end
190
+ end
191
+
192
+ context 'with a non-capturing parser' do
193
+
194
+ let(:nested) { Skip[Match[/\s*/]] }
195
+
196
+ it 'is false' do
197
+ subject.should_not be_capturing
198
+ end
199
+ end
200
+ end
201
+
202
+ describe '#with_ws' do
203
+
204
+ let(:ws) { Match[/\s*/] }
205
+ let(:nested) { Match[/\w+/] }
206
+ let(:code) { '' }
207
+
208
+ it 'applies #with_ws to the nested parser' do
209
+ subject.with_ws(ws).
210
+ should == SideEffect[Sequence[Skip[ws], nested], code]
211
+ end
212
+ end
213
+
214
+ end
@@ -3,27 +3,38 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
3
3
  describe Skip do
4
4
  include CombinatorParserSpecHelper
5
5
 
6
- subject { Skip[Match[/\w+/]] }
7
-
6
+ subject { Skip[nested] }
7
+
8
+ let(:nested) { Match[/\w+/] }
9
+
8
10
  describe '#parse' do
9
-
11
+
10
12
  context 'when the parser matches' do
11
13
  it 'matches returning true' do
12
14
  parsing('abc123 ').should result_in(true).at(6)
13
15
  end
14
16
  end
15
-
17
+
16
18
  context 'when the parser fails' do
17
19
  it 'fails' do
18
20
  parsing(' ').should fail
19
21
  end
20
22
  end
21
23
  end
22
-
24
+
23
25
  describe '#capturing?' do
24
26
  it 'is false' do
25
27
  subject.should_not be_capturing
26
28
  end
27
29
  end
28
-
30
+
31
+ describe '#with_ws' do
32
+
33
+ let(:ws) { Match[/\s*/] }
34
+
35
+ it 'applies #with_ws to the nested parser' do
36
+ subject.with_ws(ws).should == Skip[Sequence[Skip[ws], nested]]
37
+ end
38
+ end
39
+
29
40
  end
@@ -1,3 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
1
3
  require 'rattler'
2
4
 
3
5
  describe 'Rattler' do
@@ -13,6 +13,10 @@ module CompilerSpecHelper
13
13
  RSpec::Matchers.define :parse do |source|
14
14
  match do |parser_class|
15
15
  parser = parser_class.new(source)
16
+ if @from
17
+ parser.pos = @from
18
+ @other_parser.pos = @from
19
+ end
16
20
  @repeat ||= 1
17
21
  actual_results = (1..@repeat).map { parser.parse or false }
18
22
  if @other_parser
@@ -30,6 +34,10 @@ module CompilerSpecHelper
30
34
  not (@wrong_result or @wrong_fail or @wrong_success)
31
35
  end
32
36
 
37
+ chain :from do |pos|
38
+ @from = pos
39
+ end
40
+
33
41
  chain :succeeding do |*args|
34
42
  @repeat = args.shift unless args.empty?
35
43
  @should_succeed = true
metadata CHANGED
@@ -1,393 +1,241 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rattler
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 2
10
- version: 0.4.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jason Arhart
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-03-17 00:00:00 -07:00
12
+ date: 2011-07-29 00:00:00.000000000 -07:00
19
13
  default_executable: rtlr
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- type: :development
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
23
16
  name: bundler
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &24195900 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
19
+ requirements:
27
20
  - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 23
30
- segments:
31
- - 1
32
- - 0
33
- - 0
21
+ - !ruby/object:Gem::Version
34
22
  version: 1.0.0
35
- prerelease: false
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
23
  type: :development
24
+ prerelease: false
25
+ version_requirements: *24195900
26
+ - !ruby/object:Gem::Dependency
39
27
  name: jeweler
40
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &24195400 !ruby/object:Gem::Requirement
41
29
  none: false
42
- requirements:
30
+ requirements:
43
31
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 7
46
- segments:
47
- - 1
48
- - 5
49
- - 2
32
+ - !ruby/object:Gem::Version
50
33
  version: 1.5.2
51
- prerelease: false
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
34
  type: :development
35
+ prerelease: false
36
+ version_requirements: *24195400
37
+ - !ruby/object:Gem::Dependency
55
38
  name: rspec
56
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &24194920 !ruby/object:Gem::Requirement
57
40
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 2
64
- - 3
65
- - 0
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
66
44
  version: 2.3.0
67
- prerelease: false
68
- version_requirements: *id003
69
- - !ruby/object:Gem::Dependency
70
45
  type: :development
46
+ prerelease: false
47
+ version_requirements: *24194920
48
+ - !ruby/object:Gem::Dependency
71
49
  name: cucumber
72
- requirement: &id004 !ruby/object:Gem::Requirement
50
+ requirement: &24194380 !ruby/object:Gem::Requirement
73
51
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 63
78
- segments:
79
- - 0
80
- - 8
81
- - 0
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
82
55
  version: 0.8.0
83
- prerelease: false
84
- version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
56
  type: :development
57
+ prerelease: false
58
+ version_requirements: *24194380
59
+ - !ruby/object:Gem::Dependency
87
60
  name: aruba
88
- requirement: &id005 !ruby/object:Gem::Requirement
61
+ requirement: &24193860 !ruby/object:Gem::Requirement
89
62
  none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- hash: 19
94
- segments:
95
- - 0
96
- - 3
97
- - 0
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
98
66
  version: 0.3.0
99
- prerelease: false
100
- version_requirements: *id005
101
- - !ruby/object:Gem::Dependency
102
67
  type: :development
68
+ prerelease: false
69
+ version_requirements: *24193860
70
+ - !ruby/object:Gem::Dependency
103
71
  name: yard
104
- requirement: &id006 !ruby/object:Gem::Requirement
72
+ requirement: &24193340 !ruby/object:Gem::Requirement
105
73
  none: false
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- hash: 7
110
- segments:
111
- - 0
112
- - 6
113
- - 0
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
114
77
  version: 0.6.0
115
- prerelease: false
116
- version_requirements: *id006
117
- - !ruby/object:Gem::Dependency
118
78
  type: :development
79
+ prerelease: false
80
+ version_requirements: *24193340
81
+ - !ruby/object:Gem::Dependency
119
82
  name: watchr
120
- requirement: &id007 !ruby/object:Gem::Requirement
83
+ requirement: &24192800 !ruby/object:Gem::Requirement
121
84
  none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- hash: 1
126
- segments:
127
- - 0
128
- - 5
129
- - 5
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
130
88
  version: 0.5.5
131
- prerelease: false
132
- version_requirements: *id007
133
- - !ruby/object:Gem::Dependency
134
89
  type: :development
90
+ prerelease: false
91
+ version_requirements: *24192800
92
+ - !ruby/object:Gem::Dependency
135
93
  name: ruby-graphviz
136
- requirement: &id008 !ruby/object:Gem::Requirement
94
+ requirement: &24192240 !ruby/object:Gem::Requirement
137
95
  none: false
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- hash: 55
142
- segments:
143
- - 0
144
- - 9
145
- - 6
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
146
99
  version: 0.9.6
100
+ type: :development
147
101
  prerelease: false
148
- version_requirements: *id008
102
+ version_requirements: *24192240
149
103
  description: Simple language recognition tool for Ruby based on packrat parsing
150
104
  email: jarhart@gmail.com
151
- executables:
105
+ executables:
152
106
  - rtlr
153
107
  extensions: []
154
-
155
- extra_rdoc_files:
108
+ extra_rdoc_files:
156
109
  - LICENSE.txt
157
110
  - README.rdoc
158
- files:
111
+ files:
159
112
  - bin/rtlr
160
- - bin/rtlr.compiled.rbc
161
113
  - lib/rattler.rb
162
- - lib/rattler.rbc
163
114
  - lib/rattler/back_end.rb
164
- - lib/rattler/back_end.rbc
165
115
  - lib/rattler/back_end/compiler.rb
166
- - lib/rattler/back_end/compiler.rbc
167
116
  - lib/rattler/back_end/optimizer.rb
168
- - lib/rattler/back_end/optimizer.rbc
169
117
  - lib/rattler/back_end/optimizer/composite_reducing.rb
170
- - lib/rattler/back_end/optimizer/composite_reducing.rbc
171
118
  - lib/rattler/back_end/optimizer/flatten_choice.rb
172
- - lib/rattler/back_end/optimizer/flatten_choice.rbc
173
119
  - lib/rattler/back_end/optimizer/flatten_sequence.rb
174
- - lib/rattler/back_end/optimizer/flatten_sequence.rbc
175
120
  - lib/rattler/back_end/optimizer/flattening.rb
176
- - lib/rattler/back_end/optimizer/flattening.rbc
177
121
  - lib/rattler/back_end/optimizer/inline_regular_rules.rb
178
- - lib/rattler/back_end/optimizer/inline_regular_rules.rbc
179
122
  - lib/rattler/back_end/optimizer/join_match_capturing_sequence.rb
180
- - lib/rattler/back_end/optimizer/join_match_capturing_sequence.rbc
181
123
  - lib/rattler/back_end/optimizer/join_match_choice.rb
182
- - lib/rattler/back_end/optimizer/join_match_choice.rbc
183
124
  - lib/rattler/back_end/optimizer/join_match_matching_sequence.rb
184
- - lib/rattler/back_end/optimizer/join_match_matching_sequence.rbc
185
125
  - lib/rattler/back_end/optimizer/join_match_sequence.rb
186
- - lib/rattler/back_end/optimizer/join_match_sequence.rbc
187
126
  - lib/rattler/back_end/optimizer/join_predicate_bare_match.rb
188
- - lib/rattler/back_end/optimizer/join_predicate_bare_match.rbc
189
127
  - lib/rattler/back_end/optimizer/join_predicate_match.rb
190
- - lib/rattler/back_end/optimizer/join_predicate_match.rbc
191
128
  - lib/rattler/back_end/optimizer/join_predicate_nested_match.rb
192
- - lib/rattler/back_end/optimizer/join_predicate_nested_match.rbc
193
129
  - lib/rattler/back_end/optimizer/join_predicate_or_bare_match.rb
194
- - lib/rattler/back_end/optimizer/join_predicate_or_bare_match.rbc
195
130
  - lib/rattler/back_end/optimizer/join_predicate_or_match.rb
196
- - lib/rattler/back_end/optimizer/join_predicate_or_match.rbc
197
131
  - lib/rattler/back_end/optimizer/join_predicate_or_nested_match.rb
198
- - lib/rattler/back_end/optimizer/join_predicate_or_nested_match.rbc
199
132
  - lib/rattler/back_end/optimizer/match_joining.rb
200
- - lib/rattler/back_end/optimizer/match_joining.rbc
201
133
  - lib/rattler/back_end/optimizer/optimization.rb
202
- - lib/rattler/back_end/optimizer/optimization.rbc
203
134
  - lib/rattler/back_end/optimizer/optimization_context.rb
204
- - lib/rattler/back_end/optimizer/optimization_context.rbc
205
135
  - lib/rattler/back_end/optimizer/optimization_sequence.rb
206
- - lib/rattler/back_end/optimizer/optimization_sequence.rbc
207
136
  - lib/rattler/back_end/optimizer/optimize_children.rb
208
- - lib/rattler/back_end/optimizer/optimize_children.rbc
209
137
  - lib/rattler/back_end/optimizer/reduce_repeat_match.rb
210
- - lib/rattler/back_end/optimizer/reduce_repeat_match.rbc
211
138
  - lib/rattler/back_end/optimizer/remove_meaningless_wrapper.rb
212
- - lib/rattler/back_end/optimizer/remove_meaningless_wrapper.rbc
213
139
  - lib/rattler/back_end/optimizer/simplify_redundant_repeat.rb
214
- - lib/rattler/back_end/optimizer/simplify_redundant_repeat.rbc
215
140
  - lib/rattler/back_end/optimizer/simplify_token_match.rb
216
- - lib/rattler/back_end/optimizer/simplify_token_match.rbc
141
+ - lib/rattler/back_end/optimizer/specialize_repeat.rb
217
142
  - lib/rattler/back_end/parser_generator.rb
218
- - lib/rattler/back_end/parser_generator.rbc
219
143
  - lib/rattler/back_end/parser_generator/apply_generator.rb
220
- - lib/rattler/back_end/parser_generator/apply_generator.rbc
221
144
  - lib/rattler/back_end/parser_generator/assert_generator.rb
222
- - lib/rattler/back_end/parser_generator/assert_generator.rbc
223
145
  - lib/rattler/back_end/parser_generator/back_reference_generator.rb
224
- - lib/rattler/back_end/parser_generator/back_reference_generator.rbc
225
146
  - lib/rattler/back_end/parser_generator/choice_generator.rb
226
- - lib/rattler/back_end/parser_generator/choice_generator.rbc
147
+ - lib/rattler/back_end/parser_generator/delegating_generator.rb
227
148
  - lib/rattler/back_end/parser_generator/direct_action_generator.rb
228
- - lib/rattler/back_end/parser_generator/direct_action_generator.rbc
229
149
  - lib/rattler/back_end/parser_generator/disallow_generator.rb
230
- - lib/rattler/back_end/parser_generator/disallow_generator.rbc
231
150
  - lib/rattler/back_end/parser_generator/dispatch_action_generator.rb
232
- - lib/rattler/back_end/parser_generator/dispatch_action_generator.rbc
151
+ - lib/rattler/back_end/parser_generator/e_symbol_generator.rb
152
+ - lib/rattler/back_end/parser_generator/eof_generator.rb
233
153
  - lib/rattler/back_end/parser_generator/expr_generator.rb
234
- - lib/rattler/back_end/parser_generator/expr_generator.rbc
235
154
  - lib/rattler/back_end/parser_generator/fail_generator.rb
236
- - lib/rattler/back_end/parser_generator/fail_generator.rbc
237
155
  - lib/rattler/back_end/parser_generator/gen_method_names.rb
238
- - lib/rattler/back_end/parser_generator/gen_method_names.rbc
156
+ - lib/rattler/back_end/parser_generator/general_list_generator.rb
157
+ - lib/rattler/back_end/parser_generator/general_repeat_generator.rb
239
158
  - lib/rattler/back_end/parser_generator/group_match.rb
240
- - lib/rattler/back_end/parser_generator/group_match.rbc
241
159
  - lib/rattler/back_end/parser_generator/group_match_generator.rb
242
- - lib/rattler/back_end/parser_generator/group_match_generator.rbc
243
160
  - lib/rattler/back_end/parser_generator/label_generator.rb
244
- - lib/rattler/back_end/parser_generator/label_generator.rbc
245
- - lib/rattler/back_end/parser_generator/list1_generator.rb
246
- - lib/rattler/back_end/parser_generator/list1_generator.rbc
247
- - lib/rattler/back_end/parser_generator/list_generating.rb
248
- - lib/rattler/back_end/parser_generator/list_generating.rbc
161
+ - lib/rattler/back_end/parser_generator/list0_generating.rb
162
+ - lib/rattler/back_end/parser_generator/list1_generating.rb
249
163
  - lib/rattler/back_end/parser_generator/list_generator.rb
250
- - lib/rattler/back_end/parser_generator/list_generator.rbc
251
164
  - lib/rattler/back_end/parser_generator/match_generator.rb
252
- - lib/rattler/back_end/parser_generator/match_generator.rbc
253
165
  - lib/rattler/back_end/parser_generator/nested.rb
254
- - lib/rattler/back_end/parser_generator/nested.rbc
255
- - lib/rattler/back_end/parser_generator/one_or_more_generator.rb
256
- - lib/rattler/back_end/parser_generator/one_or_more_generator.rbc
257
- - lib/rattler/back_end/parser_generator/optional_generator.rb
258
- - lib/rattler/back_end/parser_generator/optional_generator.rbc
166
+ - lib/rattler/back_end/parser_generator/one_or_more_generating.rb
167
+ - lib/rattler/back_end/parser_generator/optional_generating.rb
259
168
  - lib/rattler/back_end/parser_generator/predicate_propogating.rb
260
- - lib/rattler/back_end/parser_generator/predicate_propogating.rbc
261
- - lib/rattler/back_end/parser_generator/repeat_generating.rb
262
- - lib/rattler/back_end/parser_generator/repeat_generating.rbc
169
+ - lib/rattler/back_end/parser_generator/repeat_generator.rb
263
170
  - lib/rattler/back_end/parser_generator/rule_generator.rb
264
- - lib/rattler/back_end/parser_generator/rule_generator.rbc
265
171
  - lib/rattler/back_end/parser_generator/rule_set_generator.rb
266
- - lib/rattler/back_end/parser_generator/rule_set_generator.rbc
267
172
  - lib/rattler/back_end/parser_generator/sequence_generator.rb
268
- - lib/rattler/back_end/parser_generator/sequence_generator.rbc
269
173
  - lib/rattler/back_end/parser_generator/skip_generator.rb
270
- - lib/rattler/back_end/parser_generator/skip_generator.rbc
271
174
  - lib/rattler/back_end/parser_generator/skip_propogating.rb
272
- - lib/rattler/back_end/parser_generator/skip_propogating.rbc
273
175
  - lib/rattler/back_end/parser_generator/sub_generating.rb
274
- - lib/rattler/back_end/parser_generator/sub_generating.rbc
275
176
  - lib/rattler/back_end/parser_generator/token_generator.rb
276
- - lib/rattler/back_end/parser_generator/token_generator.rbc
277
177
  - lib/rattler/back_end/parser_generator/token_propogating.rb
278
- - lib/rattler/back_end/parser_generator/token_propogating.rbc
279
178
  - lib/rattler/back_end/parser_generator/top_level.rb
280
- - lib/rattler/back_end/parser_generator/top_level.rbc
281
- - lib/rattler/back_end/parser_generator/zero_or_more_generator.rb
282
- - lib/rattler/back_end/parser_generator/zero_or_more_generator.rbc
179
+ - lib/rattler/back_end/parser_generator/zero_or_more_generating.rb
283
180
  - lib/rattler/back_end/ruby_generator.rb
284
- - lib/rattler/back_end/ruby_generator.rbc
285
181
  - lib/rattler/grammar.rb
286
- - lib/rattler/grammar.rbc
287
182
  - lib/rattler/grammar/analysis.rb
288
- - lib/rattler/grammar/analysis.rbc
289
183
  - lib/rattler/grammar/grammar.rb
290
- - lib/rattler/grammar/grammar.rbc
291
184
  - lib/rattler/grammar/grammar_dsl.rb
292
- - lib/rattler/grammar/grammar_dsl.rbc
293
185
  - lib/rattler/grammar/grammar_parser.rb
294
- - lib/rattler/grammar/grammar_parser.rbc
295
186
  - lib/rattler/grammar/metagrammar.rb
296
- - lib/rattler/grammar/metagrammar.rbc
297
187
  - lib/rattler/grammar/rattler.rtlr
298
188
  - lib/rattler/parsers.rb
299
- - lib/rattler/parsers.rbc
300
189
  - lib/rattler/parsers/action_code.rb
301
- - lib/rattler/parsers/action_code.rbc
302
190
  - lib/rattler/parsers/apply.rb
303
- - lib/rattler/parsers/apply.rbc
304
191
  - lib/rattler/parsers/assert.rb
305
- - lib/rattler/parsers/assert.rbc
192
+ - lib/rattler/parsers/assert_code.rb
193
+ - lib/rattler/parsers/atomic.rb
306
194
  - lib/rattler/parsers/back_reference.rb
307
- - lib/rattler/parsers/back_reference.rbc
308
195
  - lib/rattler/parsers/choice.rb
309
- - lib/rattler/parsers/choice.rbc
310
196
  - lib/rattler/parsers/combinator_parser.rb
311
- - lib/rattler/parsers/combinator_parser.rbc
312
197
  - lib/rattler/parsers/combining.rb
313
- - lib/rattler/parsers/combining.rbc
314
198
  - lib/rattler/parsers/direct_action.rb
315
- - lib/rattler/parsers/direct_action.rbc
316
199
  - lib/rattler/parsers/disallow.rb
317
- - lib/rattler/parsers/disallow.rbc
200
+ - lib/rattler/parsers/disallow_code.rb
318
201
  - lib/rattler/parsers/dispatch_action.rb
319
- - lib/rattler/parsers/dispatch_action.rbc
202
+ - lib/rattler/parsers/e_symbol.rb
203
+ - lib/rattler/parsers/effect_code.rb
320
204
  - lib/rattler/parsers/eof.rb
321
- - lib/rattler/parsers/eof.rbc
322
205
  - lib/rattler/parsers/fail.rb
323
- - lib/rattler/parsers/fail.rbc
324
206
  - lib/rattler/parsers/label.rb
325
- - lib/rattler/parsers/label.rbc
326
- - lib/rattler/parsers/list.rbc
327
- - lib/rattler/parsers/list0.rb
328
- - lib/rattler/parsers/list0.rbc
329
- - lib/rattler/parsers/list1.rb
330
- - lib/rattler/parsers/list1.rbc
331
207
  - lib/rattler/parsers/list_parser.rb
332
- - lib/rattler/parsers/list_parser.rbc
333
208
  - lib/rattler/parsers/match.rb
334
- - lib/rattler/parsers/match.rbc
335
209
  - lib/rattler/parsers/node_code.rb
336
- - lib/rattler/parsers/node_code.rbc
337
- - lib/rattler/parsers/one_or_more.rb
338
- - lib/rattler/parsers/one_or_more.rbc
339
- - lib/rattler/parsers/optional.rb
340
- - lib/rattler/parsers/optional.rbc
341
210
  - lib/rattler/parsers/parser.rb
342
- - lib/rattler/parsers/parser.rbc
343
211
  - lib/rattler/parsers/parser_dsl.rb
344
- - lib/rattler/parsers/parser_dsl.rbc
345
212
  - lib/rattler/parsers/predicate.rb
346
- - lib/rattler/parsers/predicate.rbc
213
+ - lib/rattler/parsers/repeat.rb
347
214
  - lib/rattler/parsers/rule.rb
348
- - lib/rattler/parsers/rule.rbc
349
215
  - lib/rattler/parsers/rule_set.rb
350
- - lib/rattler/parsers/rule_set.rbc
216
+ - lib/rattler/parsers/semantic_assert.rb
217
+ - lib/rattler/parsers/semantic_disallow.rb
351
218
  - lib/rattler/parsers/sequence.rb
352
- - lib/rattler/parsers/sequence.rbc
219
+ - lib/rattler/parsers/side_effect.rb
353
220
  - lib/rattler/parsers/skip.rb
354
- - lib/rattler/parsers/skip.rbc
355
221
  - lib/rattler/parsers/token.rb
356
- - lib/rattler/parsers/token.rbc
357
- - lib/rattler/parsers/zero_or_more.rb
358
- - lib/rattler/parsers/zero_or_more.rbc
359
222
  - lib/rattler/runner.rb
360
- - lib/rattler/runner.rbc
361
223
  - lib/rattler/runtime.rb
362
- - lib/rattler/runtime.rbc
363
224
  - lib/rattler/runtime/extended_packrat_parser.rb
364
- - lib/rattler/runtime/extended_packrat_parser.rbc
365
225
  - lib/rattler/runtime/packrat_parser.rb
366
- - lib/rattler/runtime/packrat_parser.rbc
367
226
  - lib/rattler/runtime/parse_failure.rb
368
- - lib/rattler/runtime/parse_failure.rbc
369
227
  - lib/rattler/runtime/parse_node.rb
370
- - lib/rattler/runtime/parse_node.rbc
371
228
  - lib/rattler/runtime/parser.rb
372
- - lib/rattler/runtime/parser.rbc
373
229
  - lib/rattler/runtime/parser_helper.rb
374
- - lib/rattler/runtime/parser_helper.rbc
375
230
  - lib/rattler/runtime/recursive_descent_parser.rb
376
- - lib/rattler/runtime/recursive_descent_parser.rbc
377
231
  - lib/rattler/runtime/syntax_error.rb
378
232
  - lib/rattler/util.rb
379
- - lib/rattler/util.rbc
380
233
  - lib/rattler/util/graphviz.rb
381
- - lib/rattler/util/graphviz.rbc
382
234
  - lib/rattler/util/graphviz/digraph_builder.rb
383
235
  - lib/rattler/util/graphviz/node_builder.rb
384
- - lib/rattler/util/graphviz/node_builder.rbc
385
236
  - lib/rattler/util/line_counter.rb
386
- - lib/rattler/util/line_counter.rbc
387
237
  - lib/rattler/util/node.rb
388
- - lib/rattler/util/node.rbc
389
238
  - lib/rattler/util/parser_spec_helper.rb
390
- - lib/rattler/util/parser_spec_helper.rbc
391
239
  - LICENSE.txt
392
240
  - README.rdoc
393
241
  - features/command_line/dest_option.feature
@@ -398,20 +246,25 @@ files:
398
246
  - features/grammar/back_reference.feature
399
247
  - features/grammar/character_class.feature
400
248
  - features/grammar/comments.feature
249
+ - features/grammar/e_symbol.feature
401
250
  - features/grammar/eof.feature
402
251
  - features/grammar/fail.feature
403
252
  - features/grammar/labels.feature
404
253
  - features/grammar/list_matching.feature
405
254
  - features/grammar/literal.feature
406
255
  - features/grammar/negative_lookahead.feature
256
+ - features/grammar/negative_semantic_predicate.feature
407
257
  - features/grammar/node_action.feature
408
258
  - features/grammar/nonterminal.feature
409
259
  - features/grammar/one_or_more.feature
410
260
  - features/grammar/optional.feature
411
261
  - features/grammar/ordered_choice.feature
412
262
  - features/grammar/positive_lookahead.feature
263
+ - features/grammar/positive_semantic_predicate.feature
413
264
  - features/grammar/posix_class.feature
265
+ - features/grammar/repeat.feature
414
266
  - features/grammar/sequence.feature
267
+ - features/grammar/side_effect.feature
415
268
  - features/grammar/skip_operator.feature
416
269
  - features/grammar/start_rule.feature
417
270
  - features/grammar/symantic_action.feature
@@ -420,211 +273,134 @@ files:
420
273
  - features/grammar/word_literal.feature
421
274
  - features/grammar/zero_or_more.feature
422
275
  - features/step_definitions/cli_steps.rb
423
- - features/step_definitions/cli_steps.rbc
424
276
  - features/step_definitions/grammar_steps.rb
425
- - features/step_definitions/grammar_steps.rbc
426
277
  - features/support/env.rb
427
- - features/support/env.rbc
278
+ - spec/rattler/back_end/assert_compiler_examples.rb
428
279
  - spec/rattler/back_end/compiler_spec.rb
429
- - spec/rattler/back_end/compiler_spec.rbc
280
+ - spec/rattler/back_end/direct_action_compiler_examples.rb
281
+ - spec/rattler/back_end/disallow_compiler_examples.rb
282
+ - spec/rattler/back_end/dispatch_action_compiler_examples.rb
430
283
  - spec/rattler/back_end/optimizer/flatten_choice_spec.rb
431
- - spec/rattler/back_end/optimizer/flatten_choice_spec.rbc
432
284
  - spec/rattler/back_end/optimizer/flatten_sequence_spec.rb
433
- - spec/rattler/back_end/optimizer/flatten_sequence_spec.rbc
434
285
  - spec/rattler/back_end/optimizer/inline_regular_rules_spec.rb
435
- - spec/rattler/back_end/optimizer/inline_regular_rules_spec.rbc
436
286
  - spec/rattler/back_end/optimizer/join_match_capturing_sequence_spec.rb
437
- - spec/rattler/back_end/optimizer/join_match_capturing_sequence_spec.rbc
438
287
  - spec/rattler/back_end/optimizer/join_match_choice_spec.rb
439
- - spec/rattler/back_end/optimizer/join_match_choice_spec.rbc
440
288
  - spec/rattler/back_end/optimizer/join_match_matching_sequence_spec.rb
441
- - spec/rattler/back_end/optimizer/join_match_matching_sequence_spec.rbc
442
289
  - spec/rattler/back_end/optimizer/join_predicate_bare_match_spec.rb
443
- - spec/rattler/back_end/optimizer/join_predicate_bare_match_spec.rbc
444
290
  - spec/rattler/back_end/optimizer/join_predicate_nested_match_spec.rb
445
- - spec/rattler/back_end/optimizer/join_predicate_nested_match_spec.rbc
446
291
  - spec/rattler/back_end/optimizer/join_predicate_or_bare_match_spec.rb
447
- - spec/rattler/back_end/optimizer/join_predicate_or_bare_match_spec.rbc
448
292
  - spec/rattler/back_end/optimizer/join_predicate_or_nested_match_spec.rb
449
- - spec/rattler/back_end/optimizer/join_predicate_or_nested_match_spec.rbc
450
293
  - spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rb
451
- - spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rbc
452
294
  - spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rb
453
- - spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rbc
454
295
  - spec/rattler/back_end/optimizer/simplify_token_match_spec.rb
455
- - spec/rattler/back_end/optimizer/simplify_token_match_spec.rbc
456
296
  - spec/rattler/back_end/optimizer_spec.rb
457
- - spec/rattler/back_end/optimizer_spec.rbc
458
297
  - spec/rattler/back_end/parser_generator/apply_generator_spec.rb
459
- - spec/rattler/back_end/parser_generator/apply_generator_spec.rbc
460
298
  - spec/rattler/back_end/parser_generator/assert_generator_spec.rb
461
- - spec/rattler/back_end/parser_generator/assert_generator_spec.rbc
462
299
  - spec/rattler/back_end/parser_generator/back_reference_generator_spec.rb
463
- - spec/rattler/back_end/parser_generator/back_reference_generator_spec.rbc
464
300
  - spec/rattler/back_end/parser_generator/choice_generator_spec.rb
465
- - spec/rattler/back_end/parser_generator/choice_generator_spec.rbc
466
301
  - spec/rattler/back_end/parser_generator/direct_action_generator_spec.rb
467
- - spec/rattler/back_end/parser_generator/direct_action_generator_spec.rbc
468
302
  - spec/rattler/back_end/parser_generator/disallow_generator_spec.rb
469
- - spec/rattler/back_end/parser_generator/disallow_generator_spec.rbc
470
303
  - spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rb
471
- - spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rbc
304
+ - spec/rattler/back_end/parser_generator/e_symbol_generator_spec.rb
305
+ - spec/rattler/back_end/parser_generator/eof_generator_spec.rb
472
306
  - spec/rattler/back_end/parser_generator/fail_generator_spec.rb
473
- - spec/rattler/back_end/parser_generator/fail_generator_spec.rbc
474
307
  - spec/rattler/back_end/parser_generator/group_match_generator_spec.rb
475
- - spec/rattler/back_end/parser_generator/group_match_generator_spec.rbc
476
308
  - spec/rattler/back_end/parser_generator/group_match_spec.rb
477
- - spec/rattler/back_end/parser_generator/group_match_spec.rbc
478
309
  - spec/rattler/back_end/parser_generator/label_generator_spec.rb
479
- - spec/rattler/back_end/parser_generator/label_generator_spec.rbc
480
- - spec/rattler/back_end/parser_generator/list1_generator_spec.rb
481
- - spec/rattler/back_end/parser_generator/list1_generator_spec.rbc
310
+ - spec/rattler/back_end/parser_generator/list0_generator_examples.rb
311
+ - spec/rattler/back_end/parser_generator/list1_generator_examples.rb
482
312
  - spec/rattler/back_end/parser_generator/list_generator_spec.rb
483
- - spec/rattler/back_end/parser_generator/list_generator_spec.rbc
484
313
  - spec/rattler/back_end/parser_generator/match_generator_spec.rb
485
- - spec/rattler/back_end/parser_generator/match_generator_spec.rbc
486
- - spec/rattler/back_end/parser_generator/one_or_more_generator_spec.rb
487
- - spec/rattler/back_end/parser_generator/one_or_more_generator_spec.rbc
488
- - spec/rattler/back_end/parser_generator/optional_generator_spec.rb
489
- - spec/rattler/back_end/parser_generator/optional_generator_spec.rbc
314
+ - spec/rattler/back_end/parser_generator/one_or_more_generator_examples.rb
315
+ - spec/rattler/back_end/parser_generator/optional_generator_examples.rb
316
+ - spec/rattler/back_end/parser_generator/repeat_generator_spec.rb
490
317
  - spec/rattler/back_end/parser_generator/rule_generator_spec.rb
491
- - spec/rattler/back_end/parser_generator/rule_generator_spec.rbc
492
318
  - spec/rattler/back_end/parser_generator/rule_set_generator_spec.rb
493
- - spec/rattler/back_end/parser_generator/rule_set_generator_spec.rbc
494
319
  - spec/rattler/back_end/parser_generator/sequence_generator_spec.rb
495
- - spec/rattler/back_end/parser_generator/sequence_generator_spec.rbc
496
320
  - spec/rattler/back_end/parser_generator/skip_generator_spec.rb
497
- - spec/rattler/back_end/parser_generator/skip_generator_spec.rbc
498
321
  - spec/rattler/back_end/parser_generator/token_generator_spec.rb
499
- - spec/rattler/back_end/parser_generator/token_generator_spec.rbc
500
- - spec/rattler/back_end/parser_generator/zero_or_more_generator_spec.rb
501
- - spec/rattler/back_end/parser_generator/zero_or_more_generator_spec.rbc
322
+ - spec/rattler/back_end/parser_generator/zero_or_more_generator_examples.rb
502
323
  - spec/rattler/back_end/ruby_generator_spec.rb
503
- - spec/rattler/back_end/ruby_generator_spec.rbc
324
+ - spec/rattler/back_end/semantic_assert_compiler_examples.rb
325
+ - spec/rattler/back_end/semantic_disallow_compiler_examples.rb
504
326
  - spec/rattler/back_end/shared_compiler_examples.rb
505
- - spec/rattler/back_end/shared_compiler_examples.rbc
327
+ - spec/rattler/back_end/side_effect_compiler_examples.rb
328
+ - spec/rattler/back_end/skip_compiler_examples.rb
329
+ - spec/rattler/back_end/token_compiler_examples.rb
506
330
  - spec/rattler/grammar/analysis_spec.rb
507
- - spec/rattler/grammar/analysis_spec.rbc
508
331
  - spec/rattler/grammar/grammar_parser_spec.rb
509
- - spec/rattler/grammar/grammar_parser_spec.rbc
510
332
  - spec/rattler/grammar/grammar_spec.rb
511
- - spec/rattler/grammar/grammar_spec.rbc
512
333
  - spec/rattler/parsers/action_code_spec.rb
513
- - spec/rattler/parsers/action_code_spec.rbc
514
334
  - spec/rattler/parsers/apply_spec.rb
515
- - spec/rattler/parsers/apply_spec.rbc
516
335
  - spec/rattler/parsers/assert_spec.rb
517
- - spec/rattler/parsers/assert_spec.rbc
518
336
  - spec/rattler/parsers/back_reference_spec.rb
519
- - spec/rattler/parsers/back_reference_spec.rbc
520
337
  - spec/rattler/parsers/choice_spec.rb
521
- - spec/rattler/parsers/choice_spec.rbc
522
338
  - spec/rattler/parsers/combinator_parser_spec.rb
523
- - spec/rattler/parsers/combinator_parser_spec.rbc
524
339
  - spec/rattler/parsers/direct_action_spec.rb
525
- - spec/rattler/parsers/direct_action_spec.rbc
526
340
  - spec/rattler/parsers/disallow_spec.rb
527
- - spec/rattler/parsers/disallow_spec.rbc
528
341
  - spec/rattler/parsers/dispatch_action_spec.rb
529
- - spec/rattler/parsers/dispatch_action_spec.rbc
342
+ - spec/rattler/parsers/e_symbol_spec.rb
530
343
  - spec/rattler/parsers/eof_spec.rb
531
- - spec/rattler/parsers/eof_spec.rbc
532
344
  - spec/rattler/parsers/fail_spec.rb
533
- - spec/rattler/parsers/fail_spec.rbc
534
345
  - spec/rattler/parsers/label_spec.rb
535
- - spec/rattler/parsers/label_spec.rbc
536
- - spec/rattler/parsers/list0_spec.rb
537
- - spec/rattler/parsers/list0_spec.rbc
538
- - spec/rattler/parsers/list1_spec.rb
539
- - spec/rattler/parsers/list1_spec.rbc
540
- - spec/rattler/parsers/list_spec.rbc
346
+ - spec/rattler/parsers/list_parser_spec.rb
541
347
  - spec/rattler/parsers/match_spec.rb
542
- - spec/rattler/parsers/match_spec.rbc
543
348
  - spec/rattler/parsers/node_code_spec.rb
544
- - spec/rattler/parsers/node_code_spec.rbc
545
- - spec/rattler/parsers/one_or_more_spec.rb
546
- - spec/rattler/parsers/one_or_more_spec.rbc
547
- - spec/rattler/parsers/optional_spec.rb
548
- - spec/rattler/parsers/optional_spec.rbc
549
349
  - spec/rattler/parsers/parser_dsl_spec.rb
550
- - spec/rattler/parsers/parser_dsl_spec.rbc
350
+ - spec/rattler/parsers/repeat_spec.rb
551
351
  - spec/rattler/parsers/rule_set_spec.rb
552
- - spec/rattler/parsers/rule_set_spec.rbc
352
+ - spec/rattler/parsers/semantic_assert_spec.rb
353
+ - spec/rattler/parsers/semantic_disallow_spec.rb
553
354
  - spec/rattler/parsers/sequence_spec.rb
554
- - spec/rattler/parsers/sequence_spec.rbc
355
+ - spec/rattler/parsers/side_effect_spec.rb
555
356
  - spec/rattler/parsers/skip_spec.rb
556
- - spec/rattler/parsers/skip_spec.rbc
557
357
  - spec/rattler/parsers/token_spec.rb
558
- - spec/rattler/parsers/token_spec.rbc
559
- - spec/rattler/parsers/zero_or_more_spec.rb
560
- - spec/rattler/parsers/zero_or_more_spec.rbc
561
358
  - spec/rattler/runtime/extended_packrat_parser_spec.rb
562
- - spec/rattler/runtime/extended_packrat_parser_spec.rbc
563
359
  - spec/rattler/runtime/packrat_parser_spec.rb
564
- - spec/rattler/runtime/packrat_parser_spec.rbc
565
360
  - spec/rattler/runtime/parse_failure_spec.rb
566
- - spec/rattler/runtime/parse_failure_spec.rbc
567
361
  - spec/rattler/runtime/parse_node_spec.rb
568
- - spec/rattler/runtime/parse_node_spec.rbc
569
362
  - spec/rattler/runtime/parser_spec.rb
570
- - spec/rattler/runtime/parser_spec.rbc
571
363
  - spec/rattler/runtime/recursive_descent_parser_spec.rb
572
- - spec/rattler/runtime/recursive_descent_parser_spec.rbc
573
364
  - spec/rattler/runtime/shared_parser_examples.rb
574
- - spec/rattler/runtime/shared_parser_examples.rbc
575
365
  - spec/rattler/util/graphviz/node_builder_spec.rb
576
- - spec/rattler/util/graphviz/node_builder_spec.rbc
577
366
  - spec/rattler/util/line_counter_spec.rb
578
- - spec/rattler/util/line_counter_spec.rbc
579
367
  - spec/rattler/util/node_spec.rb
580
- - spec/rattler/util/node_spec.rbc
581
368
  - spec/rattler_spec.rb
582
- - spec/rattler_spec.rbc
583
369
  - spec/spec_helper.rb
584
- - spec/spec_helper.rbc
585
370
  - spec/support/combinator_parser_spec_helper.rb
586
- - spec/support/combinator_parser_spec_helper.rbc
587
371
  - spec/support/compiler_spec_helper.rb
588
- - spec/support/compiler_spec_helper.rbc
589
372
  - spec/support/parser_generator_spec_helper.rb
590
- - spec/support/parser_generator_spec_helper.rbc
591
373
  - spec/support/runtime_parser_spec_helper.rb
592
- - spec/support/runtime_parser_spec_helper.rbc
593
374
  has_rdoc: true
594
375
  homepage: http://github.com/jarhart/rattler
595
- licenses:
376
+ licenses:
596
377
  - MIT
597
378
  post_install_message:
598
379
  rdoc_options: []
599
-
600
- require_paths:
380
+ require_paths:
601
381
  - lib
602
- required_ruby_version: !ruby/object:Gem::Requirement
382
+ required_ruby_version: !ruby/object:Gem::Requirement
603
383
  none: false
604
- requirements:
605
- - - ">="
606
- - !ruby/object:Gem::Version
607
- hash: 3
608
- segments:
384
+ requirements:
385
+ - - ! '>='
386
+ - !ruby/object:Gem::Version
387
+ version: '0'
388
+ segments:
609
389
  - 0
610
- version: "0"
611
- required_rubygems_version: !ruby/object:Gem::Requirement
390
+ hash: -304185397942742836
391
+ required_rubygems_version: !ruby/object:Gem::Requirement
612
392
  none: false
613
- requirements:
614
- - - ">="
615
- - !ruby/object:Gem::Version
616
- hash: 3
617
- segments:
618
- - 0
619
- version: "0"
393
+ requirements:
394
+ - - ! '>='
395
+ - !ruby/object:Gem::Version
396
+ version: '0'
620
397
  requirements: []
621
-
622
398
  rubyforge_project:
623
- rubygems_version: 1.5.2
399
+ rubygems_version: 1.6.2
624
400
  signing_key:
625
401
  specification_version: 3
626
402
  summary: Ruby Tool for Language Recognition
627
- test_files:
403
+ test_files:
628
404
  - features/command_line/dest_option.feature
629
405
  - features/command_line/lib_option.feature
630
406
  - features/command_line/output_option.feature
@@ -633,20 +409,25 @@ test_files:
633
409
  - features/grammar/back_reference.feature
634
410
  - features/grammar/character_class.feature
635
411
  - features/grammar/comments.feature
412
+ - features/grammar/e_symbol.feature
636
413
  - features/grammar/eof.feature
637
414
  - features/grammar/fail.feature
638
415
  - features/grammar/labels.feature
639
416
  - features/grammar/list_matching.feature
640
417
  - features/grammar/literal.feature
641
418
  - features/grammar/negative_lookahead.feature
419
+ - features/grammar/negative_semantic_predicate.feature
642
420
  - features/grammar/node_action.feature
643
421
  - features/grammar/nonterminal.feature
644
422
  - features/grammar/one_or_more.feature
645
423
  - features/grammar/optional.feature
646
424
  - features/grammar/ordered_choice.feature
647
425
  - features/grammar/positive_lookahead.feature
426
+ - features/grammar/positive_semantic_predicate.feature
648
427
  - features/grammar/posix_class.feature
428
+ - features/grammar/repeat.feature
649
429
  - features/grammar/sequence.feature
430
+ - features/grammar/side_effect.feature
650
431
  - features/grammar/skip_operator.feature
651
432
  - features/grammar/start_rule.feature
652
433
  - features/grammar/symantic_action.feature
@@ -655,173 +436,101 @@ test_files:
655
436
  - features/grammar/word_literal.feature
656
437
  - features/grammar/zero_or_more.feature
657
438
  - features/step_definitions/cli_steps.rb
658
- - features/step_definitions/cli_steps.rbc
659
439
  - features/step_definitions/grammar_steps.rb
660
- - features/step_definitions/grammar_steps.rbc
661
440
  - features/support/env.rb
662
- - features/support/env.rbc
441
+ - spec/rattler/back_end/assert_compiler_examples.rb
663
442
  - spec/rattler/back_end/compiler_spec.rb
664
- - spec/rattler/back_end/compiler_spec.rbc
443
+ - spec/rattler/back_end/direct_action_compiler_examples.rb
444
+ - spec/rattler/back_end/disallow_compiler_examples.rb
445
+ - spec/rattler/back_end/dispatch_action_compiler_examples.rb
665
446
  - spec/rattler/back_end/optimizer/flatten_choice_spec.rb
666
- - spec/rattler/back_end/optimizer/flatten_choice_spec.rbc
667
447
  - spec/rattler/back_end/optimizer/flatten_sequence_spec.rb
668
- - spec/rattler/back_end/optimizer/flatten_sequence_spec.rbc
669
448
  - spec/rattler/back_end/optimizer/inline_regular_rules_spec.rb
670
- - spec/rattler/back_end/optimizer/inline_regular_rules_spec.rbc
671
449
  - spec/rattler/back_end/optimizer/join_match_capturing_sequence_spec.rb
672
- - spec/rattler/back_end/optimizer/join_match_capturing_sequence_spec.rbc
673
450
  - spec/rattler/back_end/optimizer/join_match_choice_spec.rb
674
- - spec/rattler/back_end/optimizer/join_match_choice_spec.rbc
675
451
  - spec/rattler/back_end/optimizer/join_match_matching_sequence_spec.rb
676
- - spec/rattler/back_end/optimizer/join_match_matching_sequence_spec.rbc
677
452
  - spec/rattler/back_end/optimizer/join_predicate_bare_match_spec.rb
678
- - spec/rattler/back_end/optimizer/join_predicate_bare_match_spec.rbc
679
453
  - spec/rattler/back_end/optimizer/join_predicate_nested_match_spec.rb
680
- - spec/rattler/back_end/optimizer/join_predicate_nested_match_spec.rbc
681
454
  - spec/rattler/back_end/optimizer/join_predicate_or_bare_match_spec.rb
682
- - spec/rattler/back_end/optimizer/join_predicate_or_bare_match_spec.rbc
683
455
  - spec/rattler/back_end/optimizer/join_predicate_or_nested_match_spec.rb
684
- - spec/rattler/back_end/optimizer/join_predicate_or_nested_match_spec.rbc
685
456
  - spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rb
686
- - spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rbc
687
457
  - spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rb
688
- - spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rbc
689
458
  - spec/rattler/back_end/optimizer/simplify_token_match_spec.rb
690
- - spec/rattler/back_end/optimizer/simplify_token_match_spec.rbc
691
459
  - spec/rattler/back_end/optimizer_spec.rb
692
- - spec/rattler/back_end/optimizer_spec.rbc
693
460
  - spec/rattler/back_end/parser_generator/apply_generator_spec.rb
694
- - spec/rattler/back_end/parser_generator/apply_generator_spec.rbc
695
461
  - spec/rattler/back_end/parser_generator/assert_generator_spec.rb
696
- - spec/rattler/back_end/parser_generator/assert_generator_spec.rbc
697
462
  - spec/rattler/back_end/parser_generator/back_reference_generator_spec.rb
698
- - spec/rattler/back_end/parser_generator/back_reference_generator_spec.rbc
699
463
  - spec/rattler/back_end/parser_generator/choice_generator_spec.rb
700
- - spec/rattler/back_end/parser_generator/choice_generator_spec.rbc
701
464
  - spec/rattler/back_end/parser_generator/direct_action_generator_spec.rb
702
- - spec/rattler/back_end/parser_generator/direct_action_generator_spec.rbc
703
465
  - spec/rattler/back_end/parser_generator/disallow_generator_spec.rb
704
- - spec/rattler/back_end/parser_generator/disallow_generator_spec.rbc
705
466
  - spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rb
706
- - spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rbc
467
+ - spec/rattler/back_end/parser_generator/e_symbol_generator_spec.rb
468
+ - spec/rattler/back_end/parser_generator/eof_generator_spec.rb
707
469
  - spec/rattler/back_end/parser_generator/fail_generator_spec.rb
708
- - spec/rattler/back_end/parser_generator/fail_generator_spec.rbc
709
470
  - spec/rattler/back_end/parser_generator/group_match_generator_spec.rb
710
- - spec/rattler/back_end/parser_generator/group_match_generator_spec.rbc
711
471
  - spec/rattler/back_end/parser_generator/group_match_spec.rb
712
- - spec/rattler/back_end/parser_generator/group_match_spec.rbc
713
472
  - spec/rattler/back_end/parser_generator/label_generator_spec.rb
714
- - spec/rattler/back_end/parser_generator/label_generator_spec.rbc
715
- - spec/rattler/back_end/parser_generator/list1_generator_spec.rb
716
- - spec/rattler/back_end/parser_generator/list1_generator_spec.rbc
473
+ - spec/rattler/back_end/parser_generator/list0_generator_examples.rb
474
+ - spec/rattler/back_end/parser_generator/list1_generator_examples.rb
717
475
  - spec/rattler/back_end/parser_generator/list_generator_spec.rb
718
- - spec/rattler/back_end/parser_generator/list_generator_spec.rbc
719
476
  - spec/rattler/back_end/parser_generator/match_generator_spec.rb
720
- - spec/rattler/back_end/parser_generator/match_generator_spec.rbc
721
- - spec/rattler/back_end/parser_generator/one_or_more_generator_spec.rb
722
- - spec/rattler/back_end/parser_generator/one_or_more_generator_spec.rbc
723
- - spec/rattler/back_end/parser_generator/optional_generator_spec.rb
724
- - spec/rattler/back_end/parser_generator/optional_generator_spec.rbc
477
+ - spec/rattler/back_end/parser_generator/one_or_more_generator_examples.rb
478
+ - spec/rattler/back_end/parser_generator/optional_generator_examples.rb
479
+ - spec/rattler/back_end/parser_generator/repeat_generator_spec.rb
725
480
  - spec/rattler/back_end/parser_generator/rule_generator_spec.rb
726
- - spec/rattler/back_end/parser_generator/rule_generator_spec.rbc
727
481
  - spec/rattler/back_end/parser_generator/rule_set_generator_spec.rb
728
- - spec/rattler/back_end/parser_generator/rule_set_generator_spec.rbc
729
482
  - spec/rattler/back_end/parser_generator/sequence_generator_spec.rb
730
- - spec/rattler/back_end/parser_generator/sequence_generator_spec.rbc
731
483
  - spec/rattler/back_end/parser_generator/skip_generator_spec.rb
732
- - spec/rattler/back_end/parser_generator/skip_generator_spec.rbc
733
484
  - spec/rattler/back_end/parser_generator/token_generator_spec.rb
734
- - spec/rattler/back_end/parser_generator/token_generator_spec.rbc
735
- - spec/rattler/back_end/parser_generator/zero_or_more_generator_spec.rb
736
- - spec/rattler/back_end/parser_generator/zero_or_more_generator_spec.rbc
485
+ - spec/rattler/back_end/parser_generator/zero_or_more_generator_examples.rb
737
486
  - spec/rattler/back_end/ruby_generator_spec.rb
738
- - spec/rattler/back_end/ruby_generator_spec.rbc
487
+ - spec/rattler/back_end/semantic_assert_compiler_examples.rb
488
+ - spec/rattler/back_end/semantic_disallow_compiler_examples.rb
739
489
  - spec/rattler/back_end/shared_compiler_examples.rb
740
- - spec/rattler/back_end/shared_compiler_examples.rbc
490
+ - spec/rattler/back_end/side_effect_compiler_examples.rb
491
+ - spec/rattler/back_end/skip_compiler_examples.rb
492
+ - spec/rattler/back_end/token_compiler_examples.rb
741
493
  - spec/rattler/grammar/analysis_spec.rb
742
- - spec/rattler/grammar/analysis_spec.rbc
743
494
  - spec/rattler/grammar/grammar_parser_spec.rb
744
- - spec/rattler/grammar/grammar_parser_spec.rbc
745
495
  - spec/rattler/grammar/grammar_spec.rb
746
- - spec/rattler/grammar/grammar_spec.rbc
747
496
  - spec/rattler/parsers/action_code_spec.rb
748
- - spec/rattler/parsers/action_code_spec.rbc
749
497
  - spec/rattler/parsers/apply_spec.rb
750
- - spec/rattler/parsers/apply_spec.rbc
751
498
  - spec/rattler/parsers/assert_spec.rb
752
- - spec/rattler/parsers/assert_spec.rbc
753
499
  - spec/rattler/parsers/back_reference_spec.rb
754
- - spec/rattler/parsers/back_reference_spec.rbc
755
500
  - spec/rattler/parsers/choice_spec.rb
756
- - spec/rattler/parsers/choice_spec.rbc
757
501
  - spec/rattler/parsers/combinator_parser_spec.rb
758
- - spec/rattler/parsers/combinator_parser_spec.rbc
759
502
  - spec/rattler/parsers/direct_action_spec.rb
760
- - spec/rattler/parsers/direct_action_spec.rbc
761
503
  - spec/rattler/parsers/disallow_spec.rb
762
- - spec/rattler/parsers/disallow_spec.rbc
763
504
  - spec/rattler/parsers/dispatch_action_spec.rb
764
- - spec/rattler/parsers/dispatch_action_spec.rbc
505
+ - spec/rattler/parsers/e_symbol_spec.rb
765
506
  - spec/rattler/parsers/eof_spec.rb
766
- - spec/rattler/parsers/eof_spec.rbc
767
507
  - spec/rattler/parsers/fail_spec.rb
768
- - spec/rattler/parsers/fail_spec.rbc
769
508
  - spec/rattler/parsers/label_spec.rb
770
- - spec/rattler/parsers/label_spec.rbc
771
- - spec/rattler/parsers/list0_spec.rb
772
- - spec/rattler/parsers/list0_spec.rbc
773
- - spec/rattler/parsers/list1_spec.rb
774
- - spec/rattler/parsers/list1_spec.rbc
775
- - spec/rattler/parsers/list_spec.rbc
509
+ - spec/rattler/parsers/list_parser_spec.rb
776
510
  - spec/rattler/parsers/match_spec.rb
777
- - spec/rattler/parsers/match_spec.rbc
778
511
  - spec/rattler/parsers/node_code_spec.rb
779
- - spec/rattler/parsers/node_code_spec.rbc
780
- - spec/rattler/parsers/one_or_more_spec.rb
781
- - spec/rattler/parsers/one_or_more_spec.rbc
782
- - spec/rattler/parsers/optional_spec.rb
783
- - spec/rattler/parsers/optional_spec.rbc
784
512
  - spec/rattler/parsers/parser_dsl_spec.rb
785
- - spec/rattler/parsers/parser_dsl_spec.rbc
513
+ - spec/rattler/parsers/repeat_spec.rb
786
514
  - spec/rattler/parsers/rule_set_spec.rb
787
- - spec/rattler/parsers/rule_set_spec.rbc
515
+ - spec/rattler/parsers/semantic_assert_spec.rb
516
+ - spec/rattler/parsers/semantic_disallow_spec.rb
788
517
  - spec/rattler/parsers/sequence_spec.rb
789
- - spec/rattler/parsers/sequence_spec.rbc
518
+ - spec/rattler/parsers/side_effect_spec.rb
790
519
  - spec/rattler/parsers/skip_spec.rb
791
- - spec/rattler/parsers/skip_spec.rbc
792
520
  - spec/rattler/parsers/token_spec.rb
793
- - spec/rattler/parsers/token_spec.rbc
794
- - spec/rattler/parsers/zero_or_more_spec.rb
795
- - spec/rattler/parsers/zero_or_more_spec.rbc
796
521
  - spec/rattler/runtime/extended_packrat_parser_spec.rb
797
- - spec/rattler/runtime/extended_packrat_parser_spec.rbc
798
522
  - spec/rattler/runtime/packrat_parser_spec.rb
799
- - spec/rattler/runtime/packrat_parser_spec.rbc
800
523
  - spec/rattler/runtime/parse_failure_spec.rb
801
- - spec/rattler/runtime/parse_failure_spec.rbc
802
524
  - spec/rattler/runtime/parse_node_spec.rb
803
- - spec/rattler/runtime/parse_node_spec.rbc
804
525
  - spec/rattler/runtime/parser_spec.rb
805
- - spec/rattler/runtime/parser_spec.rbc
806
526
  - spec/rattler/runtime/recursive_descent_parser_spec.rb
807
- - spec/rattler/runtime/recursive_descent_parser_spec.rbc
808
527
  - spec/rattler/runtime/shared_parser_examples.rb
809
- - spec/rattler/runtime/shared_parser_examples.rbc
810
528
  - spec/rattler/util/graphviz/node_builder_spec.rb
811
- - spec/rattler/util/graphviz/node_builder_spec.rbc
812
529
  - spec/rattler/util/line_counter_spec.rb
813
- - spec/rattler/util/line_counter_spec.rbc
814
530
  - spec/rattler/util/node_spec.rb
815
- - spec/rattler/util/node_spec.rbc
816
531
  - spec/rattler_spec.rb
817
- - spec/rattler_spec.rbc
818
532
  - spec/spec_helper.rb
819
- - spec/spec_helper.rbc
820
533
  - spec/support/combinator_parser_spec_helper.rb
821
- - spec/support/combinator_parser_spec_helper.rbc
822
534
  - spec/support/compiler_spec_helper.rb
823
- - spec/support/compiler_spec_helper.rbc
824
535
  - spec/support/parser_generator_spec_helper.rb
825
- - spec/support/parser_generator_spec_helper.rbc
826
536
  - spec/support/runtime_parser_spec_helper.rb
827
- - spec/support/runtime_parser_spec_helper.rbc