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,5 @@
1
+ module Antlr4ruby
2
+ class PredictionMode
3
+ end
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ module Antlr4ruby
2
+ class ProfilingATNSimulator < ParserATNSimulator
3
+ end
4
+
5
+ end
@@ -0,0 +1,109 @@
1
+ # finished
2
+ require 'antlr4ruby/misc/range_set'
3
+
4
+
5
+ module Antlr4ruby
6
+ # @abstract
7
+ class ATNState
8
+
9
+ protected
10
+ attr_reader :transitions
11
+
12
+ public
13
+
14
+ INITIAL_NUM_TRANSITIONS = 4
15
+ INVALID_TYPE = 0
16
+ BASIC = 1
17
+ RULE_START = 2
18
+ BLOCK_START = 3
19
+ PLUS_BLOCK_START = 4
20
+ STAR_BLOCK_START = 5
21
+ TOKEN_START = 6
22
+ RULE_STOP = 7
23
+ BLOCK_END = 8
24
+ STAR_LOOP_BACK = 9
25
+ STAR_LOOP_ENTRY = 10
26
+ PLUS_LOOP_BACK = 11
27
+ LOOP_END = 12
28
+ INVALID_STATE_NUMBER = -1
29
+
30
+ @@serialization_names = %w[INVALID BASIC RULE_START BLOCK_START PLUS_BLOCK_START STAR_BLOCK_START TOKEN_START RULE_STOP BLOCK_END STAR_LOOP_BACK STAR_LOOP_ENTRY PLUS_LOOP_BACK LOOP_END]
31
+
32
+ attr_accessor :atn, :state_number, :rule_index, :epsilon_only_transitions, :next_token_within_rule
33
+
34
+ def initialize
35
+ @atn, @state_number, @rule_index, @epsilon_only_transitions, @transitions, @next_token_within_rule =
36
+ nil, INVALID_STATE_NUMBER, 0, false, [], RangeSet.new
37
+ end
38
+
39
+ def get_state_type
40
+ raise NotImplementedError.new("#{self.class.name}#get_state_type is abstract method")
41
+ end
42
+
43
+ def get_number_of_transitions
44
+ transitions.length
45
+ end
46
+
47
+ def add_transition(transition, index = transitions.length)
48
+ if transitions.empty?
49
+ @epsilon_only_transitions = transition.is_epsilon?
50
+ elsif epsilon_only_transitions != transition.is_epsilon?
51
+ p "ATN state #{state_number} has both epsilon and non-epsilon transitions."
52
+ @epsilon_only_transitions = false
53
+ end
54
+
55
+ already_present = false
56
+ transitions.each do |t|
57
+ if t.target.state_number == transition.target.state_number
58
+ if t.label && transition.label && t.label.eql?(transition.label)
59
+ already_present = true
60
+ break
61
+ elsif t.is_epsilon? && transition.is_epsilon?
62
+ already_present = true
63
+ break
64
+ end
65
+ end
66
+ end
67
+
68
+ transitions[index] = transition unless already_present
69
+ end
70
+
71
+ def get_transition(i)
72
+ transitions[i]
73
+ end
74
+
75
+ def set_transition(i, transition)
76
+ transitions[i] = transition
77
+ end
78
+
79
+ def remove_transition(i)
80
+ result = transitions[i]
81
+ transitions.delete_at(i)
82
+ result
83
+ end
84
+
85
+ def only_has_epsilon_transitions?
86
+ @epsilon_only_transitions
87
+ end
88
+
89
+ def set_rule_index(rule_index)
90
+ @rule_index = rule_index
91
+ end
92
+
93
+
94
+ def hash
95
+ @state_number
96
+ end
97
+
98
+ def eql?(other)
99
+ return false unless other.instance_of?(ATNState)
100
+ @state_number == other.state_number
101
+ end
102
+
103
+ def to_s
104
+ state_number.to_s
105
+ end
106
+
107
+
108
+ end
109
+ end
@@ -0,0 +1,12 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+
5
+ # @final
6
+ class BasicBlockStartState < BlockStartState
7
+
8
+ def get_state_type
9
+ BLOCK_START
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+
5
+ # @final
6
+ class BasicState < ATNState
7
+ def get_state_type
8
+ BASIC
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,13 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+
5
+ # @final
6
+ class BlockEndState < ATNState
7
+ attr_accessor :start_state
8
+
9
+ def get_state_type
10
+ BLOCK_END
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # finished
2
+ module Antlr4ruby
3
+
4
+ # @abstract
5
+ class BlockStartState < DecisionState
6
+ attr_accessor :end_state
7
+
8
+ # 似乎应该这样
9
+ def get_state_type
10
+ BLOCK_START
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,17 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+
6
+ # @abstract
7
+ class DecisionState < ATNState
8
+ attr_accessor :decision, :non_greedy
9
+
10
+ def initialize
11
+ super
12
+ @decision = -1
13
+ @non_greedy = false
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ # finished
2
+ # frozen_string_literal: true
3
+
4
+
5
+ module Antlr4ruby
6
+ class InvalidState < BasicState
7
+ def get_state_type
8
+ INVALID_STATE_NUMBER
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,14 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ # @final
5
+ class LoopEndState < ATNState
6
+ attr_accessor :loop_back_state
7
+
8
+ def get_state_type
9
+ LOOP_END
10
+ end
11
+
12
+
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ class PlusBlockStartState < BlockStartState
5
+ attr_accessor :loop_back_state
6
+
7
+ def get_state_type
8
+ PLUS_BLOCK_START
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ # @final
4
+ class PlusLoopbackState < DecisionState
5
+
6
+ def get_state_type
7
+ PLUS_LOOP_BACK
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class RuleStartState < ATNState
4
+ attr_accessor :stop_state, :is_left_recursive_rule
5
+
6
+ def get_state_type
7
+ RULE_START
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class RuleStopState < ATNState
4
+ def get_state_type
5
+ RULE_STOP
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,17 @@
1
+ # finished
2
+ # frozen_string_literal: true
3
+
4
+ module Antlr4ruby
5
+ class SimulatorState
6
+ attr_accessor :outer_context, :s0,
7
+ :use_context, :remaining_outer_context
8
+
9
+ def initialize(outer_context, s0, use_context, remaining_outer_context)
10
+ @outer_context, @s0, @use_context, @remaining_outer_context =
11
+ outer_context, s0, use_context, remaining_outer_context
12
+ end
13
+
14
+
15
+ end
16
+ end
17
+
@@ -0,0 +1,8 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class StarBlockStartState < BlockStartState
4
+ def get_state_type
5
+ STAR_BLOCK_START
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ class StarLoopEntryState < DecisionState
6
+ attr_accessor :is_precedence_decision,
7
+ :loop_back_state
8
+
9
+ # @override
10
+ def get_state_type
11
+ STAR_LOOP_ENTRY
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,10 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class StarLoopbackState < ATNState
4
+
5
+ # 删除为使用的方法
6
+ def get_state_type
7
+ STAR_LOOP_BACK
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # finished
2
+ require 'antlr4ruby/atn/state/decision_state'
3
+
4
+ module Antlr4ruby
5
+ class TokensStartState < DecisionState
6
+ def get_state_type
7
+ TOKEN_START
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ # @abstract
6
+ class AbstractPredicateTransition < Transition
7
+ def initialize(target) super(target) end
8
+ end
9
+ end
10
+
11
+
@@ -0,0 +1,36 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ # @final
6
+ class ActionTransition < Transition
7
+ attr_reader :rule_index, :action_index, :is_ctx_dependent
8
+
9
+ def initialize(target,
10
+ rule_index,
11
+ action_index = -1,
12
+ is_ctx_dependent = false)
13
+ super(target)
14
+ @rule_index = rule_index
15
+ @action_index = action_index
16
+ @is_ctx_dependent = is_ctx_dependent
17
+ end
18
+
19
+ def get_serialization_type
20
+ ACTION
21
+ end
22
+
23
+ def is_epsilon?
24
+ true
25
+ end
26
+
27
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
28
+ false
29
+ end
30
+
31
+ def to_s
32
+ "action_#{rule_index}:#{action_index}"
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ # @final
5
+ class AtomTransition < Transition
6
+ attr_reader :atom_label
7
+
8
+ def initialize(target, label)
9
+ super(target)
10
+ @atom_label = label
11
+ end
12
+
13
+ def get_serialization_type
14
+ ATOM
15
+ end
16
+
17
+ def label
18
+ RangeSet.new([atom_label..atom_label])
19
+ end
20
+
21
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
22
+ @atom_label == symbol
23
+ end
24
+
25
+ def to_s
26
+ "#{atom_label}"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ # 从未使用
2
+
3
+ module Antlr4ruby
4
+ # @abstract
5
+ class CodePointTransitions
6
+ end
7
+ end
@@ -0,0 +1,35 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ # @final
6
+ class EpsilonTransition < Transition
7
+
8
+
9
+ def initialize(target, outermost_ret = -1)
10
+ super(target)
11
+ @outermost_precedence_return = outermost_ret
12
+ end
13
+
14
+ private
15
+ attr_reader :outermost_precedence_return
16
+
17
+ public
18
+ def get_serialization_type
19
+ EPSILON
20
+ end
21
+
22
+ def is_epsilon?
23
+ true
24
+ end
25
+
26
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
27
+ false
28
+ end
29
+
30
+ def to_s
31
+ 'epsilon'
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,23 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ # @final
5
+ class NotSetTransition < SetTransition
6
+ def initialize(target, range_set)
7
+ super
8
+ end
9
+
10
+ def get_serialization_type
11
+ NOT_SET
12
+ end
13
+
14
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
15
+ symbol >= min_vocab_symbol && symbol <= max_vocab_symbol && !super(symbol, min_vocab_symbol, max_vocab_symbol)
16
+ end
17
+
18
+ def to_s
19
+ "~#{super}"
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,34 @@
1
+ module Antlr4ruby
2
+ # @final
3
+ class PrecedencePredicateTransition < AbstractPredicateTransition
4
+ attr_reader :precedence
5
+ def initialize(target, precedence)
6
+ super(target)
7
+ @precedence = precedence
8
+ end
9
+
10
+ def get_predicate
11
+ # todo
12
+ end
13
+
14
+ def is_epsilon?
15
+ true
16
+ end
17
+
18
+ def get_serialization_type
19
+ PRECEDENCE
20
+ end
21
+
22
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
23
+ false
24
+ end
25
+
26
+ def to_s
27
+ "#{precedence} >= _p"
28
+ end
29
+
30
+
31
+
32
+
33
+ end
34
+ end
@@ -0,0 +1,29 @@
1
+ module Antlr4ruby
2
+ class PredicateTransition < AbstractPredicateTransition
3
+ attr_reader :rule_index, :pred_index, :is_ctx_dependent
4
+
5
+ def initialize(target, rule_index, pred_index, is_ctx_dependent)
6
+ super(target)
7
+ @rule_index, @pred_index, @is_ctx_dependent = rule_index, pred_index, is_ctx_dependent
8
+ end
9
+
10
+ def get_serialization_type
11
+ PREDICATE
12
+ end
13
+
14
+ def is_epsilon?
15
+ true
16
+ end
17
+
18
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
19
+ false
20
+ end
21
+
22
+ # todo get_predicate
23
+
24
+ def to_s
25
+ "pred_#{rule_index}:#{pred_index}"
26
+ end
27
+ end
28
+
29
+ end
@@ -0,0 +1,30 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ class RangeTransition < Transition
5
+ attr_reader :from, :to
6
+
7
+ def initialize(target, from, to)
8
+ super(target)
9
+ @from, @to = from, to
10
+ end
11
+
12
+ def get_serialization_type
13
+ RANGE
14
+ end
15
+
16
+ def label
17
+ RangeSet.new([from..to])
18
+ end
19
+
20
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
21
+ symbol >= from && symbol <= to
22
+ end
23
+
24
+ def to_s
25
+ "'#{from}..#{to}'"
26
+ end
27
+
28
+
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class RuleTransition < Transition
4
+ attr_reader :rule_index, :precedence
5
+ attr_accessor :follow_state
6
+
7
+ def initialize(rule_start, rule_index, precedence, follow_state)
8
+ super(rule_start)
9
+ @rule_index, @precedence, @follow_state = rule_index, precedence, follow_state
10
+ end
11
+
12
+ def get_serialization_type
13
+ RULE
14
+ end
15
+
16
+ def is_epsilon?
17
+ true
18
+ end
19
+
20
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
21
+ false
22
+ end
23
+
24
+
25
+
26
+
27
+
28
+ end
29
+ end
@@ -0,0 +1,31 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ class SetTransition < Transition
5
+ def initialize(target, range_set)
6
+ super(target)
7
+ range_set = RangeSet.new([0..0]) unless range_set
8
+ @range_set = range_set
9
+ end
10
+
11
+ attr_reader :range_set
12
+
13
+ def get_serialization_type
14
+ SET
15
+ end
16
+
17
+ def label
18
+ @range_set
19
+ end
20
+
21
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
22
+ range_set.include?(symbol)
23
+ end
24
+
25
+ def to_s
26
+ range_set.to_s
27
+ end
28
+
29
+
30
+ end
31
+ end