antlr4ruby 0.1.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 (285) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.standard.yml +3 -0
  4. data/CHANGELOG.md +5 -0
  5. data/CODE_OF_CONDUCT.md +84 -0
  6. data/Gemfile +12 -0
  7. data/Gemfile.lock +65 -0
  8. data/LICENSE +21 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +39 -0
  11. data/Rakefile +10 -0
  12. data/lib/antlr4ruby/atn/action/lexer_action_executor.rb +75 -0
  13. data/lib/antlr4ruby/atn/action/lexer_action_type.rb +6 -0
  14. data/lib/antlr4ruby/atn/action/lexer_channel_action.rb +41 -0
  15. data/lib/antlr4ruby/atn/action/lexer_custom_action.rb +43 -0
  16. data/lib/antlr4ruby/atn/action/lexer_indexed_custom_action.rb +43 -0
  17. data/lib/antlr4ruby/atn/action/lexer_mode_action.rb +45 -0
  18. data/lib/antlr4ruby/atn/action/lexer_more_action.rb +34 -0
  19. data/lib/antlr4ruby/atn/action/lexer_pop_mode_action.rb +32 -0
  20. data/lib/antlr4ruby/atn/action/lexer_push_mode_action.rb +43 -0
  21. data/lib/antlr4ruby/atn/action/lexer_skip_action.rb +33 -0
  22. data/lib/antlr4ruby/atn/action/lexer_type_action.rb +42 -0
  23. data/lib/antlr4ruby/atn/atn.rb +43 -0
  24. data/lib/antlr4ruby/atn/atn_deserialization_options.rb +49 -0
  25. data/lib/antlr4ruby/atn/atn_deserializer.rb +429 -0
  26. data/lib/antlr4ruby/atn/atn_serializer.rb +4 -0
  27. data/lib/antlr4ruby/atn/atn_simulator.rb +36 -0
  28. data/lib/antlr4ruby/atn/atn_type.rb +6 -0
  29. data/lib/antlr4ruby/atn/config/atn_config.rb +46 -0
  30. data/lib/antlr4ruby/atn/config/atn_config_set.rb +5 -0
  31. data/lib/antlr4ruby/atn/config/lexer_atn_config.rb +47 -0
  32. data/lib/antlr4ruby/atn/config/ordered_atn_config_set.rb +4 -0
  33. data/lib/antlr4ruby/atn/context/array_prediction_context.rb +29 -0
  34. data/lib/antlr4ruby/atn/context/empty_prediction_context.rb +36 -0
  35. data/lib/antlr4ruby/atn/context/prediction_context.rb +111 -0
  36. data/lib/antlr4ruby/atn/context/prediction_context_cache.rb +17 -0
  37. data/lib/antlr4ruby/atn/context/semantic_context.rb +74 -0
  38. data/lib/antlr4ruby/atn/context/singleton_prediction_context.rb +36 -0
  39. data/lib/antlr4ruby/atn/info/accept_state_info.rb +26 -0
  40. data/lib/antlr4ruby/atn/info/ambiguity_info.rb +13 -0
  41. data/lib/antlr4ruby/atn/info/conflict_info.rb +39 -0
  42. data/lib/antlr4ruby/atn/info/context_sensitivity_info.rb +10 -0
  43. data/lib/antlr4ruby/atn/info/decision_event_info.rb +14 -0
  44. data/lib/antlr4ruby/atn/info/decision_info.rb +25 -0
  45. data/lib/antlr4ruby/atn/info/error_info.rb +9 -0
  46. data/lib/antlr4ruby/atn/info/lookahead_event_info.rb +12 -0
  47. data/lib/antlr4ruby/atn/info/parse_info.rb +18 -0
  48. data/lib/antlr4ruby/atn/info/predicate_eval_info.rb +5 -0
  49. data/lib/antlr4ruby/atn/lexer_atn_simulator.rb +150 -0
  50. data/lib/antlr4ruby/atn/ll1_analyzer.rb +4 -0
  51. data/lib/antlr4ruby/atn/parser_atn_simulator.rb +4 -0
  52. data/lib/antlr4ruby/atn/prediction_mode.rb +5 -0
  53. data/lib/antlr4ruby/atn/profiling_atn_simulator.rb +5 -0
  54. data/lib/antlr4ruby/atn/state/atn_state.rb +109 -0
  55. data/lib/antlr4ruby/atn/state/basic_block_start_state.rb +12 -0
  56. data/lib/antlr4ruby/atn/state/basic_state.rb +13 -0
  57. data/lib/antlr4ruby/atn/state/block_end_state.rb +13 -0
  58. data/lib/antlr4ruby/atn/state/block_start_state.rb +14 -0
  59. data/lib/antlr4ruby/atn/state/decision_state.rb +17 -0
  60. data/lib/antlr4ruby/atn/state/invalid_state.rb +12 -0
  61. data/lib/antlr4ruby/atn/state/loop_end_state.rb +14 -0
  62. data/lib/antlr4ruby/atn/state/plus_block_start_state.rb +11 -0
  63. data/lib/antlr4ruby/atn/state/plus_loopback_state.rb +10 -0
  64. data/lib/antlr4ruby/atn/state/rule_start_state.rb +10 -0
  65. data/lib/antlr4ruby/atn/state/rule_stop_state.rb +9 -0
  66. data/lib/antlr4ruby/atn/state/simulator_state.rb +17 -0
  67. data/lib/antlr4ruby/atn/state/star_block_start_state.rb +8 -0
  68. data/lib/antlr4ruby/atn/state/star_loop_entry_state.rb +15 -0
  69. data/lib/antlr4ruby/atn/state/star_loopback_state.rb +10 -0
  70. data/lib/antlr4ruby/atn/state/tokens_start_state.rb +10 -0
  71. data/lib/antlr4ruby/atn/transition/abstract_predicate_transition.rb +11 -0
  72. data/lib/antlr4ruby/atn/transition/action_transition.rb +36 -0
  73. data/lib/antlr4ruby/atn/transition/atom_transition.rb +29 -0
  74. data/lib/antlr4ruby/atn/transition/code_point_transitions.rb +7 -0
  75. data/lib/antlr4ruby/atn/transition/epsilon_transition.rb +35 -0
  76. data/lib/antlr4ruby/atn/transition/not_set_transition.rb +23 -0
  77. data/lib/antlr4ruby/atn/transition/precedence_predicate_transition.rb +34 -0
  78. data/lib/antlr4ruby/atn/transition/predicate_transition.rb +29 -0
  79. data/lib/antlr4ruby/atn/transition/range_transition.rb +30 -0
  80. data/lib/antlr4ruby/atn/transition/rule_transition.rb +29 -0
  81. data/lib/antlr4ruby/atn/transition/set_transition.rb +31 -0
  82. data/lib/antlr4ruby/atn/transition/transition.rb +63 -0
  83. data/lib/antlr4ruby/atn/transition/wildcard_transition.rb +21 -0
  84. data/lib/antlr4ruby/bail_error_strategy.rb +28 -0
  85. data/lib/antlr4ruby/base_error_listener.rb +14 -0
  86. data/lib/antlr4ruby/buffered_token_stream.rb +115 -0
  87. data/lib/antlr4ruby/char_streams.rb +34 -0
  88. data/lib/antlr4ruby/code_point_buffer.rb +31 -0
  89. data/lib/antlr4ruby/code_point_char_stream.rb +88 -0
  90. data/lib/antlr4ruby/common_token.rb +113 -0
  91. data/lib/antlr4ruby/common_token_factory.rb +39 -0
  92. data/lib/antlr4ruby/common_token_stream.rb +62 -0
  93. data/lib/antlr4ruby/console_error_listener.rb +10 -0
  94. data/lib/antlr4ruby/default_error_strategy.rb +108 -0
  95. data/lib/antlr4ruby/dfa/dfa.rb +67 -0
  96. data/lib/antlr4ruby/dfa/dfa_serializer.rb +28 -0
  97. data/lib/antlr4ruby/dfa/dfa_state.rb +80 -0
  98. data/lib/antlr4ruby/dfa/lexer_dfa_serializer.rb +12 -0
  99. data/lib/antlr4ruby/diagnostic_error_listener.rb +18 -0
  100. data/lib/antlr4ruby/exception/failed_predicate_exception.rb +27 -0
  101. data/lib/antlr4ruby/exception/input_mismatch_exception.rb +16 -0
  102. data/lib/antlr4ruby/exception/lexer_no_viable_alt_exception.rb +36 -0
  103. data/lib/antlr4ruby/exception/no_viable_alt_exception.rb +29 -0
  104. data/lib/antlr4ruby/exception/parse_cancellation_exception.rb +10 -0
  105. data/lib/antlr4ruby/exception/recognition_exception.rb +55 -0
  106. data/lib/antlr4ruby/int_stream.rb +11 -0
  107. data/lib/antlr4ruby/interpreter_rule_context.rb +19 -0
  108. data/lib/antlr4ruby/lexer.rb +180 -0
  109. data/lib/antlr4ruby/lexer_interpreter.rb +5 -0
  110. data/lib/antlr4ruby/list_token_source.rb +6 -0
  111. data/lib/antlr4ruby/misc/bit_set.rb +9 -0
  112. data/lib/antlr4ruby/misc/double_key_map.rb +28 -0
  113. data/lib/antlr4ruby/misc/integer_stack.rb +9 -0
  114. data/lib/antlr4ruby/misc/murmur_hash.rb +75 -0
  115. data/lib/antlr4ruby/misc/pair.rb +18 -0
  116. data/lib/antlr4ruby/misc/range_set.rb +223 -0
  117. data/lib/antlr4ruby/parser.rb +225 -0
  118. data/lib/antlr4ruby/parser_interpreter.rb +25 -0
  119. data/lib/antlr4ruby/parser_rule_context.rb +161 -0
  120. data/lib/antlr4ruby/proxy_error_listener.rb +33 -0
  121. data/lib/antlr4ruby/recognizer.rb +133 -0
  122. data/lib/antlr4ruby/rule_context.rb +109 -0
  123. data/lib/antlr4ruby/rule_context_with_alt_num.rb +22 -0
  124. data/lib/antlr4ruby/runtime_meta_data.rb +40 -0
  125. data/lib/antlr4ruby/token.rb +10 -0
  126. data/lib/antlr4ruby/token_stream_rewriter.rb +5 -0
  127. data/lib/antlr4ruby/tree/abstract_parse_tree_visitor.rb +56 -0
  128. data/lib/antlr4ruby/tree/error_node.rb +15 -0
  129. data/lib/antlr4ruby/tree/iterative_parse_tree_walker.rb +10 -0
  130. data/lib/antlr4ruby/tree/parse_tree_property.rb +6 -0
  131. data/lib/antlr4ruby/tree/parse_tree_walker.rb +38 -0
  132. data/lib/antlr4ruby/tree/terminal_node.rb +79 -0
  133. data/lib/antlr4ruby/tree/trees.rb +161 -0
  134. data/lib/antlr4ruby/unbuffered_char_stream.rb +7 -0
  135. data/lib/antlr4ruby/unbuffered_token_stream.rb +8 -0
  136. data/lib/antlr4ruby/version.rb +5 -0
  137. data/lib/antlr4ruby/vocabulary.rb +73 -0
  138. data/lib/antlr4ruby.rb +8 -0
  139. data/lib/example/Hello.g4 +9 -0
  140. data/lib/example/hello_lexer.rb +80 -0
  141. data/lib/example/hello_lexer.rbs +37 -0
  142. data/lib/main.rb +14 -0
  143. data/sig/antlr4ruby/antlr_error_listener.rbs +23 -0
  144. data/sig/antlr4ruby/antlr_error_strategy.rbs +13 -0
  145. data/sig/antlr4ruby/atn/action/lexer_action.rbs +10 -0
  146. data/sig/antlr4ruby/atn/action/lexer_action_executor.rbs +22 -0
  147. data/sig/antlr4ruby/atn/action/lexer_action_type.rbs +6 -0
  148. data/sig/antlr4ruby/atn/action/lexer_channel_action.rbs +15 -0
  149. data/sig/antlr4ruby/atn/action/lexer_custom_action.rbs +17 -0
  150. data/sig/antlr4ruby/atn/action/lexer_indexed_custom_action.rbs +19 -0
  151. data/sig/antlr4ruby/atn/action/lexer_mode_action.rbs +16 -0
  152. data/sig/antlr4ruby/atn/action/lexer_more_action.rbs +9 -0
  153. data/sig/antlr4ruby/atn/action/lexer_pop_mode_action.rbs +10 -0
  154. data/sig/antlr4ruby/atn/action/lexer_push_mode_action.rbs +16 -0
  155. data/sig/antlr4ruby/atn/action/lexer_skip_action.rbs +10 -0
  156. data/sig/antlr4ruby/atn/action/lexer_type_action.rbs +12 -0
  157. data/sig/antlr4ruby/atn/atn.rbs +32 -0
  158. data/sig/antlr4ruby/atn/atn_deserialization_options.rbs +27 -0
  159. data/sig/antlr4ruby/atn/atn_deserializer.rbs +26 -0
  160. data/sig/antlr4ruby/atn/atn_serializer.rbs +5 -0
  161. data/sig/antlr4ruby/atn/atn_simulator.rbs +19 -0
  162. data/sig/antlr4ruby/atn/atn_type.rbs +7 -0
  163. data/sig/antlr4ruby/atn/config/atn_config.rbs +21 -0
  164. data/sig/antlr4ruby/atn/config/atn_config_set.rbs +5 -0
  165. data/sig/antlr4ruby/atn/config/lexer_atn_config.rbs +19 -0
  166. data/sig/antlr4ruby/atn/config/ordered_atn_config_set.rbs +5 -0
  167. data/sig/antlr4ruby/atn/context/array_prediction_context.rbs +11 -0
  168. data/sig/antlr4ruby/atn/context/empty_prediction_context.rbs +6 -0
  169. data/sig/antlr4ruby/atn/context/prediction_context.rbs +52 -0
  170. data/sig/antlr4ruby/atn/context/prediction_context_cache.rbs +12 -0
  171. data/sig/antlr4ruby/atn/context/semantic_context.rbs +36 -0
  172. data/sig/antlr4ruby/atn/context/singleton_prediction_context.rbs +11 -0
  173. data/sig/antlr4ruby/atn/info/accept_state_info.rbs +15 -0
  174. data/sig/antlr4ruby/atn/info/ambiguity_info.rbs +8 -0
  175. data/sig/antlr4ruby/atn/info/conflict_info.rbs +16 -0
  176. data/sig/antlr4ruby/atn/info/context_sensitivity_info.rbs +5 -0
  177. data/sig/antlr4ruby/atn/info/decision_event_info.rbs +14 -0
  178. data/sig/antlr4ruby/atn/info/decision_info.rbs +29 -0
  179. data/sig/antlr4ruby/atn/info/error_info.rbs +5 -0
  180. data/sig/antlr4ruby/atn/info/lookahead_event_info.rbs +8 -0
  181. data/sig/antlr4ruby/atn/info/parse_info.rbs +8 -0
  182. data/sig/antlr4ruby/atn/info/predicate_eval_info.rbs +6 -0
  183. data/sig/antlr4ruby/atn/lexer_atn_simulator.rbs +83 -0
  184. data/sig/antlr4ruby/atn/ll1_analyzer.rbs +5 -0
  185. data/sig/antlr4ruby/atn/parser_atn_simulator.rbs +5 -0
  186. data/sig/antlr4ruby/atn/prediction_mode.rbs +6 -0
  187. data/sig/antlr4ruby/atn/profiling_atn_simulator.rbs +6 -0
  188. data/sig/antlr4ruby/atn/state/atn_state.rbs +50 -0
  189. data/sig/antlr4ruby/atn/state/basic_block_start_state.rbs +6 -0
  190. data/sig/antlr4ruby/atn/state/basic_state.rbs +7 -0
  191. data/sig/antlr4ruby/atn/state/block_end_state.rbs +7 -0
  192. data/sig/antlr4ruby/atn/state/block_start_state.rbs +8 -0
  193. data/sig/antlr4ruby/atn/state/decision_state.rbs +14 -0
  194. data/sig/antlr4ruby/atn/state/invalid_state.rbs +7 -0
  195. data/sig/antlr4ruby/atn/state/loop_end_state.rbs +7 -0
  196. data/sig/antlr4ruby/atn/state/plus_block_start_state.rbs +6 -0
  197. data/sig/antlr4ruby/atn/state/plus_loopback_state.rbs +6 -0
  198. data/sig/antlr4ruby/atn/state/rule_start_state.rbs +7 -0
  199. data/sig/antlr4ruby/atn/state/rule_stop_state.rbs +6 -0
  200. data/sig/antlr4ruby/atn/state/simulator_state.rbs +12 -0
  201. data/sig/antlr4ruby/atn/state/star_block_start_state.rbs +6 -0
  202. data/sig/antlr4ruby/atn/state/star_loop_entry_state.rbs +8 -0
  203. data/sig/antlr4ruby/atn/state/star_loopback_state.rbs +5 -0
  204. data/sig/antlr4ruby/atn/state/tokens_start_state.rbs +6 -0
  205. data/sig/antlr4ruby/atn/transition/abstract_predicate_transition.rbs +10 -0
  206. data/sig/antlr4ruby/atn/transition/action_transition.rbs +15 -0
  207. data/sig/antlr4ruby/atn/transition/atom_transition.rbs +10 -0
  208. data/sig/antlr4ruby/atn/transition/code_point_transitions.rbs +5 -0
  209. data/sig/antlr4ruby/atn/transition/epsilon_transition.rbs +12 -0
  210. data/sig/antlr4ruby/atn/transition/not_set_transition.rbs +7 -0
  211. data/sig/antlr4ruby/atn/transition/precedence_predicate_transition.rbs +10 -0
  212. data/sig/antlr4ruby/atn/transition/predicate_transition.rbs +11 -0
  213. data/sig/antlr4ruby/atn/transition/range_transition.rbs +8 -0
  214. data/sig/antlr4ruby/atn/transition/rule_transition.rbs +10 -0
  215. data/sig/antlr4ruby/atn/transition/set_transition.rbs +8 -0
  216. data/sig/antlr4ruby/atn/transition/transition.rbs +40 -0
  217. data/sig/antlr4ruby/atn/transition/wildcard_transition.rbs +5 -0
  218. data/sig/antlr4ruby/bail_error_strategy.rbs +7 -0
  219. data/sig/antlr4ruby/base_error_listener.rbs +6 -0
  220. data/sig/antlr4ruby/buffered_token_stream.rbs +48 -0
  221. data/sig/antlr4ruby/char_stream.rbs +9 -0
  222. data/sig/antlr4ruby/char_streams.rbs +14 -0
  223. data/sig/antlr4ruby/code_point_buffer.rbs +20 -0
  224. data/sig/antlr4ruby/code_point_char_stream.rbs +19 -0
  225. data/sig/antlr4ruby/common_token.rbs +35 -0
  226. data/sig/antlr4ruby/common_token_factory.rbs +12 -0
  227. data/sig/antlr4ruby/common_token_stream.rbs +9 -0
  228. data/sig/antlr4ruby/console_error_listener.rbs +6 -0
  229. data/sig/antlr4ruby/default_error_strategy.rbs +56 -0
  230. data/sig/antlr4ruby/dfa/dfa.rbs +29 -0
  231. data/sig/antlr4ruby/dfa/dfa_serializer.rbs +11 -0
  232. data/sig/antlr4ruby/dfa/dfa_state.rbs +50 -0
  233. data/sig/antlr4ruby/dfa/lexer_dfa_serializer.rbs +5 -0
  234. data/sig/antlr4ruby/diagnostic_error_listener.rbs +10 -0
  235. data/sig/antlr4ruby/exception/failed_predicate_exception.rbs +23 -0
  236. data/sig/antlr4ruby/exception/input_mismatch_exception.rbs +7 -0
  237. data/sig/antlr4ruby/exception/lexer_no_viable_alt_exception.rbs +15 -0
  238. data/sig/antlr4ruby/exception/no_viable_alt_exception.rbs +14 -0
  239. data/sig/antlr4ruby/exception/recognition_exception.rbs +30 -0
  240. data/sig/antlr4ruby/int_stream.rbs +19 -0
  241. data/sig/antlr4ruby/interpreter_rule_context.rbs +6 -0
  242. data/sig/antlr4ruby/lexer.rbs +88 -0
  243. data/sig/antlr4ruby/lexer_interpreter.rbs +5 -0
  244. data/sig/antlr4ruby/list_token_source.rbs +6 -0
  245. data/sig/antlr4ruby/misc/bit_set.rbs +6 -0
  246. data/sig/antlr4ruby/misc/double_key_map.rbs +11 -0
  247. data/sig/antlr4ruby/misc/equality_comparator.rbs +7 -0
  248. data/sig/antlr4ruby/misc/int_set.rbs +29 -0
  249. data/sig/antlr4ruby/misc/integer_stack.rbs +9 -0
  250. data/sig/antlr4ruby/misc/murmur_hash.rbs +13 -0
  251. data/sig/antlr4ruby/misc/pair.rbs +15 -0
  252. data/sig/antlr4ruby/misc/predicate.rbs +7 -0
  253. data/sig/antlr4ruby/misc/range_set.rbs +49 -0
  254. data/sig/antlr4ruby/parser.rbs +109 -0
  255. data/sig/antlr4ruby/parser_interpreter.rbs +24 -0
  256. data/sig/antlr4ruby/parser_rule_context.rbs +53 -0
  257. data/sig/antlr4ruby/proxy_error_listener.rbs +10 -0
  258. data/sig/antlr4ruby/recognizer.rbs +76 -0
  259. data/sig/antlr4ruby/rule_context.rbs +31 -0
  260. data/sig/antlr4ruby/rule_context_with_alt_num.rbs +8 -0
  261. data/sig/antlr4ruby/runtime_meta_data.rbs +12 -0
  262. data/sig/antlr4ruby/token.rbs +26 -0
  263. data/sig/antlr4ruby/token_factory.rbs +10 -0
  264. data/sig/antlr4ruby/token_source.rbs +12 -0
  265. data/sig/antlr4ruby/token_stream.rbs +13 -0
  266. data/sig/antlr4ruby/token_stream_rewriter.rbs +5 -0
  267. data/sig/antlr4ruby/tree/abstract_parse_tree_visitor.rbs +14 -0
  268. data/sig/antlr4ruby/tree/error_node.rbs +13 -0
  269. data/sig/antlr4ruby/tree/iterative_parse_tree_walker.rbs +7 -0
  270. data/sig/antlr4ruby/tree/parse_tree.rbs +21 -0
  271. data/sig/antlr4ruby/tree/parse_tree_listener.rbs +13 -0
  272. data/sig/antlr4ruby/tree/parse_tree_property.rbs +5 -0
  273. data/sig/antlr4ruby/tree/parse_tree_visitor.rbs +12 -0
  274. data/sig/antlr4ruby/tree/parse_tree_walker.rbs +12 -0
  275. data/sig/antlr4ruby/tree/rule_node.rbs +8 -0
  276. data/sig/antlr4ruby/tree/syntax_tree.rbs +8 -0
  277. data/sig/antlr4ruby/tree/terminal_node.rbs +20 -0
  278. data/sig/antlr4ruby/tree/tree.rbs +15 -0
  279. data/sig/antlr4ruby/tree/trees.rbs +32 -0
  280. data/sig/antlr4ruby/unbuffered_char_stream.rbs +6 -0
  281. data/sig/antlr4ruby/unbuffered_token_stream.rbs +6 -0
  282. data/sig/antlr4ruby/vocabulary.rbs +36 -0
  283. data/sig/antlr4ruby/writable_token.rbs +13 -0
  284. data/sig/antlr4ruby.rbs +4 -0
  285. metadata +328 -0
