rattler 0.5.0 → 0.6.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 (329) hide show
  1. data/README.rdoc +3 -175
  2. data/features/README.markdown +27 -0
  3. data/features/Tutorial.md +224 -0
  4. data/features/command_line/output_option.feature +2 -1
  5. data/features/command_line/{parser_generator.feature → rtlr.feature} +43 -15
  6. data/features/error_reporting/automatic_error_messages.feature +40 -0
  7. data/features/error_reporting/custom_error_messages.feature +28 -0
  8. data/features/examples/json_parser.markdown +88 -0
  9. data/features/{grammar → extended_matching_syntax}/back_reference.feature +5 -3
  10. data/features/{grammar → extended_matching_syntax}/e_symbol.feature +2 -2
  11. data/features/{grammar → extended_matching_syntax}/eof.feature +4 -3
  12. data/features/{grammar → extended_matching_syntax}/fail.feature +8 -6
  13. data/features/extended_matching_syntax/fragments.feature +29 -0
  14. data/features/extended_matching_syntax/include.feature +42 -0
  15. data/features/{grammar → extended_matching_syntax}/list_matching.feature +7 -6
  16. data/features/extended_matching_syntax/posix_class.feature +127 -0
  17. data/features/{grammar → extended_matching_syntax}/repeat.feature +29 -3
  18. data/features/{grammar → extended_matching_syntax}/skip_operator.feature +2 -1
  19. data/features/extended_matching_syntax/super.feature +24 -0
  20. data/features/{grammar → extended_matching_syntax}/token.feature +6 -5
  21. data/features/{grammar → extended_matching_syntax}/whitespace.feature +7 -6
  22. data/features/{grammar → extended_matching_syntax}/word_literal.feature +10 -6
  23. data/features/grammar_heading/explicit_start_rule.feature +20 -0
  24. data/features/grammar_heading/grammar_declaration.feature +60 -0
  25. data/features/grammar_heading/include.feature +19 -0
  26. data/features/grammar_heading/require.feature +27 -0
  27. data/features/{grammar → peg_syntax}/any_character.feature +1 -1
  28. data/features/peg_syntax/character_class.feature +25 -0
  29. data/features/{grammar → peg_syntax}/comments.feature +1 -1
  30. data/features/{grammar → peg_syntax}/literal.feature +5 -3
  31. data/features/{grammar → peg_syntax}/negative_lookahead.feature +5 -3
  32. data/features/peg_syntax/nonterminal.feature +46 -0
  33. data/features/peg_syntax/one_or_more.feature +59 -0
  34. data/features/{grammar → peg_syntax}/optional.feature +2 -2
  35. data/features/peg_syntax/ordered_choice.feature +24 -0
  36. data/features/{grammar → peg_syntax}/positive_lookahead.feature +6 -4
  37. data/features/peg_syntax/sequence.feature +23 -0
  38. data/features/{grammar → peg_syntax}/start_rule.feature +1 -1
  39. data/features/peg_syntax/zero_or_more.feature +59 -0
  40. data/features/{grammar → semantics}/labels.feature +0 -0
  41. data/features/{grammar → semantics}/negative_semantic_predicate.feature +30 -9
  42. data/features/{grammar → semantics}/node_action.feature +0 -0
  43. data/features/{grammar → semantics}/positive_semantic_predicate.feature +29 -8
  44. data/features/{grammar/symantic_action.feature → semantics/semantic_action.feature} +2 -2
  45. data/features/semantics/semantic_result.feature +86 -0
  46. data/features/{grammar → semantics}/side_effect.feature +33 -21
  47. data/features/step_definitions/cli_steps.rb +1 -1
  48. data/features/step_definitions/grammar_steps.rb +19 -5
  49. data/features/support/env.rb +5 -0
  50. data/lib/rattler.rb +21 -44
  51. data/lib/rattler/compiler.rb +69 -0
  52. data/lib/rattler/{grammar → compiler}/grammar_parser.rb +58 -24
  53. data/lib/rattler/compiler/metagrammar.rb +1570 -0
  54. data/lib/rattler/compiler/optimizer.rb +77 -0
  55. data/lib/rattler/{back_end → compiler}/optimizer/composite_reducing.rb +2 -2
  56. data/lib/rattler/{back_end → compiler}/optimizer/flatten_choice.rb +3 -12
  57. data/lib/rattler/{back_end → compiler}/optimizer/flatten_sequence.rb +4 -16
  58. data/lib/rattler/{back_end → compiler}/optimizer/flattening.rb +2 -2
  59. data/lib/rattler/compiler/optimizer/inline_regular_rules.rb +24 -0
  60. data/lib/rattler/{back_end → compiler}/optimizer/join_match_capturing_sequence.rb +16 -14
  61. data/lib/rattler/{back_end → compiler}/optimizer/join_match_choice.rb +4 -13
  62. data/lib/rattler/{back_end → compiler}/optimizer/join_match_matching_sequence.rb +4 -13
  63. data/lib/rattler/compiler/optimizer/join_match_sequence.rb +7 -0
  64. data/lib/rattler/{back_end → compiler}/optimizer/join_predicate_bare_match.rb +3 -12
  65. data/lib/rattler/compiler/optimizer/join_predicate_match.rb +7 -0
  66. data/lib/rattler/{back_end → compiler}/optimizer/join_predicate_nested_match.rb +4 -13
  67. data/lib/rattler/{back_end → compiler}/optimizer/join_predicate_or_bare_match.rb +3 -12
  68. data/lib/rattler/compiler/optimizer/join_predicate_or_match.rb +7 -0
  69. data/lib/rattler/{back_end → compiler}/optimizer/join_predicate_or_nested_match.rb +4 -13
  70. data/lib/rattler/{back_end → compiler}/optimizer/match_joining.rb +2 -2
  71. data/lib/rattler/{back_end → compiler}/optimizer/optimization.rb +12 -34
  72. data/lib/rattler/compiler/optimizer/optimization_context.rb +83 -0
  73. data/lib/rattler/{back_end → compiler}/optimizer/optimization_sequence.rb +3 -11
  74. data/lib/rattler/compiler/optimizer/optimizations.rb +27 -0
  75. data/lib/rattler/{back_end → compiler}/optimizer/optimize_children.rb +6 -14
  76. data/lib/rattler/{back_end → compiler}/optimizer/reduce_repeat_match.rb +4 -13
  77. data/lib/rattler/compiler/optimizer/remove_meaningless_wrapper.rb +22 -0
  78. data/lib/rattler/{back_end → compiler}/optimizer/simplify_redundant_repeat.rb +4 -13
  79. data/lib/rattler/{back_end → compiler}/optimizer/simplify_token_match.rb +4 -13
  80. data/lib/rattler/compiler/parser_generator.rb +108 -0
  81. data/lib/rattler/{back_end → compiler}/parser_generator/apply_generator.rb +7 -21
  82. data/lib/rattler/{back_end → compiler}/parser_generator/assert_generator.rb +11 -19
  83. data/lib/rattler/compiler/parser_generator/attributed_sequence_generator.rb +37 -0
  84. data/lib/rattler/{back_end → compiler}/parser_generator/back_reference_generator.rb +10 -10
  85. data/lib/rattler/{back_end → compiler}/parser_generator/choice_generator.rb +10 -22
  86. data/lib/rattler/{back_end → compiler}/parser_generator/delegating_generator.rb +2 -2
  87. data/lib/rattler/{back_end → compiler}/parser_generator/disallow_generator.rb +11 -19
  88. data/lib/rattler/{back_end → compiler}/parser_generator/e_symbol_generator.rb +2 -10
  89. data/lib/rattler/{back_end → compiler}/parser_generator/eof_generator.rb +2 -10
  90. data/lib/rattler/{back_end → compiler}/parser_generator/expr_generator.rb +9 -35
  91. data/lib/rattler/{back_end → compiler}/parser_generator/fail_generator.rb +7 -3
  92. data/lib/rattler/{back_end → compiler}/parser_generator/gen_method_names.rb +3 -5
  93. data/lib/rattler/{back_end → compiler}/parser_generator/general_list_generator.rb +6 -18
  94. data/lib/rattler/{back_end → compiler}/parser_generator/general_repeat_generator.rb +16 -22
  95. data/lib/rattler/{back_end/parser_generator/rule_set_generator.rb → compiler/parser_generator/grammar_generator.rb} +24 -33
  96. data/lib/rattler/compiler/parser_generator/group_match.rb +33 -0
  97. data/lib/rattler/{back_end → compiler}/parser_generator/group_match_generator.rb +4 -17
  98. data/lib/rattler/compiler/parser_generator/label_generator.rb +37 -0
  99. data/lib/rattler/{back_end → compiler}/parser_generator/list0_generating.rb +5 -5
  100. data/lib/rattler/{back_end → compiler}/parser_generator/list1_generating.rb +3 -3
  101. data/lib/rattler/{back_end → compiler}/parser_generator/list_generator.rb +2 -2
  102. data/lib/rattler/{back_end → compiler}/parser_generator/match_generator.rb +10 -10
  103. data/lib/rattler/{back_end → compiler}/parser_generator/nested.rb +2 -2
  104. data/lib/rattler/compiler/parser_generator/node_action_generator.rb +49 -0
  105. data/lib/rattler/{back_end → compiler}/parser_generator/one_or_more_generating.rb +3 -3
  106. data/lib/rattler/{back_end → compiler}/parser_generator/optional_generating.rb +6 -22
  107. data/lib/rattler/compiler/parser_generator/predicate_propogating.rb +24 -0
  108. data/lib/rattler/{back_end → compiler}/parser_generator/repeat_generator.rb +2 -2
  109. data/lib/rattler/compiler/parser_generator/rule_generator.rb +66 -0
  110. data/lib/rattler/compiler/parser_generator/rule_set_generator.rb +33 -0
  111. data/lib/rattler/compiler/parser_generator/semantic_action_generator.rb +58 -0
  112. data/lib/rattler/compiler/parser_generator/sequence_generating.rb +138 -0
  113. data/lib/rattler/compiler/parser_generator/sequence_generator.rb +57 -0
  114. data/lib/rattler/{back_end → compiler}/parser_generator/skip_generator.rb +4 -18
  115. data/lib/rattler/compiler/parser_generator/skip_propogating.rb +16 -0
  116. data/lib/rattler/{back_end → compiler}/parser_generator/sub_generating.rb +19 -11
  117. data/lib/rattler/compiler/parser_generator/super_generator.rb +54 -0
  118. data/lib/rattler/{back_end → compiler}/parser_generator/token_generator.rb +3 -3
  119. data/lib/rattler/compiler/parser_generator/token_propogating.rb +10 -0
  120. data/lib/rattler/{back_end → compiler}/parser_generator/top_level.rb +2 -2
  121. data/lib/rattler/{back_end → compiler}/parser_generator/zero_or_more_generating.rb +5 -5
  122. data/lib/rattler/compiler/rattler.rtlr +201 -0
  123. data/lib/rattler/{back_end → compiler}/ruby_generator.rb +16 -25
  124. data/lib/rattler/parsers.rb +12 -33
  125. data/lib/rattler/parsers/action_code.rb +25 -16
  126. data/lib/rattler/{grammar → parsers}/analysis.rb +32 -11
  127. data/lib/rattler/parsers/apply.rb +10 -19
  128. data/lib/rattler/parsers/assert.rb +4 -14
  129. data/lib/rattler/parsers/atomic.rb +3 -10
  130. data/lib/rattler/parsers/attributed_sequence.rb +50 -0
  131. data/lib/rattler/parsers/back_reference.rb +19 -14
  132. data/lib/rattler/parsers/choice.rb +11 -12
  133. data/lib/rattler/parsers/combinator_parser.rb +15 -7
  134. data/lib/rattler/parsers/combining.rb +15 -9
  135. data/lib/rattler/parsers/disallow.rb +5 -12
  136. data/lib/rattler/parsers/e_symbol.rb +5 -14
  137. data/lib/rattler/parsers/eof.rb +10 -15
  138. data/lib/rattler/parsers/fail.rb +16 -26
  139. data/lib/rattler/{grammar → parsers}/grammar.rb +15 -20
  140. data/lib/rattler/parsers/label.rb +10 -16
  141. data/lib/rattler/parsers/list_parser.rb +14 -14
  142. data/lib/rattler/parsers/match.rb +5 -17
  143. data/lib/rattler/parsers/node_action.rb +72 -0
  144. data/lib/rattler/parsers/node_code.rb +47 -30
  145. data/lib/rattler/parsers/parser.rb +63 -32
  146. data/lib/rattler/parsers/parser_scope.rb +88 -0
  147. data/lib/rattler/parsers/predicate.rb +12 -10
  148. data/lib/rattler/parsers/repeat.rb +15 -8
  149. data/lib/rattler/parsers/rule.rb +8 -23
  150. data/lib/rattler/parsers/rule_set.rb +67 -12
  151. data/lib/rattler/parsers/semantic.rb +36 -0
  152. data/lib/rattler/parsers/semantic_action.rb +39 -0
  153. data/lib/rattler/parsers/sequence.rb +25 -40
  154. data/lib/rattler/parsers/sequencing.rb +40 -0
  155. data/lib/rattler/parsers/skip.rb +11 -12
  156. data/lib/rattler/parsers/super.rb +33 -0
  157. data/lib/rattler/parsers/token.rb +3 -13
  158. data/lib/rattler/rake_task.rb +50 -0
  159. data/lib/rattler/runner.rb +19 -22
  160. data/lib/rattler/runtime.rb +0 -10
  161. data/lib/rattler/runtime/extended_packrat_parser.rb +40 -45
  162. data/lib/rattler/runtime/packrat_parser.rb +17 -31
  163. data/lib/rattler/runtime/parse_failure.rb +16 -26
  164. data/lib/rattler/runtime/parse_node.rb +8 -18
  165. data/lib/rattler/runtime/parser.rb +6 -18
  166. data/lib/rattler/runtime/parser_helper.rb +3 -10
  167. data/lib/rattler/runtime/recursive_descent_parser.rb +26 -23
  168. data/lib/rattler/runtime/syntax_error.rb +0 -10
  169. data/lib/rattler/util.rb +2 -6
  170. data/lib/rattler/util/grammar_cli.rb +19 -0
  171. data/lib/rattler/util/graphviz.rb +6 -17
  172. data/lib/rattler/util/graphviz/digraph_builder.rb +10 -17
  173. data/lib/rattler/util/graphviz/node_builder.rb +45 -31
  174. data/lib/rattler/util/line_counter.rb +11 -20
  175. data/lib/rattler/util/node.rb +52 -30
  176. data/lib/rattler/util/parser_cli.rb +84 -0
  177. data/lib/rattler/util/parser_spec_helper.rb +8 -12
  178. data/spec/rattler/compiler/assert_compiler_examples.rb +284 -0
  179. data/spec/rattler/compiler/attributed_sequence_compiler_examples.rb +154 -0
  180. data/spec/rattler/compiler/disallow_compiler_examples.rb +293 -0
  181. data/spec/rattler/compiler/grammar_parser_spec.rb +700 -0
  182. data/spec/rattler/{back_end → compiler}/optimizer/flatten_choice_spec.rb +1 -1
  183. data/spec/rattler/{back_end → compiler}/optimizer/flatten_sequence_spec.rb +1 -1
  184. data/spec/rattler/compiler/optimizer/inline_regular_rules_spec.rb +50 -0
  185. data/spec/rattler/{back_end → compiler}/optimizer/join_match_capturing_sequence_spec.rb +106 -22
  186. data/spec/rattler/{back_end → compiler}/optimizer/join_match_choice_spec.rb +1 -1
  187. data/spec/rattler/{back_end → compiler}/optimizer/join_match_matching_sequence_spec.rb +1 -1
  188. data/spec/rattler/{back_end → compiler}/optimizer/join_predicate_bare_match_spec.rb +1 -1
  189. data/spec/rattler/{back_end → compiler}/optimizer/join_predicate_nested_match_spec.rb +1 -1
  190. data/spec/rattler/{back_end → compiler}/optimizer/join_predicate_or_bare_match_spec.rb +1 -1
  191. data/spec/rattler/{back_end → compiler}/optimizer/join_predicate_or_nested_match_spec.rb +1 -1
  192. data/spec/rattler/{back_end → compiler}/optimizer/reduce_repeat_match_spec.rb +1 -1
  193. data/spec/rattler/compiler/optimizer/remove_meaningless_wrapper_spec.rb +82 -0
  194. data/spec/rattler/{back_end → compiler}/optimizer/simplify_redundant_repeat_spec.rb +1 -1
  195. data/spec/rattler/{back_end → compiler}/optimizer/simplify_token_match_spec.rb +1 -1
  196. data/spec/rattler/{back_end → compiler}/optimizer_spec.rb +1 -1
  197. data/spec/rattler/{back_end → compiler}/parser_generator/apply_generator_spec.rb +1 -39
  198. data/spec/rattler/{back_end → compiler}/parser_generator/assert_generator_spec.rb +1 -55
  199. data/spec/rattler/compiler/parser_generator/attributed_sequence_generator_spec.rb +699 -0
  200. data/spec/rattler/{back_end → compiler}/parser_generator/back_reference_generator_spec.rb +3 -56
  201. data/spec/rattler/{back_end → compiler}/parser_generator/choice_generator_spec.rb +1 -63
  202. data/spec/rattler/{back_end → compiler}/parser_generator/disallow_generator_spec.rb +1 -55
  203. data/spec/rattler/{back_end → compiler}/parser_generator/e_symbol_generator_spec.rb +1 -39
  204. data/spec/rattler/{back_end → compiler}/parser_generator/eof_generator_spec.rb +1 -39
  205. data/spec/rattler/{back_end → compiler}/parser_generator/fail_generator_spec.rb +94 -23
  206. data/spec/rattler/compiler/parser_generator/grammar_generator_spec.rb +98 -0
  207. data/spec/rattler/compiler/parser_generator/group_match_generator_spec.rb +67 -0
  208. data/spec/rattler/{back_end → compiler}/parser_generator/group_match_spec.rb +1 -1
  209. data/spec/rattler/{back_end → compiler}/parser_generator/label_generator_spec.rb +1 -55
  210. data/spec/rattler/{back_end → compiler}/parser_generator/list0_generator_examples.rb +0 -88
  211. data/spec/rattler/{back_end → compiler}/parser_generator/list1_generator_examples.rb +0 -88
  212. data/spec/rattler/{back_end → compiler}/parser_generator/list_generator_spec.rb +1 -227
  213. data/spec/rattler/{back_end → compiler}/parser_generator/match_generator_spec.rb +1 -55
  214. data/spec/rattler/compiler/parser_generator/node_action_generator_spec.rb +135 -0
  215. data/spec/rattler/{back_end → compiler}/parser_generator/one_or_more_generator_examples.rb +0 -74
  216. data/spec/rattler/{back_end → compiler}/parser_generator/optional_generator_examples.rb +0 -62
  217. data/spec/rattler/{back_end → compiler}/parser_generator/repeat_generator_spec.rb +66 -1
  218. data/spec/rattler/{back_end → compiler}/parser_generator/rule_generator_spec.rb +3 -2
  219. data/spec/rattler/{back_end → compiler}/parser_generator/rule_set_generator_spec.rb +9 -27
  220. data/spec/rattler/compiler/parser_generator/semantic_action_generator_spec.rb +437 -0
  221. data/spec/rattler/{back_end → compiler}/parser_generator/sequence_generator_spec.rb +234 -68
  222. data/spec/rattler/{back_end → compiler}/parser_generator/skip_generator_spec.rb +1 -55
  223. data/spec/rattler/compiler/parser_generator/super_generator_spec.rb +93 -0
  224. data/spec/rattler/{back_end → compiler}/parser_generator/token_generator_spec.rb +1 -55
  225. data/spec/rattler/{back_end → compiler}/parser_generator/zero_or_more_generator_examples.rb +0 -74
  226. data/spec/rattler/{back_end → compiler}/ruby_generator_spec.rb +13 -13
  227. data/spec/rattler/compiler/semantic_action_compiler_examples.rb +57 -0
  228. data/spec/rattler/{back_end → compiler}/shared_compiler_examples.rb +111 -140
  229. data/spec/rattler/{back_end → compiler}/skip_compiler_examples.rb +60 -57
  230. data/spec/rattler/{back_end → compiler}/token_compiler_examples.rb +99 -104
  231. data/spec/rattler/compiler_spec.rb +67 -0
  232. data/spec/rattler/parsers/action_code_spec.rb +34 -18
  233. data/spec/rattler/{grammar → parsers}/analysis_spec.rb +13 -67
  234. data/spec/rattler/parsers/apply_spec.rb +6 -0
  235. data/spec/rattler/parsers/assert_spec.rb +38 -2
  236. data/spec/rattler/parsers/attributed_sequence_spec.rb +204 -0
  237. data/spec/rattler/parsers/back_reference_spec.rb +6 -0
  238. data/spec/rattler/parsers/choice_spec.rb +38 -1
  239. data/spec/rattler/parsers/combinator_parser_spec.rb +2 -1
  240. data/spec/rattler/parsers/disallow_spec.rb +38 -2
  241. data/spec/rattler/parsers/e_symbol_spec.rb +6 -0
  242. data/spec/rattler/parsers/eof_spec.rb +6 -0
  243. data/spec/rattler/parsers/fail_spec.rb +6 -0
  244. data/spec/rattler/{grammar → parsers}/grammar_spec.rb +10 -15
  245. data/spec/rattler/parsers/label_spec.rb +30 -0
  246. data/spec/rattler/parsers/list_parser_spec.rb +31 -2
  247. data/spec/rattler/parsers/match_spec.rb +6 -0
  248. data/spec/rattler/parsers/node_action_spec.rb +121 -0
  249. data/spec/rattler/parsers/parser_scope_spec.rb +105 -0
  250. data/spec/rattler/parsers/repeat_spec.rb +56 -0
  251. data/spec/rattler/parsers/rule_set_spec.rb +42 -0
  252. data/spec/rattler/parsers/semantic_action_spec.rb +89 -0
  253. data/spec/rattler/parsers/sequence_spec.rb +156 -12
  254. data/spec/rattler/parsers/skip_spec.rb +21 -0
  255. data/spec/rattler/parsers/super_spec.rb +45 -0
  256. data/spec/rattler/parsers/token_spec.rb +33 -14
  257. data/spec/rattler/runtime/extended_packrat_parser_spec.rb +10 -8
  258. data/spec/rattler/runtime/recursive_descent_parser_spec.rb +26 -0
  259. data/spec/rattler/runtime/shared_parser_examples.rb +22 -16
  260. data/spec/rattler/util/graphviz/node_builder_spec.rb +33 -17
  261. data/spec/rattler/util/line_counter_spec.rb +21 -21
  262. data/spec/rattler/util/node_spec.rb +62 -0
  263. data/spec/rattler_spec.rb +7 -41
  264. data/spec/spec_helper.rb +1 -2
  265. data/spec/support/combinator_parser_spec_helper.rb +1 -1
  266. data/spec/support/compiler_spec_helper.rb +0 -4
  267. data/spec/support/parser_generator_spec_helper.rb +7 -7
  268. data/spec/support/runtime_parser_spec_helper.rb +57 -3
  269. metadata +447 -303
  270. data/features/grammar/character_class.feature +0 -20
  271. data/features/grammar/nonterminal.feature +0 -24
  272. data/features/grammar/one_or_more.feature +0 -34
  273. data/features/grammar/ordered_choice.feature +0 -21
  274. data/features/grammar/posix_class.feature +0 -70
  275. data/features/grammar/sequence.feature +0 -20
  276. data/features/grammar/zero_or_more.feature +0 -34
  277. data/lib/rattler/back_end.rb +0 -22
  278. data/lib/rattler/back_end/compiler.rb +0 -128
  279. data/lib/rattler/back_end/optimizer.rb +0 -101
  280. data/lib/rattler/back_end/optimizer/inline_regular_rules.rb +0 -46
  281. data/lib/rattler/back_end/optimizer/join_match_sequence.rb +0 -17
  282. data/lib/rattler/back_end/optimizer/join_predicate_match.rb +0 -17
  283. data/lib/rattler/back_end/optimizer/join_predicate_or_match.rb +0 -17
  284. data/lib/rattler/back_end/optimizer/optimization_context.rb +0 -72
  285. data/lib/rattler/back_end/optimizer/remove_meaningless_wrapper.rb +0 -32
  286. data/lib/rattler/back_end/optimizer/specialize_repeat.rb +0 -40
  287. data/lib/rattler/back_end/parser_generator.rb +0 -113
  288. data/lib/rattler/back_end/parser_generator/direct_action_generator.rb +0 -45
  289. data/lib/rattler/back_end/parser_generator/dispatch_action_generator.rb +0 -45
  290. data/lib/rattler/back_end/parser_generator/group_match.rb +0 -26
  291. data/lib/rattler/back_end/parser_generator/label_generator.rb +0 -64
  292. data/lib/rattler/back_end/parser_generator/predicate_propogating.rb +0 -24
  293. data/lib/rattler/back_end/parser_generator/rule_generator.rb +0 -53
  294. data/lib/rattler/back_end/parser_generator/sequence_generator.rb +0 -190
  295. data/lib/rattler/back_end/parser_generator/skip_propogating.rb +0 -16
  296. data/lib/rattler/back_end/parser_generator/token_propogating.rb +0 -10
  297. data/lib/rattler/grammar.rb +0 -43
  298. data/lib/rattler/grammar/grammar_dsl.rb +0 -51
  299. data/lib/rattler/grammar/metagrammar.rb +0 -990
  300. data/lib/rattler/grammar/rattler.rtlr +0 -183
  301. data/lib/rattler/parsers/assert_code.rb +0 -31
  302. data/lib/rattler/parsers/direct_action.rb +0 -85
  303. data/lib/rattler/parsers/disallow_code.rb +0 -31
  304. data/lib/rattler/parsers/dispatch_action.rb +0 -121
  305. data/lib/rattler/parsers/effect_code.rb +0 -31
  306. data/lib/rattler/parsers/parser_dsl.rb +0 -414
  307. data/lib/rattler/parsers/semantic_assert.rb +0 -19
  308. data/lib/rattler/parsers/semantic_disallow.rb +0 -19
  309. data/lib/rattler/parsers/side_effect.rb +0 -19
  310. data/spec/rattler/back_end/assert_compiler_examples.rb +0 -187
  311. data/spec/rattler/back_end/compiler_spec.rb +0 -43
  312. data/spec/rattler/back_end/direct_action_compiler_examples.rb +0 -227
  313. data/spec/rattler/back_end/disallow_compiler_examples.rb +0 -187
  314. data/spec/rattler/back_end/dispatch_action_compiler_examples.rb +0 -225
  315. data/spec/rattler/back_end/optimizer/inline_regular_rules_spec.rb +0 -80
  316. data/spec/rattler/back_end/parser_generator/direct_action_generator_spec.rb +0 -204
  317. data/spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rb +0 -204
  318. data/spec/rattler/back_end/parser_generator/group_match_generator_spec.rb +0 -185
  319. data/spec/rattler/back_end/semantic_assert_compiler_examples.rb +0 -152
  320. data/spec/rattler/back_end/semantic_disallow_compiler_examples.rb +0 -152
  321. data/spec/rattler/back_end/side_effect_compiler_examples.rb +0 -227
  322. data/spec/rattler/grammar/grammar_parser_spec.rb +0 -626
  323. data/spec/rattler/parsers/direct_action_spec.rb +0 -224
  324. data/spec/rattler/parsers/dispatch_action_spec.rb +0 -209
  325. data/spec/rattler/parsers/node_code_spec.rb +0 -59
  326. data/spec/rattler/parsers/parser_dsl_spec.rb +0 -334
  327. data/spec/rattler/parsers/semantic_assert_spec.rb +0 -83
  328. data/spec/rattler/parsers/semantic_disallow_spec.rb +0 -83
  329. data/spec/rattler/parsers/side_effect_spec.rb +0 -214
