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,47 @@
1
+ module Antlr4ruby
2
+ class LexerATNConfig < ATNConfig
3
+ def initialize(state: , alt: nil,
4
+ context: nil,
5
+ config: nil,
6
+ executor: nil )
7
+ if alt && context
8
+ # 第一个构造函数
9
+ elsif config && executor
10
+ # 第三个构造函数
11
+ elsif config && context
12
+ # 第四个构造函数
13
+ else
14
+ # 第二个构造函数
15
+ end
16
+ end
17
+
18
+ private
19
+ attr_reader :lexer_action_executor, :passed_through_non_greedy_decision
20
+
21
+ def self.check_non_greedy_decision(source, target)
22
+ return source.passed_through_non_greedy_decision ||
23
+ target.instance_of?(DecisionState) && target.non_greedy
24
+ end
25
+
26
+ public
27
+ def get_lexer_action_executor
28
+ @lexer_action_executor
29
+ end
30
+
31
+ def has_passed_through_non_greedy_decision?
32
+ @passed_through_non_greedy_decision
33
+ end
34
+
35
+ def hash
36
+ # todo
37
+ end
38
+
39
+ def eql?(other)
40
+ # todo
41
+ end
42
+
43
+
44
+
45
+
46
+ end
47
+ end
@@ -0,0 +1,4 @@
1
+ module Antlr4ruby
2
+ class OrderedATNConfigSet < ATNConfigSet
3
+ end
4
+ end
@@ -0,0 +1,29 @@
1
+ module Antlr4ruby
2
+ class ArrayPredictionContext < PredictionContext
3
+
4
+ attr_reader :parents, :return_states
5
+
6
+ def initialize(context: nil, parents:[], return_states: [])
7
+ if context
8
+ parents, return_states = [context.parent], [context.return_state]
9
+ end
10
+ super(calculate_hash_code(parents, return_states))
11
+ @parents, @return_states = parents, return_states
12
+ end
13
+ def is_empty?
14
+ return_states[0] == EMPTY_RETURN_STATE
15
+ end
16
+
17
+ def size
18
+ return_states.length
19
+ end
20
+
21
+ def get_parent(index)
22
+ parents[index]
23
+ end
24
+
25
+ def get_return_state(index)
26
+ return_states[index]
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ module Antlr4ruby
2
+ class EmptyPredictionContext < SingletonPredictionContext
3
+ INSTANCE = EmptyPredictionContext.new
4
+
5
+ def initialize
6
+ super(nil, EMPTY_RETURN_STATE)
7
+ end
8
+
9
+ def is_empty?
10
+ true
11
+ end
12
+
13
+ def size
14
+ 1
15
+ end
16
+
17
+ def get_parent(index)
18
+ nil
19
+ end
20
+
21
+ def get_return_state(index)
22
+ return_state
23
+ end
24
+
25
+ def eql?(other)
26
+ # todo
27
+ end
28
+
29
+ def to_s
30
+ '$'
31
+ end
32
+
33
+
34
+
35
+ end
36
+ end
@@ -0,0 +1,111 @@
1
+ module Antlr4ruby
2
+ # @abstract
3
+ class PredictionContext
4
+
5
+ def initialize(cached_hash_code)
6
+ @cached_hash_code = cached_hash_code
7
+ @id = @@global_node_count
8
+ @@global_node_count += 1
9
+ end
10
+
11
+ private
12
+
13
+ INITIAL_HASH = 1
14
+ @@global_node_count = 0
15
+
16
+ public
17
+
18
+ EMPTY_RETURN_STATE = 2147483647
19
+ attr_reader :id, :cached_hash_code
20
+
21
+ def size
22
+ raise NotImplementedError.new("#{self.class.name}#size is abstract method")
23
+ end
24
+
25
+ def get_parent(index)
26
+ raise NotImplementedError.new("#{self.class.name}#get_parent is abstract method")
27
+ end
28
+
29
+ def get_return_state(index)
30
+ raise NotImplementedError.new("#{self.class.name}#get_return_state is abstract method")
31
+ end
32
+
33
+ def is_empty?
34
+ # todo
35
+ end
36
+
37
+ def has_empty_path?
38
+ # todo
39
+ end
40
+
41
+ def hash
42
+ @cached_hash_code
43
+ end
44
+
45
+ def eql?(other)
46
+ raise NotImplementedError.new("#{self.class.name}#eql? is abstract method")
47
+ end
48
+
49
+ def to_s(recognizer)
50
+ super()
51
+ end
52
+
53
+ class << self
54
+ def from_rule_context(atn, outer_context)
55
+ # todo
56
+ end
57
+
58
+ def merge(a, b, root_is_wildcard, merge_cache)
59
+ # todo
60
+ end
61
+
62
+ def merge_singletons(a, b, root_is_wildcard, merge_cache)
63
+ # todo
64
+ end
65
+
66
+ def merge_root(a, b, root_is_wildcard)
67
+ # todo
68
+ end
69
+
70
+ def merge_arrays(a, b, root_is_wildcard, merge_cache)
71
+ # todo
72
+ end
73
+
74
+ def to_dot_string(context)
75
+ # todo
76
+ end
77
+
78
+ def get_cached_context(context, context_cache, visited)
79
+ # todo
80
+ end
81
+
82
+ def get_all_context_nodes(context)
83
+ # todo
84
+ end
85
+
86
+ def get_all_context_nodes_(context, nodes, visited)
87
+ # todo
88
+ end
89
+
90
+
91
+ protected
92
+ def calculate_empty_hash_code
93
+ # todo
94
+ end
95
+
96
+ def calculate_hash_code(parent: nil, return_state: 0, parents: [], return_states: [])
97
+ # todo
98
+ end
99
+
100
+ def combine_common_parents(parents)
101
+ # todo
102
+ end
103
+
104
+
105
+
106
+ end
107
+
108
+
109
+ end
110
+
111
+ end
@@ -0,0 +1,17 @@
1
+ module Antlr4ruby
2
+ class PredictionContextCache
3
+ attr_reader :cache
4
+
5
+ def add(ctx)
6
+ # todo
7
+ end
8
+
9
+ def get(ctx)
10
+ # todo
11
+ end
12
+
13
+ def size
14
+ cache.length
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,74 @@
1
+ module Antlr4ruby
2
+ # @abstract
3
+ class SemanticContext
4
+ def eval(parser, parser_call_stack)
5
+ raise NotImplementedError "#{self.class.name}#eval is abstract method"
6
+ end
7
+
8
+ def eval_precedence(parser, parser_call_stack)
9
+ self
10
+ end
11
+
12
+ class Empty < SemanticContext
13
+ INSTANCE = Empty.new
14
+ def eval(parser, parser_call_stack)
15
+ false
16
+ end
17
+ end
18
+ class Predicate < SemanticContext
19
+ attr_reader :rule_index, :pred_index, :is_ctx_dependent
20
+
21
+ def initialize(rule_index, pred_index, is_ctx_dependent)
22
+ @rule_index, @pred_index, @is_ctx_dependent = rule_index, pred_index, is_ctx_dependent
23
+ end
24
+
25
+ def eval(parser, parser_call_stack)
26
+ local_ctx = is_ctx_dependent ? parser_call_stack : nil
27
+ parser.sempred(local_ctx, rule_index, pred_index)
28
+ end
29
+
30
+ def hash
31
+ # todo
32
+ end
33
+
34
+ def eql?(other)
35
+ # todo
36
+ end
37
+
38
+ def to_s
39
+ "{#{rule_index}:#{pred_index}}?"
40
+ end
41
+ end
42
+
43
+ class PrecedencePredicate < SemanticContext
44
+ # todo include Comparable
45
+ end
46
+
47
+ class Operator < SemanticContext
48
+ def get_operands
49
+ raise NotImplementedError "#{self.class.name}#get_operands is abstract method"
50
+ end
51
+ end
52
+
53
+ class AND < Operator
54
+ # todo
55
+ end
56
+
57
+ class OR < Operator
58
+ # todo
59
+ end
60
+
61
+ def self.and(a, b)
62
+ # todo
63
+ end
64
+
65
+ def self.or(a, b)
66
+ # todo
67
+ end
68
+
69
+ private
70
+ def filter_precedence_predicates(collection)
71
+ # todo
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,36 @@
1
+ module Antlr4ruby
2
+ class SingletonPredictionContext < PredictionContext
3
+ attr_reader :parent, :return_state
4
+
5
+ def initialize(parent, return_state)
6
+ super(parent ? calculate_hash_code(parent, return_state) : calculate_empty_hash_code)
7
+ @parent, @return_state = parent, return_state
8
+ end
9
+
10
+ def self.create(parent, return_state)
11
+ return EmptyPredictionContext.INSTANCE if return_state == EMPTY_RETURN_STATE && !parent
12
+ SingletonPredictionContext.new(parent, return_state)
13
+ end
14
+
15
+ def get_parent(index)
16
+ parent
17
+ end
18
+
19
+ def get_return_state(index)
20
+ return_state
21
+ end
22
+
23
+ def size
24
+ 1
25
+ end
26
+
27
+ def to_s
28
+ # todo
29
+ end
30
+
31
+ def eql?(other)
32
+ # todo
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ # finished
2
+ # frozen_string_literal: true
3
+
4
+ module Antlr4ruby
5
+ class AcceptStateInfo
6
+
7
+ def initialize(prediction, lexer_action_executor)
8
+ @prediction, @lexer_action_executor = prediction, lexer_action_executor
9
+ end
10
+
11
+ def get_prediction
12
+ @prediction
13
+ end
14
+
15
+ def get_lexer_action_executor
16
+ @lexer_action_executor
17
+ end
18
+
19
+
20
+ private
21
+ attr_reader :prediction, :lexer_action_executor
22
+
23
+
24
+ end
25
+ end
26
+
@@ -0,0 +1,13 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ class AmbiguityInfo < DecisionEventInfo
6
+ attr_accessor :ambig_alts
7
+
8
+ def initialize(decision, configs, ambig_alts, input, start_index, stop_index, full_ctx)
9
+ super(decision, configs, input, start_index, stop_index, full_ctx)
10
+ @ambig_alts = ambig_alts
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,39 @@
1
+ # finished
2
+ # frozen_string_literal: true
3
+
4
+
5
+
6
+ module Antlr4ruby
7
+ class ConflictInfo
8
+
9
+ def initialize(conflicted_alts, exact)
10
+ @conflicted_alts, @exact = conflicted_alts, exact
11
+ end
12
+
13
+ private
14
+ attr_accessor :conflicted_alts, :exact
15
+
16
+ public
17
+ def get_conflicted_alts
18
+ @conflicted_alts
19
+ end
20
+
21
+ def is_exact?
22
+ @exact
23
+ end
24
+
25
+ def eql?(other)
26
+ return true if self.equal?(other)
27
+
28
+ return false unless other.instance_of?(ConflictInfo)
29
+ @exact == other.exact && conflicted_alts.eql?(other.conflicted_alts)
30
+ end
31
+
32
+ def hash
33
+ conflicted_alts.hash
34
+ end
35
+
36
+
37
+ end
38
+ end
39
+
@@ -0,0 +1,10 @@
1
+ # finished
2
+
3
+
4
+ module Antlr4ruby
5
+ class ContextSensitivityInfo < DecisionEventInfo
6
+ def initialize(decision, configs, input, start_index, stop_index)
7
+ super(decision, configs, input, start_index, stop_index, true)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ class DecisionEventInfo
6
+ attr_reader :decision, :configs, :input, :start_index, :stop_index, :full_ctx
7
+
8
+ def initialize(decision, configs, input, start_index, stop_index, full_ctx)
9
+ @decision, @full_ctx, @stop_index, @input, @start_index, @configs =
10
+ decision, full_ctx, stop_index, input, start_index, configs
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,25 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ class DecisionInfo
6
+ attr_reader :decision, :context_sensitivities, :errors, :ambiguities, :predicate_evals
7
+
8
+
9
+ attr_accessor :invocations, :time_in_prediction,
10
+ :sll_total_look, :sll_min_look, :sll_max_look, :sll_max_look_event,
11
+ :ll_total_look, :ll_min_look, :ll_max_look, :ll_max_look_event,
12
+ :sll_atn_transitions, :sll_dfa_transitions, :ll_fallback, :ll_atn_transitions, :ll_dfa_transitions
13
+
14
+ def initialize(decision)
15
+ @decision, @context_sensitivities, @errors, @ambiguities, @predicate_evals = decision, [], [], [], []
16
+ end
17
+
18
+ def to_s
19
+ "{decision=#{decision}, context_sensitivities=#{context_sensitivities.length}, errors=#{errors.length}, ambiguities=#{ambiguities.length}, " +
20
+ "sll_lookahead=#{sll_total_look}, sll_atn_transitions=#{sll_atn_transitions}, sll_dfa_transitions=#{sll_dfa_transitions}, ll_fallback=#{ll_fallback}, " +
21
+ "ll_lookahead=#{ll_total_look}, ll_atn_transitions=#{ll_atn_transitions}}"
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ class ErrorInfo < DecisionEventInfo
5
+ def initialize(decision, configs, input, start_index, stop_index, full_ctx)
6
+ super(decision, configs, input, start_index, stop_index, full_ctx)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class LookaheadEventInfo < DecisionEventInfo
4
+ attr_accessor :predicted_alt
5
+
6
+ def initialize(decision, configs, predicted_alt, input, start_index, stop_index, full_ctx)
7
+ super(decision, configs, input, start_index, stop_index, full_ctx)
8
+ @predicted_alt = predicted_alt
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,18 @@
1
+ module Antlr4ruby
2
+ class ParseInfo
3
+
4
+ def initialize(atn_simulator)
5
+ @atn_simulator = atn_simulator
6
+ end
7
+
8
+ def get_decision_info
9
+ # atn_simulator.get_decision_info todo
10
+ end
11
+
12
+
13
+
14
+
15
+ protected
16
+ attr_reader :atn_simulator
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module Antlr4ruby
2
+ class PredicateEvalInfo < DecisionEventInfo
3
+ end
4
+
5
+ end
@@ -0,0 +1,150 @@
1
+ module Antlr4ruby
2
+ class LexerATNSimulator < ATNSimulator
3
+ MIN_DFA_EDGE = 0
4
+ MAX_DFA_EDGE = 127
5
+
6
+
7
+ def initialize(recognizer, atn, decision_to_dfa, shared_context_cache)
8
+ super(atn, shared_context_cache)
9
+ @decision_to_dfa, @recognizer = decision_to_dfa, recognizer
10
+ end
11
+
12
+
13
+ @@debug = false
14
+ @@dfa_debug = false
15
+
16
+ def self.debug
17
+ @@debug
18
+ end
19
+ # attr_reader :debug, :dfa_debug
20
+ attr_accessor :decision_to_dfa
21
+
22
+ def match(input, mode)
23
+ # todo
24
+ end
25
+
26
+ def reset
27
+ # todo
28
+ end
29
+
30
+ def clear_dfa
31
+ # todo
32
+ end
33
+
34
+ def get_dfa(mode)
35
+ # todo
36
+ end
37
+
38
+ def get_text(input)
39
+ # todo
40
+ end
41
+
42
+ def get_line
43
+ @line
44
+ end
45
+
46
+ def set_line(line)
47
+ @line = line
48
+ end
49
+
50
+ def get_char_position_in_line
51
+ @char_position_in_line
52
+ end
53
+
54
+ def set_char_position_in_line(pos)
55
+ @char_position_in_line = pos
56
+ end
57
+
58
+ def consume(input)
59
+ # todo
60
+ end
61
+
62
+ def get_token_name(t)
63
+ return 'EOF' if t == -1
64
+ [t].pack("U*")
65
+ end
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+ protected
74
+ def match_atn(input)
75
+ # todo
76
+ end
77
+
78
+ def exec_atn(input, ds0)
79
+ # todo
80
+ end
81
+
82
+ def get_existing_target_state(s, t)
83
+ # todo
84
+ end
85
+
86
+ def compute_target_state(input, s, t)
87
+ # todo
88
+ end
89
+
90
+ def fail_or_accept(prev_accept, input, reach, t)
91
+ # todo
92
+ end
93
+
94
+ def get_reachable_config_set(input, closure, reach, t)
95
+ # todo
96
+ end
97
+
98
+ def accept(input, lexer_action_exec, sstart_index, index, line, char_pos)
99
+ # todo
100
+ end
101
+
102
+ def get_reachable_target(trans, t)
103
+ # todo
104
+ end
105
+
106
+ def compute_start_state(input, p)
107
+ # todo
108
+ end
109
+
110
+ def closure(input, config, configs, current_accept_state, speculative, treat_eor_as_epsilon)
111
+ # todo
112
+ end
113
+
114
+ def get_epsilon_target(input, config, t, configs, speculative, treat_eof_as_epsilon)
115
+ # todo
116
+ end
117
+
118
+ def evaluate_predicate(input, rule_index, pred_index, speculative)
119
+ # todo
120
+ end
121
+
122
+ def capture_sim_state(settings, input, dfa_state)
123
+ # todo
124
+ end
125
+
126
+ def add_dfa_edge(from, t, q)
127
+ # todo
128
+ end
129
+
130
+ def add_dfa_state(configs)
131
+ # todo
132
+ end
133
+
134
+ class SimState
135
+ protected
136
+ attr_accessor :index, :line, :char_pos, :dfa_state
137
+ def reset
138
+ @index, @line, @char_pos, @dfa_state =
139
+ -1, 0, -1, nil
140
+ end
141
+
142
+ def initialize
143
+ reset
144
+ end
145
+ end
146
+ attr_reader :recognizer
147
+ attr_accessor :start_index, :line, :char_position_in_line, :mode, :prev_accept
148
+
149
+ end
150
+ end
@@ -0,0 +1,4 @@
1
+ module Antlr4ruby
2
+ class LL1Analyzer
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Antlr4ruby
2
+ class ParserATNSimulator < ATNSimulator
3
+ end
4
+ end