@@ -0,0 +1,108 @@
1
+
2
+ module Antlr4ruby
3
+ class DefaultErrorStrategy
4
+ protected
5
+ attr_accessor :error_recovery_mode, :last_error_index, :last_error_states,
6
+ :next_tokens_context, :next_tokens_state
7
+
8
+ def begin_error_condition(recognizer)
9
+ # todo
10
+ end
11
+
12
+ def end_error_condition(recognizer)
13
+ # todo
14
+ end
15
+
16
+ def report_no_viable_alternative(recognizer, e)
17
+ # todo
18
+ end
19
+
20
+ def report_input_mismatch(recognizer, e)
21
+ # todo
22
+ end
23
+
24
+ def report_failed_predicate(recognizer, e)
25
+ # todo
26
+ end
27
+
28
+ def report_unwanted_token(recognizer)
29
+ # todo
30
+ end
31
+
32
+ def report_missing_token(recognizer)
33
+ # todo
34
+ end
35
+
36
+ def single_token_insertion(recognizer)
37
+ # todo
38
+ end
39
+
40
+ def single_token_deletion(recognizer)
41
+ # todo
42
+ end
43
+
44
+ def get_missing_symbol(recognizer)
45
+ # todo
46
+ end
47
+
48
+ def get_expected_tokens(recognizer)
49
+ # todo
50
+ end
51
+
52
+ def get_token_error_display(token)
53
+ # todo
54
+ end
55
+
56
+ def get_symbol_text(symbol)
57
+ # todo
58
+ end
59
+
60
+ def get_symbol_type(symbol)
61
+ # todo
62
+ end
63
+
64
+ def escape_ws_and_quote(s)
65
+ # todo
66
+ end
67
+
68
+ def get_error_recovery_set(recognizer)
69
+ # todo
70
+ end
71
+
72
+ def consume_until(recognizer, set)
73
+ # todo
74
+ end
75
+
76
+
77
+ public
78
+ # 重载函数
79
+ def reset(recognizer)
80
+ # todo
81
+ end
82
+
83
+ def in_error_recovery_mode(recognizer)
84
+ # todo
85
+ end
86
+
87
+ def report_match(recognizer)
88
+ # todo
89
+ end
90
+ def report_error(recognizer, e)
91
+ # todo
92
+ end
93
+
94
+ def recover(recognizer, e)
95
+ # todo
96
+ end
97
+
98
+ def sync(recognizer)
99
+ # todo
100
+ end
101
+
102
+ def recover_in_line(recognizer)
103
+ # todo
104
+ end
105
+
106
+
107
+ end
108
+ end
@@ -0,0 +1,67 @@
1
+ module Antlr4ruby
2
+ class DFA
3
+ attr_accessor :states,
4
+ :s0,
5
+ :decision,
6
+ :atn_start_state
7
+
8
+ def initialize(atn_start_state, decision = 0)
9
+ super()
10
+ @atn_start_state = atn_start_state
11
+ @decision = decision
12
+
13
+ precedence_dfa = false
14
+ if @atn_start_state.instance_of?(StarLoopEntryState)
15
+ if @atn_start_state.is_precedence_decision
16
+ precedence_dfa = true
17
+
18
+ precedence_state = DFAState.new(ATNConfigSet.new)
19
+ precedence_state.edges = []
20
+ precedence_state.is_accept_state = false
21
+ precedence_state.requires_full_context = false
22
+ @s0 = precedence_state
23
+ end
24
+ end
25
+
26
+ @precedence_dfa = precedence_dfa
27
+
28
+ end
29
+
30
+ def is_precedence_dfa
31
+ @precedence_dfa
32
+ end
33
+
34
+ def get_precedence_start_state(precedence)
35
+ unless is_precedence_dfa
36
+ # todo 抛出一个异常
37
+ end
38
+
39
+ s0.edges[precedence]
40
+ end
41
+
42
+ def set_precedence_start_state(precedence, start_state)
43
+ unless is_precedence_dfa
44
+ # todo 抛出一个异常
45
+ end
46
+
47
+ if precedence < 0
48
+ return
49
+ end
50
+
51
+ if precedence >= s0.edges.length
52
+ # todo 再检查一下 Arrays.copyOf 是什么意思
53
+ s0.edges = Array.slice(0, precedence + 1)
54
+ end
55
+ s0.edges[precedence] = start_state
56
+ end
57
+
58
+ def get_states
59
+ # todo
60
+ end
61
+
62
+ def to_lexer_string
63
+ # todo
64
+ end
65
+ end
66
+ end
67
+
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Antlr4ruby
4
+ # 来一条注释
5
+
6
+ # 注释
7
+ class DFASerializer
8
+
9
+ def initialize(dfa, vocabulary)
10
+ super()
11
+ @dfa = dfa
12
+ @vocabulary = vocabulary
13
+ end
14
+
15
+ def get_edge_label(index)
16
+ @vocabulary.display_name(index - 1)
17
+ end
18
+
19
+ def get_state_string(state)
20
+ # todo
21
+ end
22
+
23
+ # @override
24
+ def to_s
25
+ # todo
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,80 @@
1
+ module Antlr4ruby
2
+
3
+ class DFAState
4
+ INITIAL_NUM_TRANSITIONS = 4
5
+
6
+ INVALID_TYPE = 0
7
+ BASIC = 1
8
+ RULE_START = 2
9
+ BLOCK_START = 3
10
+ PLUS_BLOCK_START = 4
11
+ STAR_BLOCK_START = 5
12
+ TOKEN_START = 6
13
+ RULE_STOP = 7
14
+ BLOCK_END = 8
15
+ STAR_LOOP_BACK = 9
16
+ STAR_LOOP_ENTRY = 10
17
+ PLUS_LOOP_BACK = 11
18
+ LOOP_END = 12
19
+
20
+ attr_accessor :state_number,
21
+ :configs,
22
+ :edges,
23
+ :is_accept_state,
24
+ :prediction,
25
+ :lexer_action_executor,
26
+ :requires_full_context,
27
+ :predicates
28
+
29
+ class PredPrediction
30
+ def initialize(pred, alt)
31
+ @alt = alt
32
+ @pred = pred
33
+ end
34
+
35
+ def to_s
36
+ # todo
37
+ end
38
+ end
39
+
40
+ def initialize(configs)
41
+ @configs = ATNConfigSet.new
42
+ @state_number = -1
43
+ @edges = []
44
+ @is_accept_state = false
45
+ @prediction = 0
46
+ @predicates = []
47
+
48
+ if configs
49
+ if configs.instance_of?(Integer)
50
+ @state_number = configs
51
+ elsif configs.instance_of?(ATNConfigSet)
52
+ @configs = configs
53
+ end
54
+ end
55
+ end
56
+
57
+ def get_alt_set
58
+ alts = Set.new
59
+ if @configs
60
+ # todo
61
+ end
62
+ if alts.empty?
63
+ return nil
64
+ end
65
+ alts
66
+ end
67
+
68
+ def hash
69
+ # todo
70
+ end
71
+
72
+ def eql?(other)
73
+ # todo
74
+ end
75
+
76
+ def to_s
77
+ # todo
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,12 @@
1
+ module Antlr4ruby
2
+ class LexerDFASerializer < DFASerializer
3
+ def initialize(dfa)
4
+ super(dfa, Vocabulary::EMPTY_VOCABULARY)
5
+ end
6
+
7
+ # @override
8
+ def get_edge_label(index)
9
+ # todo
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+
2
+ module Antlr4ruby
3
+ class DiagnosticErrorListener < BaseErrorListener
4
+
5
+ def initialize(exact_only = true) @exact_only = exact_only; end
6
+
7
+
8
+ protected
9
+ attr_reader :exact_only
10
+ def get_decision_description(recognizer, dfa)
11
+ # todo
12
+ end
13
+
14
+ def get_conflicting_alts(reported_alts, configs)
15
+ # todo
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,27 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class FailedPredicateException < RecognitionException
4
+
5
+ def initialize(recognizer, predicate, message)
6
+ super(recognizer, recognizer.get_input_stream, recognizer.ctx, message || "failed predicate: #{predicate}")
7
+ end
8
+
9
+ private
10
+ attr_reader :rule_index, :predicate_index, :predicate
11
+
12
+
13
+ public
14
+ def get_rule_index
15
+ @rule_index
16
+ end
17
+
18
+ def get_pred_index
19
+ @predicate_index
20
+ end
21
+
22
+ def get_predicate
23
+ @predicate
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ class InputMismatchException < RecognitionException
6
+
7
+ def initialize(recognizer, state, ctx)
8
+ ctx = recognizer.ctx unless ctx
9
+ super(recognizer, recognizer.get_input_stream, ctx)
10
+ set_offending_state(state) if state
11
+ set_offending_token(recognizer.get_current_token)
12
+ end
13
+
14
+
15
+ end
16
+ end
@@ -0,0 +1,36 @@
1
+ # finished
2
+ # 已完成
3
+ module Antlr4ruby
4
+ class LexerNoViableAltException < RecognitionException
5
+ def initialize(lexer, input, start_index, dead_end_configs)
6
+ super(lexer, input, nil )
7
+ @start_index, @dead_end_configs = start_index, dead_end_configs
8
+ end
9
+
10
+ private
11
+ attr_reader :start_index, :dead_end_configs
12
+
13
+ public
14
+ def get_dead_end_configs
15
+ @dead_end_configs
16
+ end
17
+
18
+ def get_start_index
19
+ @start_index
20
+ end
21
+
22
+ def get_input_stream
23
+ super
24
+ end
25
+
26
+ def to_s
27
+ symbol = ''
28
+ if start_index >= 0 && start_index < get_input_stream.size
29
+ symbol = get_input_stream.get_text(start_index..start_index)
30
+ end
31
+ "#{self.class.name}(#{symbol})"
32
+ end
33
+
34
+
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ class NoViableAltException < RecognitionException
6
+
7
+ def initialize(recognizer, input, start,
8
+ offsending, dead_end_configs, ctx)
9
+ ctx = ctx || recognizer.ctx
10
+ input = input || recognizer.get_input_stream
11
+ super(recognizer, input, ctx)
12
+ set_offending_token(offsending || recognizer.get_current_token)
13
+ @start_token = start || recognizer.get_current_token
14
+ @dead_end_configs = dead_end_configs
15
+ end
16
+
17
+ private
18
+ attr_reader :dead_end_configs, :start_token
19
+
20
+ public
21
+ def get_start_token
22
+ @start_token
23
+ end
24
+
25
+ def get_dead_end_configs
26
+ @dead_end_configs
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Antlr4ruby
4
+ class ParseCancellationException < RuntimeError
5
+ def initialize(msg = "ParseCancellationException")
6
+ super
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,55 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ class RecognitionException < RuntimeError
5
+
6
+ def initialize(recognizer, input, ctx, msg="RecognitionException")
7
+ super(msg)
8
+ @recognizer, @input, @ctx = recognizer, input, ctx
9
+ if recognizer
10
+ @offending_state = recognizer.get_state
11
+ else
12
+ @offending_state = -1
13
+ end
14
+ end
15
+
16
+ private
17
+ attr_reader :recognizer, :ctx, :input
18
+ attr_accessor :offending_token, :offending_state
19
+
20
+ public
21
+ def get_offending_state
22
+ @offending_state
23
+ end
24
+
25
+ def set_offending_state(offending_state)
26
+ @offending_state = offending_state
27
+ end
28
+
29
+ def get_expected_tokens
30
+ return RangeSet.new unless recognizer
31
+ recognizer.get_atn.get_expected_tokens(offending_state, ctx)
32
+ end
33
+
34
+ def get_ctx
35
+ @ctx
36
+ end
37
+
38
+ def get_input_stream
39
+ @input
40
+ end
41
+
42
+ def get_offending_token
43
+ @offending_token
44
+ end
45
+
46
+ def set_offending_token(token)
47
+ @offending_token = token
48
+ end
49
+
50
+ def get_recognizer
51
+ @recognizer
52
+ end
53
+
54
+ end
55
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+
4
+ module Antlr4ruby
5
+ module IntStream
6
+ EOF = -1
7
+ UNKNOWN_SOURCE_NAME = '<unknown>'
8
+ end
9
+ end
10
+
11
+
@@ -0,0 +1,19 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+ class InterpreterRuleContext < ParserRuleContext
5
+
6
+ def initialize(parent = nil, invoking_state = -1, rule_index = -1)
7
+ super(parent, invoking_state)
8
+ @rule_index = rule_index
9
+ end
10
+
11
+ def get_rule_index
12
+ @rule_index
13
+ end
14
+
15
+ protected
16
+ attr_accessor :rule_index
17
+
18
+ end
19
+ end
@@ -0,0 +1,180 @@
1
+ require 'antlr4ruby/recognizer'
2
+ require 'antlr4ruby/token'
3
+
4
+
5
+ module Antlr4ruby
6
+ # @abstract
7
+ class Lexer < Recognizer
8
+ DEFAULT_MODE = 0
9
+ MORE = -2
10
+ SKIP = -3
11
+ DEFAULT_TOKEN_CHANNEL = Token::DEFAULT_CHANNEL
12
+ HIDDEN = Token::HIDDEN_CHANNEL
13
+ MIN_CHAR_VALUE = 0x0000
14
+ MAX_CHAR_VALUE = 0x10ffff
15
+
16
+
17
+ attr_accessor :input, :token, :token_start_char_index,
18
+ :token_start_line, :hit_eof, :channel,
19
+ :type, :mode_stack, :mode, :text
20
+
21
+ def initialize(input)
22
+ super()
23
+ @token_start_char_index = -1
24
+ @mode = Lexer.DEFAULT_MODE
25
+ @mode_stack = IntegerStack.new
26
+ if input
27
+ @input = input
28
+ @token_factory_source_pair = Pair.new(self, input)
29
+ end
30
+ end
31
+
32
+
33
+ protected
34
+ attr_accessor :token_factory_source_pair, :factory
35
+
36
+ public
37
+ def reset
38
+ # todo
39
+ end
40
+
41
+ def skip
42
+ @type = SKIP
43
+ end
44
+
45
+ def more
46
+ @type = more
47
+ end
48
+
49
+ # 不能定义 mode 函数,会覆盖掉 attr_accessor
50
+ # def mode(m)
51
+ # @mode = m
52
+ # end
53
+
54
+ def pop_mode
55
+ # todo
56
+ end
57
+
58
+ def push_mode(m)
59
+ p "push_mode #{m}" if LexerATNSimulator.debug
60
+ # todo
61
+ end
62
+
63
+ def emit(token)
64
+ # todo
65
+ end
66
+
67
+ def emit_eof
68
+ # todo
69
+ end
70
+
71
+ def set_line(line)
72
+ # todo
73
+ end
74
+
75
+ def set_char_position_in_line(position)
76
+ # todo
77
+ end
78
+
79
+ def get_char_index
80
+ # todo
81
+ end
82
+
83
+ def get_text
84
+ # todo
85
+ end
86
+
87
+ def set_text(text)
88
+ @text = text
89
+ end
90
+
91
+ def get_token
92
+ @token
93
+ end
94
+
95
+ def set_token(token)
96
+ @token = token
97
+ end
98
+
99
+ def set_type(token_type)
100
+ @type = token_type
101
+ end
102
+
103
+ def get_type
104
+ @type
105
+ end
106
+
107
+ def set_channel(channel)
108
+ @channel = channel
109
+ end
110
+
111
+ def get_channel
112
+ @channel
113
+ end
114
+
115
+ def get_channel_names
116
+ []
117
+ end
118
+
119
+ def get_mode_names
120
+ []
121
+ end
122
+
123
+ def get_all_tokens
124
+ # todo
125
+ end
126
+
127
+ def recover(e)
128
+ # todo
129
+ end
130
+
131
+ def notify_listeners(e)
132
+ # todo
133
+ end
134
+
135
+ def get_error_display(s)
136
+ # todo
137
+ end
138
+
139
+ def get_char_error_display(c)
140
+ # todo
141
+ end
142
+
143
+
144
+ def next_token
145
+ # todo
146
+ end
147
+
148
+ def set_token_factory(factory)
149
+ # todo
150
+ end
151
+
152
+ def get_token_factory
153
+ # todo
154
+ end
155
+
156
+ def set_input_stream(input)
157
+ # todo
158
+ end
159
+
160
+ def get_source_name
161
+ # todo
162
+ end
163
+
164
+ def get_input_stream
165
+ # todo
166
+ end
167
+
168
+ def get_line
169
+ # todo
170
+ end
171
+
172
+ def get_char_position_in_line
173
+ # todo
174
+ end
175
+
176
+
177
+
178
+
179
+ end
180
+ end
@@ -0,0 +1,5 @@
1
+
2
+ module Antlr4ruby
3
+ class LexerInterpreter < Lexer
4
+ end
5
+ end