@@ -3,102 +3,102 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
3
3
  include Rattler::Util
4
4
 
5
5
  describe LineCounter do
6
-
6
+
7
7
  subject do
8
8
  LineCounter.new(<<-EOS)
9
9
  require 'rattler'
10
10
 
11
- grammar Rattler::Grammar::Metagrammar
11
+ grammar Rattler::Compiler::Metagrammar
12
12
 
13
13
  %whitespace (space+ | ('#' [^\n]*))* {
14
-
14
+
15
15
  grammar <- heading rules EOF
16
-
16
+
17
17
  EOS
18
18
  end
19
-
19
+
20
20
  describe '#line' do
21
21
  it 'starts at 1' do
22
22
  subject.line(0).should == 1
23
23
  end
24
-
24
+
25
25
  context 'given an index on the first line' do
26
26
  it 'returns 1' do
27
27
  subject.line(10).should == 1
28
28
  end
29
29
  end
30
-
30
+
31
31
  context 'given an index on a line with text' do
32
32
  it 'returns the line number' do
33
33
  subject.line(20).should == 3
34
34
  end
35
35
  end
36
-
36
+
37
37
  context 'given an index on a blank line' do
38
38
  it 'returns the line number' do
39
- subject.line(57).should == 4
39
+ subject.line(58).should == 4
40
40
  end
41
41
  end
42
42
  end
43
-
43
+
44
44
  describe '#column' do
45
45
  it 'starts at 1' do
46
46
  subject.column(0).should == 1
47
47
  end
48
-
48
+
49
49
  context 'given an index on the first line' do
50
50
  it 'returns (index + 1)' do
51
51
  subject.column(10).should == 11
52
52
  subject.column(16).should == 17
53
53
  end
54
54
  end
55
-
55
+
56
56
  context 'given an index on a line with text' do
57
57
  it 'returns the column number at the index on that line' do
58
58
  subject.column(20).should == 2
59
59
  subject.column(26).should == 8
60
60
  end
61
61
  end
62
-
62
+
63
63
  context 'given an index on a blank line' do
64
64
  it 'returns 1' do
65
- subject.column(57).should == 1
65
+ subject.column(58).should == 1
66
66
  end
67
67
  end
68
-
68
+
69
69
  context 'with text containing tabs' do
70
70
  subject do
71
71
  LineCounter.new("\tgrammar FooGrammar\n\n\t\texpr\t<-\t'foo'\n")
72
72
  end
73
-
73
+
74
74
  it 'counts initial tabs as 8 spaces' do
75
75
  subject.column(1).should == 9
76
76
  subject.column(22).should == 9
77
77
  subject.column(23).should == 17
78
78
  end
79
-
79
+
80
80
  it 'counts tabs as enough spaces to get to the next tab stop' do
81
81
  subject.column(28).should == 25
82
82
  subject.column(31).should == 33
83
83
  end
84
84
  end
85
-
85
+
86
86
  context 'with text containing tabs and a tab_size of 4' do
87
87
  subject do
88
88
  LineCounter.new("\tgrammar FooGrammar\n\n\t\texpr\t<-\t'foo'\n", :tab_size => 4)
89
89
  end
90
-
90
+
91
91
  it 'counts initial tabs as 4 spaces' do
92
92
  subject.column(1).should == 5
93
93
  subject.column(22).should == 5
94
94
  subject.column(23).should == 9
95
95
  end
96
-
96
+
97
97
  it 'counts tabs as enough spaces to get to the next tab stop' do
98
98
  subject.column(28).should == 17
99
99
  subject.column(31).should == 21
100
100
  end
101
101
  end
102
102
  end
103
-
103
+
104
104
  end
@@ -1,4 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+ require 'pp'
2
3
 
3
4
  include Rattler::Util
4
5
 
@@ -342,4 +343,65 @@ describe Node do
342
343
  end
343
344
  end
344
345
 
346
+ describe '#pretty_print' do
347
+
348
+ context 'for an empty node' do
349
+
350
+ subject { Node.new }
351
+
352
+ it 'prints the class name + "[]"' do
353
+ subject.pretty_inspect.should == "Rattler::Util::Node[]\n"
354
+ end
355
+ end
356
+
357
+ context 'for a node with a name' do
358
+
359
+ subject { Node.new(:name => 'foo') }
360
+
361
+ it 'prints the name in angle brackets after the class name' do
362
+ subject.pretty_inspect.should == "Rattler::Util::Node<\"foo\">[]\n"
363
+ end
364
+ end
365
+
366
+ context 'for a node with attributes' do
367
+
368
+ subject { Node.new(:a => 'foo', :b => 'bar') }
369
+
370
+ it 'prints the attributes in square brackets' do
371
+ subject.pretty_inspect.should ==
372
+ "Rattler::Util::Node[:a=>\"foo\", :b=>\"bar\"]\n"
373
+ end
374
+ end
375
+
376
+ context 'for a node with a name and attributes' do
377
+
378
+ subject { Node.new(:name => 'foo', :foo => 'bar') }
379
+
380
+ it 'omits the name from the square brackets' do
381
+ subject.pretty_inspect.should ==
382
+ "Rattler::Util::Node<\"foo\">[:foo=>\"bar\"]\n"
383
+ end
384
+ end
385
+
386
+ context 'for a node with children' do
387
+
388
+ subject { Node.new('foo', 'bar') }
389
+
390
+ it 'prints the children in square brackets' do
391
+ subject.pretty_inspect.should ==
392
+ "Rattler::Util::Node[\"foo\", \"bar\"]\n"
393
+ end
394
+ end
395
+
396
+ context 'for a node with children and attributes' do
397
+
398
+ subject { Node.new('aa', 'bb', :foo => 'bar') }
399
+
400
+ it 'prints the children then the attributes in square brackets' do
401
+ subject.pretty_inspect.should ==
402
+ "Rattler::Util::Node[\"aa\", \"bb\", :foo=>\"bar\"]\n"
403
+ end
404
+ end
405
+ end
406
+
345
407
  end
@@ -4,50 +4,16 @@ require 'rattler'
4
4
 
5
5
  describe 'Rattler' do
6
6
 
7
- describe '.define_rules' do
8
-
9
- context 'given a parser DSL block' do
10
-
11
- let(:result) { Rattler.define_rules do
12
- rule(:word) { match /\w+/ }
13
- rule(:num) { match /\d+/ }
14
- end }
15
-
16
- it 'returns a set of parse rules defined by the block' do
17
- result.should == Rattler::Parsers::RuleSet[
18
- Rattler::Parsers::Rule[:word, Rattler::Parsers::Match[/\w+/]],
19
- Rattler::Parsers::Rule[:num, Rattler::Parsers::Match[/\d+/]]
20
- ]
21
- end
22
- end
23
- end
24
-
25
7
  describe '.compile_parser' do
26
8
 
27
- context 'given a parser DSL block' do
28
-
29
- let(:result) { Rattler.compile_parser do
30
- rule(:word) { match /\w+/ }
31
- rule(:num) { match /\d+/ }
32
- end }
33
-
34
- it 'returns a parser class with rule methods defined by the block' do
35
- result.should have_method(:match_word)
36
- result.should have_method(:match_num)
37
- end
38
- end
39
-
40
- context 'given a grammar source string' do
41
-
42
- let(:result) { Rattler.compile_parser({}, %{
43
- word <- @WORD+
44
- num <- @DIGIT+
45
- })}
9
+ let(:result) { Rattler.compile_parser(%{
10
+ word <- @WORD+
11
+ num <- @DIGIT+
12
+ })}
46
13
 
47
- it 'returns a parser class with rule methods defined by the grammar' do
48
- result.should have_method(:match_word)
49
- result.should have_method(:match_num)
50
- end
14
+ it 'returns a parser class with rule methods defined by the grammar' do
15
+ result.should have_method(:match_word)
16
+ result.should have_method(:match_num)
51
17
  end
52
18
  end
53
19
 
@@ -1,5 +1,5 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+
3
3
  require 'rspec'
4
4
  require 'rattler'
5
5
 
@@ -8,5 +8,4 @@ require 'rattler'
8
8
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
9
 
10
10
  RSpec.configure do |config|
11
-
12
11
  end
@@ -12,7 +12,7 @@ module CombinatorParserSpecHelper
12
12
  end
13
13
 
14
14
  def scope
15
- {}
15
+ ParserScope.empty
16
16
  end
17
17
 
18
18
  def parser(&block)
@@ -2,10 +2,6 @@ require 'strscan'
2
2
 
3
3
  module CompilerSpecHelper
4
4
 
5
- def define_grammar(&block)
6
- Rattler::Grammar::Grammar.new(Rattler::Parsers.define(&block))
7
- end
8
-
9
5
  def combinator_parser(g)
10
6
  Rattler::Parsers::CombinatorParser.as_class(g.rules.first, g.rules)
11
7
  end
@@ -1,23 +1,23 @@
1
1
  module ParserGeneratorSpecHelper
2
-
2
+
3
3
  def generated_code(*args)
4
- Rattler::BackEnd::RubyGenerator.code do |g|
4
+ Rattler::Compiler::RubyGenerator.code do |g|
5
5
  yield described_class.new(g, *args)
6
6
  end
7
7
  end
8
-
8
+
9
9
  def nested_code(opts = {})
10
10
  args = opts[:choice_level], opts[:sequence_level], opts[:repeat_level]
11
- Rattler::BackEnd::RubyGenerator.code do |g|
11
+ Rattler::Compiler::RubyGenerator.code do |g|
12
12
  yield described_class.nested(g, *args)
13
13
  end
14
14
  end
15
-
15
+
16
16
  def top_level_code(opts = {})
17
17
  args = opts[:choice_level], opts[:sequence_level], opts[:repeat_level]
18
- Rattler::BackEnd::RubyGenerator.code do |g|
18
+ Rattler::Compiler::RubyGenerator.code do |g|
19
19
  yield described_class.top_level(g, *args)
20
20
  end
21
21
  end
22
-
22
+
23
23
  end
@@ -2,9 +2,63 @@ module RuntimeParserSpecHelper
2
2
 
3
3
  include Rattler::Util::ParserSpecHelper
4
4
 
5
- def define_grammar(*args, &block)
6
- rules = Rattler::Parsers::ParserDSL.rules(*args, &block)
7
- Rattler::Grammar::Grammar.new(rules)
5
+ def rule(name)
6
+ Rule[name, yield]
7
+ end
8
+
9
+ def match(arg)
10
+ case arg
11
+ when Regexp then Match[arg]
12
+ when Symbol then Apply[arg]
13
+ else match Regexp.new(Regexp.escape(arg.to_s))
14
+ end
15
+ end
16
+
17
+ def assert(arg)
18
+ Assert[to_parser(arg)]
19
+ end
20
+
21
+ def disallow(arg)
22
+ Disallow[to_parser(arg)]
23
+ end
24
+
25
+ def eof
26
+ Eof[]
27
+ end
28
+
29
+ def e
30
+ ESymbol[]
31
+ end
32
+
33
+ def token(arg)
34
+ Token[to_parser(arg)]
35
+ end
36
+
37
+ def skip(arg)
38
+ Skip[to_parser(arg)]
39
+ end
40
+
41
+ def label(name, arg)
42
+ Label[name, to_parser(arg)]
43
+ end
44
+
45
+ def semantic_action(code)
46
+ SemanticAction[code]
47
+ end
48
+
49
+ def node_action(node_class, attrs={})
50
+ NodeAction[node_class, attrs]
51
+ end
52
+
53
+ private
54
+
55
+ def to_parser(o)
56
+ case o
57
+ when ::Rattler::Parsers::Parser then o
58
+ when nil then nil
59
+ when false then nil
60
+ else match(o)
61
+ end
8
62
  end
9
63
 
10
64
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rattler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,97 +9,216 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-29 00:00:00.000000000 -07:00
13
- default_executable: rtlr
12
+ date: 2012-06-28 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
- requirement: &24195900 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
21
20
  - !ruby/object:Gem::Version
22
- version: 1.0.0
21
+ version: '1.1'
23
22
  type: :development
24
23
  prerelease: false
25
- version_requirements: *24195900
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: ruby-graphviz
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.0'
26
46
  - !ruby/object:Gem::Dependency
27
47
  name: jeweler
28
- requirement: &24195400 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
29
49
  none: false
30
50
  requirements:
31
51
  - - ~>
32
52
  - !ruby/object:Gem::Version
33
- version: 1.5.2
53
+ version: '1.8'
34
54
  type: :development
35
55
  prerelease: false
36
- version_requirements: *24195400
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.8'
37
62
  - !ruby/object:Gem::Dependency
38
63
  name: rspec
39
- requirement: &24194920 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
40
65
  none: false
41
66
  requirements:
42
- - - ! '>='
67
+ - - ~>
43
68
  - !ruby/object:Gem::Version
44
- version: 2.3.0
69
+ version: '2.10'
45
70
  type: :development
46
71
  prerelease: false
47
- version_requirements: *24194920
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '2.10'
48
78
  - !ruby/object:Gem::Dependency
49
79
  name: cucumber
50
- requirement: &24194380 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
51
81
  none: false
52
82
  requirements:
53
- - - ! '>='
83
+ - - ~>
54
84
  - !ruby/object:Gem::Version
55
- version: 0.8.0
85
+ version: '1.2'
56
86
  type: :development
57
87
  prerelease: false
58
- version_requirements: *24194380
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.2'
59
94
  - !ruby/object:Gem::Dependency
60
95
  name: aruba
61
- requirement: &24193860 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
62
97
  none: false
63
98
  requirements:
64
99
  - - ! '>='
65
100
  - !ruby/object:Gem::Version
66
- version: 0.3.0
101
+ version: '0'
67
102
  type: :development
68
103
  prerelease: false
69
- version_requirements: *24193860
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rcov
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
70
126
  - !ruby/object:Gem::Dependency
71
127
  name: yard
72
- requirement: &24193340 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
73
129
  none: false
74
130
  requirements:
75
131
  - - ! '>='
76
132
  - !ruby/object:Gem::Version
77
- version: 0.6.0
133
+ version: '0'
78
134
  type: :development
79
135
  prerelease: false
80
- version_requirements: *24193340
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
81
142
  - !ruby/object:Gem::Dependency
82
- name: watchr
83
- requirement: &24192800 !ruby/object:Gem::Requirement
143
+ name: guard
144
+ requirement: !ruby/object:Gem::Requirement
84
145
  none: false
85
146
  requirements:
86
147
  - - ! '>='
87
148
  - !ruby/object:Gem::Version
88
- version: 0.5.5
149
+ version: '0'
89
150
  type: :development
90
151
  prerelease: false
91
- version_requirements: *24192800
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
92
158
  - !ruby/object:Gem::Dependency
93
- name: ruby-graphviz
94
- requirement: &24192240 !ruby/object:Gem::Requirement
159
+ name: guard-rspec
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: guard-cucumber
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: rb-notifu
192
+ requirement: !ruby/object:Gem::Requirement
95
193
  none: false
96
194
  requirements:
97
195
  - - ! '>='
98
196
  - !ruby/object:Gem::Version
99
- version: 0.9.6
197
+ version: '0'
100
198
  type: :development
101
199
  prerelease: false
102
- version_requirements: *24192240
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: win32console
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
103
222
  description: Simple language recognition tool for Ruby based on packrat parsing
104
223
  email: jarhart@gmail.com
105
224
  executables:
@@ -111,114 +230,114 @@ extra_rdoc_files:
111
230
  files:
112
231
  - bin/rtlr
113
232
  - lib/rattler.rb
114
- - lib/rattler/back_end.rb
115
- - lib/rattler/back_end/compiler.rb
116
- - lib/rattler/back_end/optimizer.rb
117
- - lib/rattler/back_end/optimizer/composite_reducing.rb
118
- - lib/rattler/back_end/optimizer/flatten_choice.rb
119
- - lib/rattler/back_end/optimizer/flatten_sequence.rb
120
- - lib/rattler/back_end/optimizer/flattening.rb
121
- - lib/rattler/back_end/optimizer/inline_regular_rules.rb
122
- - lib/rattler/back_end/optimizer/join_match_capturing_sequence.rb
123
- - lib/rattler/back_end/optimizer/join_match_choice.rb
124
- - lib/rattler/back_end/optimizer/join_match_matching_sequence.rb
125
- - lib/rattler/back_end/optimizer/join_match_sequence.rb
126
- - lib/rattler/back_end/optimizer/join_predicate_bare_match.rb
127
- - lib/rattler/back_end/optimizer/join_predicate_match.rb
128
- - lib/rattler/back_end/optimizer/join_predicate_nested_match.rb
129
- - lib/rattler/back_end/optimizer/join_predicate_or_bare_match.rb
130
- - lib/rattler/back_end/optimizer/join_predicate_or_match.rb
131
- - lib/rattler/back_end/optimizer/join_predicate_or_nested_match.rb
132
- - lib/rattler/back_end/optimizer/match_joining.rb
133
- - lib/rattler/back_end/optimizer/optimization.rb
134
- - lib/rattler/back_end/optimizer/optimization_context.rb
135
- - lib/rattler/back_end/optimizer/optimization_sequence.rb
136
- - lib/rattler/back_end/optimizer/optimize_children.rb
137
- - lib/rattler/back_end/optimizer/reduce_repeat_match.rb
138
- - lib/rattler/back_end/optimizer/remove_meaningless_wrapper.rb
139
- - lib/rattler/back_end/optimizer/simplify_redundant_repeat.rb
140
- - lib/rattler/back_end/optimizer/simplify_token_match.rb
141
- - lib/rattler/back_end/optimizer/specialize_repeat.rb
142
- - lib/rattler/back_end/parser_generator.rb
143
- - lib/rattler/back_end/parser_generator/apply_generator.rb
144
- - lib/rattler/back_end/parser_generator/assert_generator.rb
145
- - lib/rattler/back_end/parser_generator/back_reference_generator.rb
146
- - lib/rattler/back_end/parser_generator/choice_generator.rb
147
- - lib/rattler/back_end/parser_generator/delegating_generator.rb
148
- - lib/rattler/back_end/parser_generator/direct_action_generator.rb
149
- - lib/rattler/back_end/parser_generator/disallow_generator.rb
150
- - lib/rattler/back_end/parser_generator/dispatch_action_generator.rb
151
- - lib/rattler/back_end/parser_generator/e_symbol_generator.rb
152
- - lib/rattler/back_end/parser_generator/eof_generator.rb
153
- - lib/rattler/back_end/parser_generator/expr_generator.rb
154
- - lib/rattler/back_end/parser_generator/fail_generator.rb
155
- - lib/rattler/back_end/parser_generator/gen_method_names.rb
156
- - lib/rattler/back_end/parser_generator/general_list_generator.rb
157
- - lib/rattler/back_end/parser_generator/general_repeat_generator.rb
158
- - lib/rattler/back_end/parser_generator/group_match.rb
159
- - lib/rattler/back_end/parser_generator/group_match_generator.rb
160
- - lib/rattler/back_end/parser_generator/label_generator.rb
161
- - lib/rattler/back_end/parser_generator/list0_generating.rb
162
- - lib/rattler/back_end/parser_generator/list1_generating.rb
163
- - lib/rattler/back_end/parser_generator/list_generator.rb
164
- - lib/rattler/back_end/parser_generator/match_generator.rb
165
- - lib/rattler/back_end/parser_generator/nested.rb
166
- - lib/rattler/back_end/parser_generator/one_or_more_generating.rb
167
- - lib/rattler/back_end/parser_generator/optional_generating.rb
168
- - lib/rattler/back_end/parser_generator/predicate_propogating.rb
169
- - lib/rattler/back_end/parser_generator/repeat_generator.rb
170
- - lib/rattler/back_end/parser_generator/rule_generator.rb
171
- - lib/rattler/back_end/parser_generator/rule_set_generator.rb
172
- - lib/rattler/back_end/parser_generator/sequence_generator.rb
173
- - lib/rattler/back_end/parser_generator/skip_generator.rb
174
- - lib/rattler/back_end/parser_generator/skip_propogating.rb
175
- - lib/rattler/back_end/parser_generator/sub_generating.rb
176
- - lib/rattler/back_end/parser_generator/token_generator.rb
177
- - lib/rattler/back_end/parser_generator/token_propogating.rb
178
- - lib/rattler/back_end/parser_generator/top_level.rb
179
- - lib/rattler/back_end/parser_generator/zero_or_more_generating.rb
180
- - lib/rattler/back_end/ruby_generator.rb
181
- - lib/rattler/grammar.rb
182
- - lib/rattler/grammar/analysis.rb
183
- - lib/rattler/grammar/grammar.rb
184
- - lib/rattler/grammar/grammar_dsl.rb
185
- - lib/rattler/grammar/grammar_parser.rb
186
- - lib/rattler/grammar/metagrammar.rb
187
- - lib/rattler/grammar/rattler.rtlr
233
+ - lib/rattler/compiler.rb
234
+ - lib/rattler/compiler/grammar_parser.rb
235
+ - lib/rattler/compiler/metagrammar.rb
236
+ - lib/rattler/compiler/optimizer.rb
237
+ - lib/rattler/compiler/optimizer/composite_reducing.rb
238
+ - lib/rattler/compiler/optimizer/flatten_choice.rb
239
+ - lib/rattler/compiler/optimizer/flatten_sequence.rb
240
+ - lib/rattler/compiler/optimizer/flattening.rb
241
+ - lib/rattler/compiler/optimizer/inline_regular_rules.rb
242
+ - lib/rattler/compiler/optimizer/join_match_capturing_sequence.rb
243
+ - lib/rattler/compiler/optimizer/join_match_choice.rb
244
+ - lib/rattler/compiler/optimizer/join_match_matching_sequence.rb
245
+ - lib/rattler/compiler/optimizer/join_match_sequence.rb
246
+ - lib/rattler/compiler/optimizer/join_predicate_bare_match.rb
247
+ - lib/rattler/compiler/optimizer/join_predicate_match.rb
248
+ - lib/rattler/compiler/optimizer/join_predicate_nested_match.rb
249
+ - lib/rattler/compiler/optimizer/join_predicate_or_bare_match.rb
250
+ - lib/rattler/compiler/optimizer/join_predicate_or_match.rb
251
+ - lib/rattler/compiler/optimizer/join_predicate_or_nested_match.rb
252
+ - lib/rattler/compiler/optimizer/match_joining.rb
253
+ - lib/rattler/compiler/optimizer/optimization.rb
254
+ - lib/rattler/compiler/optimizer/optimization_context.rb
255
+ - lib/rattler/compiler/optimizer/optimization_sequence.rb
256
+ - lib/rattler/compiler/optimizer/optimizations.rb
257
+ - lib/rattler/compiler/optimizer/optimize_children.rb
258
+ - lib/rattler/compiler/optimizer/reduce_repeat_match.rb
259
+ - lib/rattler/compiler/optimizer/remove_meaningless_wrapper.rb
260
+ - lib/rattler/compiler/optimizer/simplify_redundant_repeat.rb
261
+ - lib/rattler/compiler/optimizer/simplify_token_match.rb
262
+ - lib/rattler/compiler/parser_generator.rb
263
+ - lib/rattler/compiler/parser_generator/apply_generator.rb
264
+ - lib/rattler/compiler/parser_generator/assert_generator.rb
265
+ - lib/rattler/compiler/parser_generator/attributed_sequence_generator.rb
266
+ - lib/rattler/compiler/parser_generator/back_reference_generator.rb
267
+ - lib/rattler/compiler/parser_generator/choice_generator.rb
268
+ - lib/rattler/compiler/parser_generator/delegating_generator.rb
269
+ - lib/rattler/compiler/parser_generator/disallow_generator.rb
270
+ - lib/rattler/compiler/parser_generator/e_symbol_generator.rb
271
+ - lib/rattler/compiler/parser_generator/eof_generator.rb
272
+ - lib/rattler/compiler/parser_generator/expr_generator.rb
273
+ - lib/rattler/compiler/parser_generator/fail_generator.rb
274
+ - lib/rattler/compiler/parser_generator/gen_method_names.rb
275
+ - lib/rattler/compiler/parser_generator/general_list_generator.rb
276
+ - lib/rattler/compiler/parser_generator/general_repeat_generator.rb
277
+ - lib/rattler/compiler/parser_generator/grammar_generator.rb
278
+ - lib/rattler/compiler/parser_generator/group_match.rb
279
+ - lib/rattler/compiler/parser_generator/group_match_generator.rb
280
+ - lib/rattler/compiler/parser_generator/label_generator.rb
281
+ - lib/rattler/compiler/parser_generator/list0_generating.rb
282
+ - lib/rattler/compiler/parser_generator/list1_generating.rb
283
+ - lib/rattler/compiler/parser_generator/list_generator.rb
284
+ - lib/rattler/compiler/parser_generator/match_generator.rb
285
+ - lib/rattler/compiler/parser_generator/nested.rb
286
+ - lib/rattler/compiler/parser_generator/node_action_generator.rb
287
+ - lib/rattler/compiler/parser_generator/one_or_more_generating.rb
288
+ - lib/rattler/compiler/parser_generator/optional_generating.rb
289
+ - lib/rattler/compiler/parser_generator/predicate_propogating.rb
290
+ - lib/rattler/compiler/parser_generator/repeat_generator.rb
291
+ - lib/rattler/compiler/parser_generator/rule_generator.rb
292
+ - lib/rattler/compiler/parser_generator/rule_set_generator.rb
293
+ - lib/rattler/compiler/parser_generator/semantic_action_generator.rb
294
+ - lib/rattler/compiler/parser_generator/sequence_generating.rb
295
+ - lib/rattler/compiler/parser_generator/sequence_generator.rb
296
+ - lib/rattler/compiler/parser_generator/skip_generator.rb
297
+ - lib/rattler/compiler/parser_generator/skip_propogating.rb
298
+ - lib/rattler/compiler/parser_generator/sub_generating.rb
299
+ - lib/rattler/compiler/parser_generator/super_generator.rb
300
+ - lib/rattler/compiler/parser_generator/token_generator.rb
301
+ - lib/rattler/compiler/parser_generator/token_propogating.rb
302
+ - lib/rattler/compiler/parser_generator/top_level.rb
303
+ - lib/rattler/compiler/parser_generator/zero_or_more_generating.rb
304
+ - lib/rattler/compiler/rattler.rtlr
305
+ - lib/rattler/compiler/ruby_generator.rb
188
306
  - lib/rattler/parsers.rb
189
307
  - lib/rattler/parsers/action_code.rb
308
+ - lib/rattler/parsers/analysis.rb
190
309
  - lib/rattler/parsers/apply.rb
191
310
  - lib/rattler/parsers/assert.rb
192
- - lib/rattler/parsers/assert_code.rb
193
311
  - lib/rattler/parsers/atomic.rb
312
+ - lib/rattler/parsers/attributed_sequence.rb
194
313
  - lib/rattler/parsers/back_reference.rb
195
314
  - lib/rattler/parsers/choice.rb
196
315
  - lib/rattler/parsers/combinator_parser.rb
197
316
  - lib/rattler/parsers/combining.rb
198
- - lib/rattler/parsers/direct_action.rb
199
317
  - lib/rattler/parsers/disallow.rb
200
- - lib/rattler/parsers/disallow_code.rb
201
- - lib/rattler/parsers/dispatch_action.rb
202
318
  - lib/rattler/parsers/e_symbol.rb
203
- - lib/rattler/parsers/effect_code.rb
204
319
  - lib/rattler/parsers/eof.rb
205
320
  - lib/rattler/parsers/fail.rb
321
+ - lib/rattler/parsers/grammar.rb
206
322
  - lib/rattler/parsers/label.rb
207
323
  - lib/rattler/parsers/list_parser.rb
208
324
  - lib/rattler/parsers/match.rb
325
+ - lib/rattler/parsers/node_action.rb
209
326
  - lib/rattler/parsers/node_code.rb
210
327
  - lib/rattler/parsers/parser.rb
211
- - lib/rattler/parsers/parser_dsl.rb
328
+ - lib/rattler/parsers/parser_scope.rb
212
329
  - lib/rattler/parsers/predicate.rb
213
330
  - lib/rattler/parsers/repeat.rb
214
331
  - lib/rattler/parsers/rule.rb
215
332
  - lib/rattler/parsers/rule_set.rb
216
- - lib/rattler/parsers/semantic_assert.rb
217
- - lib/rattler/parsers/semantic_disallow.rb
333
+ - lib/rattler/parsers/semantic.rb
334
+ - lib/rattler/parsers/semantic_action.rb
218
335
  - lib/rattler/parsers/sequence.rb
219
- - lib/rattler/parsers/side_effect.rb
336
+ - lib/rattler/parsers/sequencing.rb
220
337
  - lib/rattler/parsers/skip.rb
338
+ - lib/rattler/parsers/super.rb
221
339
  - lib/rattler/parsers/token.rb
340
+ - lib/rattler/rake_task.rb
222
341
  - lib/rattler/runner.rb
223
342
  - lib/rattler/runtime.rb
224
343
  - lib/rattler/runtime/extended_packrat_parser.rb
@@ -230,130 +349,144 @@ files:
230
349
  - lib/rattler/runtime/recursive_descent_parser.rb
231
350
  - lib/rattler/runtime/syntax_error.rb
232
351
  - lib/rattler/util.rb
352
+ - lib/rattler/util/grammar_cli.rb
233
353
  - lib/rattler/util/graphviz.rb
234
354
  - lib/rattler/util/graphviz/digraph_builder.rb
235
355
  - lib/rattler/util/graphviz/node_builder.rb
236
356
  - lib/rattler/util/line_counter.rb
237
357
  - lib/rattler/util/node.rb
358
+ - lib/rattler/util/parser_cli.rb
238
359
  - lib/rattler/util/parser_spec_helper.rb
239
360
  - LICENSE.txt
240
361
  - README.rdoc
241
362
  - features/command_line/dest_option.feature
242
363
  - features/command_line/lib_option.feature
243
364
  - features/command_line/output_option.feature
244
- - features/command_line/parser_generator.feature
245
- - features/grammar/any_character.feature
246
- - features/grammar/back_reference.feature
247
- - features/grammar/character_class.feature
248
- - features/grammar/comments.feature
249
- - features/grammar/e_symbol.feature
250
- - features/grammar/eof.feature
251
- - features/grammar/fail.feature
252
- - features/grammar/labels.feature
253
- - features/grammar/list_matching.feature
254
- - features/grammar/literal.feature
255
- - features/grammar/negative_lookahead.feature
256
- - features/grammar/negative_semantic_predicate.feature
257
- - features/grammar/node_action.feature
258
- - features/grammar/nonterminal.feature
259
- - features/grammar/one_or_more.feature
260
- - features/grammar/optional.feature
261
- - features/grammar/ordered_choice.feature
262
- - features/grammar/positive_lookahead.feature
263
- - features/grammar/positive_semantic_predicate.feature
264
- - features/grammar/posix_class.feature
265
- - features/grammar/repeat.feature
266
- - features/grammar/sequence.feature
267
- - features/grammar/side_effect.feature
268
- - features/grammar/skip_operator.feature
269
- - features/grammar/start_rule.feature
270
- - features/grammar/symantic_action.feature
271
- - features/grammar/token.feature
272
- - features/grammar/whitespace.feature
273
- - features/grammar/word_literal.feature
274
- - features/grammar/zero_or_more.feature
365
+ - features/command_line/rtlr.feature
366
+ - features/error_reporting/automatic_error_messages.feature
367
+ - features/error_reporting/custom_error_messages.feature
368
+ - features/examples/json_parser.markdown
369
+ - features/extended_matching_syntax/back_reference.feature
370
+ - features/extended_matching_syntax/e_symbol.feature
371
+ - features/extended_matching_syntax/eof.feature
372
+ - features/extended_matching_syntax/fail.feature
373
+ - features/extended_matching_syntax/fragments.feature
374
+ - features/extended_matching_syntax/include.feature
375
+ - features/extended_matching_syntax/list_matching.feature
376
+ - features/extended_matching_syntax/posix_class.feature
377
+ - features/extended_matching_syntax/repeat.feature
378
+ - features/extended_matching_syntax/skip_operator.feature
379
+ - features/extended_matching_syntax/super.feature
380
+ - features/extended_matching_syntax/token.feature
381
+ - features/extended_matching_syntax/whitespace.feature
382
+ - features/extended_matching_syntax/word_literal.feature
383
+ - features/grammar_heading/explicit_start_rule.feature
384
+ - features/grammar_heading/grammar_declaration.feature
385
+ - features/grammar_heading/include.feature
386
+ - features/grammar_heading/require.feature
387
+ - features/peg_syntax/any_character.feature
388
+ - features/peg_syntax/character_class.feature
389
+ - features/peg_syntax/comments.feature
390
+ - features/peg_syntax/literal.feature
391
+ - features/peg_syntax/negative_lookahead.feature
392
+ - features/peg_syntax/nonterminal.feature
393
+ - features/peg_syntax/one_or_more.feature
394
+ - features/peg_syntax/optional.feature
395
+ - features/peg_syntax/ordered_choice.feature
396
+ - features/peg_syntax/positive_lookahead.feature
397
+ - features/peg_syntax/sequence.feature
398
+ - features/peg_syntax/start_rule.feature
399
+ - features/peg_syntax/zero_or_more.feature
400
+ - features/README.markdown
401
+ - features/semantics/labels.feature
402
+ - features/semantics/negative_semantic_predicate.feature
403
+ - features/semantics/node_action.feature
404
+ - features/semantics/positive_semantic_predicate.feature
405
+ - features/semantics/semantic_action.feature
406
+ - features/semantics/semantic_result.feature
407
+ - features/semantics/side_effect.feature
275
408
  - features/step_definitions/cli_steps.rb
276
409
  - features/step_definitions/grammar_steps.rb
277
410
  - features/support/env.rb
278
- - spec/rattler/back_end/assert_compiler_examples.rb
279
- - spec/rattler/back_end/compiler_spec.rb
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
283
- - spec/rattler/back_end/optimizer/flatten_choice_spec.rb
284
- - spec/rattler/back_end/optimizer/flatten_sequence_spec.rb
285
- - spec/rattler/back_end/optimizer/inline_regular_rules_spec.rb
286
- - spec/rattler/back_end/optimizer/join_match_capturing_sequence_spec.rb
287
- - spec/rattler/back_end/optimizer/join_match_choice_spec.rb
288
- - spec/rattler/back_end/optimizer/join_match_matching_sequence_spec.rb
289
- - spec/rattler/back_end/optimizer/join_predicate_bare_match_spec.rb
290
- - spec/rattler/back_end/optimizer/join_predicate_nested_match_spec.rb
291
- - spec/rattler/back_end/optimizer/join_predicate_or_bare_match_spec.rb
292
- - spec/rattler/back_end/optimizer/join_predicate_or_nested_match_spec.rb
293
- - spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rb
294
- - spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rb
295
- - spec/rattler/back_end/optimizer/simplify_token_match_spec.rb
296
- - spec/rattler/back_end/optimizer_spec.rb
297
- - spec/rattler/back_end/parser_generator/apply_generator_spec.rb
298
- - spec/rattler/back_end/parser_generator/assert_generator_spec.rb
299
- - spec/rattler/back_end/parser_generator/back_reference_generator_spec.rb
300
- - spec/rattler/back_end/parser_generator/choice_generator_spec.rb
301
- - spec/rattler/back_end/parser_generator/direct_action_generator_spec.rb
302
- - spec/rattler/back_end/parser_generator/disallow_generator_spec.rb
303
- - spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rb
304
- - spec/rattler/back_end/parser_generator/e_symbol_generator_spec.rb
305
- - spec/rattler/back_end/parser_generator/eof_generator_spec.rb
306
- - spec/rattler/back_end/parser_generator/fail_generator_spec.rb
307
- - spec/rattler/back_end/parser_generator/group_match_generator_spec.rb
308
- - spec/rattler/back_end/parser_generator/group_match_spec.rb
309
- - spec/rattler/back_end/parser_generator/label_generator_spec.rb
310
- - spec/rattler/back_end/parser_generator/list0_generator_examples.rb
311
- - spec/rattler/back_end/parser_generator/list1_generator_examples.rb
312
- - spec/rattler/back_end/parser_generator/list_generator_spec.rb
313
- - spec/rattler/back_end/parser_generator/match_generator_spec.rb
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
317
- - spec/rattler/back_end/parser_generator/rule_generator_spec.rb
318
- - spec/rattler/back_end/parser_generator/rule_set_generator_spec.rb
319
- - spec/rattler/back_end/parser_generator/sequence_generator_spec.rb
320
- - spec/rattler/back_end/parser_generator/skip_generator_spec.rb
321
- - spec/rattler/back_end/parser_generator/token_generator_spec.rb
322
- - spec/rattler/back_end/parser_generator/zero_or_more_generator_examples.rb
323
- - spec/rattler/back_end/ruby_generator_spec.rb
324
- - spec/rattler/back_end/semantic_assert_compiler_examples.rb
325
- - spec/rattler/back_end/semantic_disallow_compiler_examples.rb
326
- - spec/rattler/back_end/shared_compiler_examples.rb
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
330
- - spec/rattler/grammar/analysis_spec.rb
331
- - spec/rattler/grammar/grammar_parser_spec.rb
332
- - spec/rattler/grammar/grammar_spec.rb
411
+ - features/Tutorial.md
412
+ - spec/rattler/compiler/assert_compiler_examples.rb
413
+ - spec/rattler/compiler/attributed_sequence_compiler_examples.rb
414
+ - spec/rattler/compiler/disallow_compiler_examples.rb
415
+ - spec/rattler/compiler/grammar_parser_spec.rb
416
+ - spec/rattler/compiler/optimizer/flatten_choice_spec.rb
417
+ - spec/rattler/compiler/optimizer/flatten_sequence_spec.rb
418
+ - spec/rattler/compiler/optimizer/inline_regular_rules_spec.rb
419
+ - spec/rattler/compiler/optimizer/join_match_capturing_sequence_spec.rb
420
+ - spec/rattler/compiler/optimizer/join_match_choice_spec.rb
421
+ - spec/rattler/compiler/optimizer/join_match_matching_sequence_spec.rb
422
+ - spec/rattler/compiler/optimizer/join_predicate_bare_match_spec.rb
423
+ - spec/rattler/compiler/optimizer/join_predicate_nested_match_spec.rb
424
+ - spec/rattler/compiler/optimizer/join_predicate_or_bare_match_spec.rb
425
+ - spec/rattler/compiler/optimizer/join_predicate_or_nested_match_spec.rb
426
+ - spec/rattler/compiler/optimizer/reduce_repeat_match_spec.rb
427
+ - spec/rattler/compiler/optimizer/remove_meaningless_wrapper_spec.rb
428
+ - spec/rattler/compiler/optimizer/simplify_redundant_repeat_spec.rb
429
+ - spec/rattler/compiler/optimizer/simplify_token_match_spec.rb
430
+ - spec/rattler/compiler/optimizer_spec.rb
431
+ - spec/rattler/compiler/parser_generator/apply_generator_spec.rb
432
+ - spec/rattler/compiler/parser_generator/assert_generator_spec.rb
433
+ - spec/rattler/compiler/parser_generator/attributed_sequence_generator_spec.rb
434
+ - spec/rattler/compiler/parser_generator/back_reference_generator_spec.rb
435
+ - spec/rattler/compiler/parser_generator/choice_generator_spec.rb
436
+ - spec/rattler/compiler/parser_generator/disallow_generator_spec.rb
437
+ - spec/rattler/compiler/parser_generator/e_symbol_generator_spec.rb
438
+ - spec/rattler/compiler/parser_generator/eof_generator_spec.rb
439
+ - spec/rattler/compiler/parser_generator/fail_generator_spec.rb
440
+ - spec/rattler/compiler/parser_generator/grammar_generator_spec.rb
441
+ - spec/rattler/compiler/parser_generator/group_match_generator_spec.rb
442
+ - spec/rattler/compiler/parser_generator/group_match_spec.rb
443
+ - spec/rattler/compiler/parser_generator/label_generator_spec.rb
444
+ - spec/rattler/compiler/parser_generator/list0_generator_examples.rb
445
+ - spec/rattler/compiler/parser_generator/list1_generator_examples.rb
446
+ - spec/rattler/compiler/parser_generator/list_generator_spec.rb
447
+ - spec/rattler/compiler/parser_generator/match_generator_spec.rb
448
+ - spec/rattler/compiler/parser_generator/node_action_generator_spec.rb
449
+ - spec/rattler/compiler/parser_generator/one_or_more_generator_examples.rb
450
+ - spec/rattler/compiler/parser_generator/optional_generator_examples.rb
451
+ - spec/rattler/compiler/parser_generator/repeat_generator_spec.rb
452
+ - spec/rattler/compiler/parser_generator/rule_generator_spec.rb
453
+ - spec/rattler/compiler/parser_generator/rule_set_generator_spec.rb
454
+ - spec/rattler/compiler/parser_generator/semantic_action_generator_spec.rb
455
+ - spec/rattler/compiler/parser_generator/sequence_generator_spec.rb
456
+ - spec/rattler/compiler/parser_generator/skip_generator_spec.rb
457
+ - spec/rattler/compiler/parser_generator/super_generator_spec.rb
458
+ - spec/rattler/compiler/parser_generator/token_generator_spec.rb
459
+ - spec/rattler/compiler/parser_generator/zero_or_more_generator_examples.rb
460
+ - spec/rattler/compiler/ruby_generator_spec.rb
461
+ - spec/rattler/compiler/semantic_action_compiler_examples.rb
462
+ - spec/rattler/compiler/shared_compiler_examples.rb
463
+ - spec/rattler/compiler/skip_compiler_examples.rb
464
+ - spec/rattler/compiler/token_compiler_examples.rb
465
+ - spec/rattler/compiler_spec.rb
333
466
  - spec/rattler/parsers/action_code_spec.rb
467
+ - spec/rattler/parsers/analysis_spec.rb
334
468
  - spec/rattler/parsers/apply_spec.rb
335
469
  - spec/rattler/parsers/assert_spec.rb
470
+ - spec/rattler/parsers/attributed_sequence_spec.rb
336
471
  - spec/rattler/parsers/back_reference_spec.rb
337
472
  - spec/rattler/parsers/choice_spec.rb
338
473
  - spec/rattler/parsers/combinator_parser_spec.rb
339
- - spec/rattler/parsers/direct_action_spec.rb
340
474
  - spec/rattler/parsers/disallow_spec.rb
341
- - spec/rattler/parsers/dispatch_action_spec.rb
342
475
  - spec/rattler/parsers/e_symbol_spec.rb
343
476
  - spec/rattler/parsers/eof_spec.rb
344
477
  - spec/rattler/parsers/fail_spec.rb
478
+ - spec/rattler/parsers/grammar_spec.rb
345
479
  - spec/rattler/parsers/label_spec.rb
346
480
  - spec/rattler/parsers/list_parser_spec.rb
347
481
  - spec/rattler/parsers/match_spec.rb
348
- - spec/rattler/parsers/node_code_spec.rb
349
- - spec/rattler/parsers/parser_dsl_spec.rb
482
+ - spec/rattler/parsers/node_action_spec.rb
483
+ - spec/rattler/parsers/parser_scope_spec.rb
350
484
  - spec/rattler/parsers/repeat_spec.rb
351
485
  - spec/rattler/parsers/rule_set_spec.rb
352
- - spec/rattler/parsers/semantic_assert_spec.rb
353
- - spec/rattler/parsers/semantic_disallow_spec.rb
486
+ - spec/rattler/parsers/semantic_action_spec.rb
354
487
  - spec/rattler/parsers/sequence_spec.rb
355
- - spec/rattler/parsers/side_effect_spec.rb
356
488
  - spec/rattler/parsers/skip_spec.rb
489
+ - spec/rattler/parsers/super_spec.rb
357
490
  - spec/rattler/parsers/token_spec.rb
358
491
  - spec/rattler/runtime/extended_packrat_parser_spec.rb
359
492
  - spec/rattler/runtime/packrat_parser_spec.rb
@@ -371,7 +504,6 @@ files:
371
504
  - spec/support/compiler_spec_helper.rb
372
505
  - spec/support/parser_generator_spec_helper.rb
373
506
  - spec/support/runtime_parser_spec_helper.rb
374
- has_rdoc: true
375
507
  homepage: http://github.com/jarhart/rattler
376
508
  licenses:
377
509
  - MIT
@@ -387,7 +519,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
387
519
  version: '0'
388
520
  segments:
389
521
  - 0
390
- hash: -304185397942742836
522
+ hash: -2385489242425414088
391
523
  required_rubygems_version: !ruby/object:Gem::Requirement
392
524
  none: false
393
525
  requirements:
@@ -396,7 +528,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
396
528
  version: '0'
397
529
  requirements: []
398
530
  rubyforge_project:
399
- rubygems_version: 1.6.2
531
+ rubygems_version: 1.8.24
400
532
  signing_key:
401
533
  specification_version: 3
402
534
  summary: Ruby Tool for Language Recognition
@@ -404,119 +536,131 @@ test_files:
404
536
  - features/command_line/dest_option.feature
405
537
  - features/command_line/lib_option.feature
406
538
  - features/command_line/output_option.feature
407
- - features/command_line/parser_generator.feature
408
- - features/grammar/any_character.feature
409
- - features/grammar/back_reference.feature
410
- - features/grammar/character_class.feature
411
- - features/grammar/comments.feature
412
- - features/grammar/e_symbol.feature
413
- - features/grammar/eof.feature
414
- - features/grammar/fail.feature
415
- - features/grammar/labels.feature
416
- - features/grammar/list_matching.feature
417
- - features/grammar/literal.feature
418
- - features/grammar/negative_lookahead.feature
419
- - features/grammar/negative_semantic_predicate.feature
420
- - features/grammar/node_action.feature
421
- - features/grammar/nonterminal.feature
422
- - features/grammar/one_or_more.feature
423
- - features/grammar/optional.feature
424
- - features/grammar/ordered_choice.feature
425
- - features/grammar/positive_lookahead.feature
426
- - features/grammar/positive_semantic_predicate.feature
427
- - features/grammar/posix_class.feature
428
- - features/grammar/repeat.feature
429
- - features/grammar/sequence.feature
430
- - features/grammar/side_effect.feature
431
- - features/grammar/skip_operator.feature
432
- - features/grammar/start_rule.feature
433
- - features/grammar/symantic_action.feature
434
- - features/grammar/token.feature
435
- - features/grammar/whitespace.feature
436
- - features/grammar/word_literal.feature
437
- - features/grammar/zero_or_more.feature
539
+ - features/command_line/rtlr.feature
540
+ - features/error_reporting/automatic_error_messages.feature
541
+ - features/error_reporting/custom_error_messages.feature
542
+ - features/examples/json_parser.markdown
543
+ - features/extended_matching_syntax/back_reference.feature
544
+ - features/extended_matching_syntax/e_symbol.feature
545
+ - features/extended_matching_syntax/eof.feature
546
+ - features/extended_matching_syntax/fail.feature
547
+ - features/extended_matching_syntax/fragments.feature
548
+ - features/extended_matching_syntax/include.feature
549
+ - features/extended_matching_syntax/list_matching.feature
550
+ - features/extended_matching_syntax/posix_class.feature
551
+ - features/extended_matching_syntax/repeat.feature
552
+ - features/extended_matching_syntax/skip_operator.feature
553
+ - features/extended_matching_syntax/super.feature
554
+ - features/extended_matching_syntax/token.feature
555
+ - features/extended_matching_syntax/whitespace.feature
556
+ - features/extended_matching_syntax/word_literal.feature
557
+ - features/grammar_heading/explicit_start_rule.feature
558
+ - features/grammar_heading/grammar_declaration.feature
559
+ - features/grammar_heading/include.feature
560
+ - features/grammar_heading/require.feature
561
+ - features/peg_syntax/any_character.feature
562
+ - features/peg_syntax/character_class.feature
563
+ - features/peg_syntax/comments.feature
564
+ - features/peg_syntax/literal.feature
565
+ - features/peg_syntax/negative_lookahead.feature
566
+ - features/peg_syntax/nonterminal.feature
567
+ - features/peg_syntax/one_or_more.feature
568
+ - features/peg_syntax/optional.feature
569
+ - features/peg_syntax/ordered_choice.feature
570
+ - features/peg_syntax/positive_lookahead.feature
571
+ - features/peg_syntax/sequence.feature
572
+ - features/peg_syntax/start_rule.feature
573
+ - features/peg_syntax/zero_or_more.feature
574
+ - features/README.markdown
575
+ - features/semantics/labels.feature
576
+ - features/semantics/negative_semantic_predicate.feature
577
+ - features/semantics/node_action.feature
578
+ - features/semantics/positive_semantic_predicate.feature
579
+ - features/semantics/semantic_action.feature
580
+ - features/semantics/semantic_result.feature
581
+ - features/semantics/side_effect.feature
438
582
  - features/step_definitions/cli_steps.rb
439
583
  - features/step_definitions/grammar_steps.rb
440
584
  - features/support/env.rb
441
- - spec/rattler/back_end/assert_compiler_examples.rb
442
- - spec/rattler/back_end/compiler_spec.rb
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
446
- - spec/rattler/back_end/optimizer/flatten_choice_spec.rb
447
- - spec/rattler/back_end/optimizer/flatten_sequence_spec.rb
448
- - spec/rattler/back_end/optimizer/inline_regular_rules_spec.rb
449
- - spec/rattler/back_end/optimizer/join_match_capturing_sequence_spec.rb
450
- - spec/rattler/back_end/optimizer/join_match_choice_spec.rb
451
- - spec/rattler/back_end/optimizer/join_match_matching_sequence_spec.rb
452
- - spec/rattler/back_end/optimizer/join_predicate_bare_match_spec.rb
453
- - spec/rattler/back_end/optimizer/join_predicate_nested_match_spec.rb
454
- - spec/rattler/back_end/optimizer/join_predicate_or_bare_match_spec.rb
455
- - spec/rattler/back_end/optimizer/join_predicate_or_nested_match_spec.rb
456
- - spec/rattler/back_end/optimizer/reduce_repeat_match_spec.rb
457
- - spec/rattler/back_end/optimizer/simplify_redundant_repeat_spec.rb
458
- - spec/rattler/back_end/optimizer/simplify_token_match_spec.rb
459
- - spec/rattler/back_end/optimizer_spec.rb
460
- - spec/rattler/back_end/parser_generator/apply_generator_spec.rb
461
- - spec/rattler/back_end/parser_generator/assert_generator_spec.rb
462
- - spec/rattler/back_end/parser_generator/back_reference_generator_spec.rb
463
- - spec/rattler/back_end/parser_generator/choice_generator_spec.rb
464
- - spec/rattler/back_end/parser_generator/direct_action_generator_spec.rb
465
- - spec/rattler/back_end/parser_generator/disallow_generator_spec.rb
466
- - spec/rattler/back_end/parser_generator/dispatch_action_generator_spec.rb
467
- - spec/rattler/back_end/parser_generator/e_symbol_generator_spec.rb
468
- - spec/rattler/back_end/parser_generator/eof_generator_spec.rb
469
- - spec/rattler/back_end/parser_generator/fail_generator_spec.rb
470
- - spec/rattler/back_end/parser_generator/group_match_generator_spec.rb
471
- - spec/rattler/back_end/parser_generator/group_match_spec.rb
472
- - spec/rattler/back_end/parser_generator/label_generator_spec.rb
473
- - spec/rattler/back_end/parser_generator/list0_generator_examples.rb
474
- - spec/rattler/back_end/parser_generator/list1_generator_examples.rb
475
- - spec/rattler/back_end/parser_generator/list_generator_spec.rb
476
- - spec/rattler/back_end/parser_generator/match_generator_spec.rb
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
480
- - spec/rattler/back_end/parser_generator/rule_generator_spec.rb
481
- - spec/rattler/back_end/parser_generator/rule_set_generator_spec.rb
482
- - spec/rattler/back_end/parser_generator/sequence_generator_spec.rb
483
- - spec/rattler/back_end/parser_generator/skip_generator_spec.rb
484
- - spec/rattler/back_end/parser_generator/token_generator_spec.rb
485
- - spec/rattler/back_end/parser_generator/zero_or_more_generator_examples.rb
486
- - spec/rattler/back_end/ruby_generator_spec.rb
487
- - spec/rattler/back_end/semantic_assert_compiler_examples.rb
488
- - spec/rattler/back_end/semantic_disallow_compiler_examples.rb
489
- - spec/rattler/back_end/shared_compiler_examples.rb
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
493
- - spec/rattler/grammar/analysis_spec.rb
494
- - spec/rattler/grammar/grammar_parser_spec.rb
495
- - spec/rattler/grammar/grammar_spec.rb
585
+ - features/Tutorial.md
586
+ - spec/rattler/compiler/assert_compiler_examples.rb
587
+ - spec/rattler/compiler/attributed_sequence_compiler_examples.rb
588
+ - spec/rattler/compiler/disallow_compiler_examples.rb
589
+ - spec/rattler/compiler/grammar_parser_spec.rb
590
+ - spec/rattler/compiler/optimizer/flatten_choice_spec.rb
591
+ - spec/rattler/compiler/optimizer/flatten_sequence_spec.rb
592
+ - spec/rattler/compiler/optimizer/inline_regular_rules_spec.rb
593
+ - spec/rattler/compiler/optimizer/join_match_capturing_sequence_spec.rb
594
+ - spec/rattler/compiler/optimizer/join_match_choice_spec.rb
595
+ - spec/rattler/compiler/optimizer/join_match_matching_sequence_spec.rb
596
+ - spec/rattler/compiler/optimizer/join_predicate_bare_match_spec.rb
597
+ - spec/rattler/compiler/optimizer/join_predicate_nested_match_spec.rb
598
+ - spec/rattler/compiler/optimizer/join_predicate_or_bare_match_spec.rb
599
+ - spec/rattler/compiler/optimizer/join_predicate_or_nested_match_spec.rb
600
+ - spec/rattler/compiler/optimizer/reduce_repeat_match_spec.rb
601
+ - spec/rattler/compiler/optimizer/remove_meaningless_wrapper_spec.rb
602
+ - spec/rattler/compiler/optimizer/simplify_redundant_repeat_spec.rb
603
+ - spec/rattler/compiler/optimizer/simplify_token_match_spec.rb
604
+ - spec/rattler/compiler/optimizer_spec.rb
605
+ - spec/rattler/compiler/parser_generator/apply_generator_spec.rb
606
+ - spec/rattler/compiler/parser_generator/assert_generator_spec.rb
607
+ - spec/rattler/compiler/parser_generator/attributed_sequence_generator_spec.rb
608
+ - spec/rattler/compiler/parser_generator/back_reference_generator_spec.rb
609
+ - spec/rattler/compiler/parser_generator/choice_generator_spec.rb
610
+ - spec/rattler/compiler/parser_generator/disallow_generator_spec.rb
611
+ - spec/rattler/compiler/parser_generator/e_symbol_generator_spec.rb
612
+ - spec/rattler/compiler/parser_generator/eof_generator_spec.rb
613
+ - spec/rattler/compiler/parser_generator/fail_generator_spec.rb
614
+ - spec/rattler/compiler/parser_generator/grammar_generator_spec.rb
615
+ - spec/rattler/compiler/parser_generator/group_match_generator_spec.rb
616
+ - spec/rattler/compiler/parser_generator/group_match_spec.rb
617
+ - spec/rattler/compiler/parser_generator/label_generator_spec.rb
618
+ - spec/rattler/compiler/parser_generator/list0_generator_examples.rb
619
+ - spec/rattler/compiler/parser_generator/list1_generator_examples.rb
620
+ - spec/rattler/compiler/parser_generator/list_generator_spec.rb
621
+ - spec/rattler/compiler/parser_generator/match_generator_spec.rb
622
+ - spec/rattler/compiler/parser_generator/node_action_generator_spec.rb
623
+ - spec/rattler/compiler/parser_generator/one_or_more_generator_examples.rb
624
+ - spec/rattler/compiler/parser_generator/optional_generator_examples.rb
625
+ - spec/rattler/compiler/parser_generator/repeat_generator_spec.rb
626
+ - spec/rattler/compiler/parser_generator/rule_generator_spec.rb
627
+ - spec/rattler/compiler/parser_generator/rule_set_generator_spec.rb
628
+ - spec/rattler/compiler/parser_generator/semantic_action_generator_spec.rb
629
+ - spec/rattler/compiler/parser_generator/sequence_generator_spec.rb
630
+ - spec/rattler/compiler/parser_generator/skip_generator_spec.rb
631
+ - spec/rattler/compiler/parser_generator/super_generator_spec.rb
632
+ - spec/rattler/compiler/parser_generator/token_generator_spec.rb
633
+ - spec/rattler/compiler/parser_generator/zero_or_more_generator_examples.rb
634
+ - spec/rattler/compiler/ruby_generator_spec.rb
635
+ - spec/rattler/compiler/semantic_action_compiler_examples.rb
636
+ - spec/rattler/compiler/shared_compiler_examples.rb
637
+ - spec/rattler/compiler/skip_compiler_examples.rb
638
+ - spec/rattler/compiler/token_compiler_examples.rb
639
+ - spec/rattler/compiler_spec.rb
496
640
  - spec/rattler/parsers/action_code_spec.rb
641
+ - spec/rattler/parsers/analysis_spec.rb
497
642
  - spec/rattler/parsers/apply_spec.rb
498
643
  - spec/rattler/parsers/assert_spec.rb
644
+ - spec/rattler/parsers/attributed_sequence_spec.rb
499
645
  - spec/rattler/parsers/back_reference_spec.rb
500
646
  - spec/rattler/parsers/choice_spec.rb
501
647
  - spec/rattler/parsers/combinator_parser_spec.rb
502
- - spec/rattler/parsers/direct_action_spec.rb
503
648
  - spec/rattler/parsers/disallow_spec.rb
504
- - spec/rattler/parsers/dispatch_action_spec.rb
505
649
  - spec/rattler/parsers/e_symbol_spec.rb
506
650
  - spec/rattler/parsers/eof_spec.rb
507
651
  - spec/rattler/parsers/fail_spec.rb
652
+ - spec/rattler/parsers/grammar_spec.rb
508
653
  - spec/rattler/parsers/label_spec.rb
509
654
  - spec/rattler/parsers/list_parser_spec.rb
510
655
  - spec/rattler/parsers/match_spec.rb
511
- - spec/rattler/parsers/node_code_spec.rb
512
- - spec/rattler/parsers/parser_dsl_spec.rb
656
+ - spec/rattler/parsers/node_action_spec.rb
657
+ - spec/rattler/parsers/parser_scope_spec.rb
513
658
  - spec/rattler/parsers/repeat_spec.rb
514
659
  - spec/rattler/parsers/rule_set_spec.rb
515
- - spec/rattler/parsers/semantic_assert_spec.rb
516
- - spec/rattler/parsers/semantic_disallow_spec.rb
660
+ - spec/rattler/parsers/semantic_action_spec.rb
517
661
  - spec/rattler/parsers/sequence_spec.rb
518
- - spec/rattler/parsers/side_effect_spec.rb
519
662
  - spec/rattler/parsers/skip_spec.rb
663
+ - spec/rattler/parsers/super_spec.rb
520
664
  - spec/rattler/parsers/token_spec.rb
521
665
  - spec/rattler/runtime/extended_packrat_parser_spec.rb
522
666
  - spec/rattler/runtime/packrat_parser_spec.rb