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,161 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+ class ParserRuleContext < RuleContext
5
+ EMPTY = ParserRuleContext.new(nil, -1)
6
+
7
+ attr_accessor :children,
8
+ :start, :stop,
9
+ :exception
10
+
11
+ def initialize(parent = nil, invoking_state = -1)
12
+ super(parent, invoking_state)
13
+ end
14
+
15
+ def copy_from(ctx)
16
+ @parent = ctx.parent
17
+ @invoking_state = ctx.invoking_state
18
+
19
+ @start = ctx.start
20
+ @stop = ctx.stop
21
+
22
+ if ctx.children
23
+ self.children = []
24
+ ctx.children.each do |child|
25
+ if child.instance_of?(ErrorNode)
26
+ add_child(child)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def enter_rule(listener) end
33
+
34
+ def exit_rule(listener) end
35
+
36
+ def add_child(rule_invocation)
37
+ if rule_invocation.instance_of?(TerminalNode)
38
+ rule_invocation.set_parent(self)
39
+ end
40
+ add_any_child(rule_invocation)
41
+ end
42
+
43
+ def add_error_node(error_node)
44
+ error_node.set_parent(self)
45
+ add_any_child(error_node)
46
+ end
47
+
48
+ def add_any_child(t)
49
+ unless @children
50
+ @children = []
51
+ end
52
+ @children.push(t)
53
+ t
54
+ end
55
+
56
+ def remove_last_child
57
+ if @children
58
+ @children.pop
59
+ end
60
+ end
61
+
62
+ # @override
63
+ def get_parent
64
+ # 这里会有一个警告,好像没什么办法强制类型转换
65
+ super
66
+ end
67
+
68
+ # @override
69
+ def get_child(i, context_type)
70
+ @children[i] unless context_type
71
+ arr = []
72
+ children.each do |child|
73
+ arr.push(child) if child.instance_of?(context_type)
74
+ end
75
+ arr[i]
76
+ end
77
+
78
+ def get_rule_context(context_type, i)
79
+ get_child(i, context_type)
80
+ end
81
+
82
+ def get_rule_contexts(context_type)
83
+ result = []
84
+ return result unless children
85
+
86
+ children.each do |child|
87
+ result.push(child) if child.instance_of?(context_type)
88
+ end
89
+ result
90
+ end
91
+
92
+ def get_token(token_type, i)
93
+ if !@children || i < 0 || i >= @children.length
94
+ return nil
95
+ end
96
+
97
+ j = -1
98
+ @children.each do |o|
99
+ if o.instance_of?(TerminalNode)
100
+ node = o
101
+ symbol = node.get_symbol
102
+ if symbol.get_type == token_type
103
+ j += 1
104
+ if j == i
105
+ return node
106
+ end
107
+ end
108
+ end
109
+ end
110
+
111
+ nil
112
+ end
113
+
114
+ def get_tokens(token_type)
115
+ unless children
116
+ return []
117
+ end
118
+ tokens = []
119
+ children.each do |child|
120
+ if child.instance_of?(TerminalNode)
121
+ node = child
122
+ symbol = node.get_symbol
123
+ if symbol.get_type == token_type
124
+ tokens.push(node)
125
+ end
126
+ end
127
+ end
128
+ tokens
129
+ end
130
+
131
+ # @override
132
+ def get_child_count
133
+ @children.length || 0
134
+ end
135
+
136
+ # @override
137
+ def get_source_interval
138
+ unless @start
139
+ return (-1)..(-2)
140
+ end
141
+ if !@stop || stop.get_token_index < start.get_token_index
142
+ return start.get_token_index...stop.get_token_index
143
+ end
144
+ start.get_token_index..stop.get_token_index
145
+ end
146
+
147
+ def get_start
148
+ @start
149
+ end
150
+
151
+ def get_stop
152
+ @stop
153
+ end
154
+
155
+ def to_info_string(recognizer)
156
+ rules = recognizer.get_rule_invocation_stack(self)
157
+ rules.reverse!
158
+ "parser_rule_context#{rules}{start=#{start}, stop=#{stop}}"
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,33 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+ class ProxyErrorListener
5
+ def initialize(delegates)
6
+ super()
7
+ @delegates = delegates
8
+ end
9
+
10
+ private
11
+
12
+ attr_reader :delegates
13
+
14
+ public
15
+ def syntax_error(recognizer, offending_symbol, line, position, msg, e)
16
+ delegates.each { |listener| listener.syntax_error(recognizer, offending_symbol, line, position, msg, e) }
17
+ end
18
+
19
+ def report_ambiguity(recognizer, dfa, start_index, stop_index, exact, ambig_alts, configs)
20
+ delegates.each { |listener| listener.report_ambiguity(recognizer, dfa, start_index, stop_index, exact, ambig_alts, configs) }
21
+ end
22
+
23
+ def report_attempting_full_context(recognizer, dfa, start_index,
24
+ stop_index, conflicting_alts, configs)
25
+ delegates.each { |listener| listener.report_attempting_full_context(recognizer, dfa, start_index, stop_index, conflicting_alts, configs) }
26
+ end
27
+
28
+ def report_context_sensitivity(recognizer, dfa, start_index, stop_index, prediction, configs)
29
+ delegates.each { |listener| listener.report_context_sensitivity(recognizer, dfa, start_index, stop_index, prediction, configs) }
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,133 @@
1
+
2
+ module Antlr4ruby
3
+ # @abstract
4
+ class Recognizer
5
+ EOF = -1
6
+
7
+ def initialize
8
+ super()
9
+
10
+ @listeners = [ConsoleErrorListener.INSTANCE]
11
+ @state_number = -1
12
+ end
13
+
14
+
15
+ private
16
+ @@token_type_map_cache = {}
17
+ @@rule_index_map_cache = {}
18
+ attr_accessor :listeners, :state_number
19
+
20
+ protected
21
+ attr_accessor :interpreter
22
+
23
+ public
24
+ def get_rule_names
25
+ # todo 抛出异常
26
+ end
27
+
28
+ def get_token_names
29
+ # todo 抛出异常
30
+ end
31
+
32
+ def get_vocabulary
33
+ # todo
34
+ Vocabulary.from_token_names(get_token_names)
35
+ end
36
+
37
+ def get_token_type_map
38
+ # todo
39
+ end
40
+
41
+ def get_rule_index_map
42
+ # todo
43
+ end
44
+
45
+ def get_token_type(token_name)
46
+ # todo
47
+ end
48
+
49
+ def get_serialized_atn
50
+ # todo
51
+ end
52
+
53
+ # @abstract
54
+ def get_grammar_file_name
55
+ # todo 抛出异常
56
+ end
57
+
58
+ # @abstract
59
+ def get_atn
60
+ # todo 抛出异常
61
+ end
62
+
63
+ def get_interpreter
64
+ @interpreter
65
+ end
66
+
67
+ def get_parse_info
68
+ nil
69
+ end
70
+
71
+ def set_interpreter(interpreter)
72
+ @interpreter = interpreter
73
+ end
74
+
75
+ def get_error_header(e)
76
+ # todo
77
+ end
78
+
79
+ def add_error_listener(listener)
80
+ listeners.push(listener)
81
+ end
82
+
83
+ def remove_error_listener(listener)
84
+ listeners.delete(listener)
85
+ end
86
+
87
+ def remove_error_listeners
88
+ listeners.clear
89
+ end
90
+
91
+ def get_error_listeners
92
+ listeners
93
+ end
94
+
95
+ def get_error_listener_dispatch
96
+ ProxyErrorListener.new(get_error_listeners)
97
+ end
98
+
99
+ def sempred(localctx, rule_index, action_index) true; end
100
+
101
+ def precpred(localctx, precedence) true; end
102
+
103
+ def action(localctx, rule_index, action_index) end
104
+
105
+ def get_state
106
+ @state_number
107
+ end
108
+
109
+ def set_state(atn_state) @state_number = atn_state; end
110
+
111
+ # @abstract
112
+ def get_input_stream
113
+ # todo 抛出异常
114
+ end
115
+
116
+ # @abstract
117
+ def set_input_stream(input)
118
+ # todo 抛出异常
119
+ end
120
+
121
+ # @abstract
122
+ def get_token_factory
123
+ # todo 抛出异常
124
+ end
125
+
126
+ # @abstract
127
+ def set_token_factory(factory)
128
+ # todo 抛出异常
129
+ end
130
+
131
+
132
+ end
133
+ end
@@ -0,0 +1,109 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+ class RuleContext
5
+ attr_accessor :parent, :invoking_state
6
+
7
+ def initialize(parent = nil, invoking_state = -1)
8
+ super()
9
+ @parent, @invoking_state = parent, invoking_state
10
+ end
11
+
12
+ def depth
13
+ n = 0
14
+ p = self
15
+ while p
16
+ p = p.parent
17
+ n += 1
18
+ end
19
+ n
20
+ end
21
+
22
+ def is_empty?
23
+ @invoking_state == -1
24
+ end
25
+
26
+ # @override
27
+ def get_source_interval
28
+ (-1)..(-2)
29
+ end
30
+
31
+ # @override
32
+ def get_rule_context
33
+ self
34
+ end
35
+
36
+ # @override
37
+ def get_parent
38
+ @parent
39
+ end
40
+
41
+ # @override
42
+ def get_payload
43
+ self
44
+ end
45
+
46
+ # @override
47
+ def get_text
48
+ return '' if get_child_count == 0
49
+
50
+ result = ''
51
+ get_child_count.times do |i|
52
+ child = get_child(i)
53
+ result += child.get_text if child
54
+ end
55
+ result
56
+ end
57
+
58
+ def get_rule_index
59
+ -1
60
+ end
61
+
62
+ def get_alt_number
63
+ ATN.INVALID_ALT_NUMBER
64
+ end
65
+
66
+ def set_alt_number(alt_number) end
67
+
68
+ # @override
69
+ def set_parent(parent)
70
+ @parent = parent
71
+ end
72
+
73
+ # @override
74
+ def get_child(i) nil; end
75
+
76
+ # @override
77
+ def get_child_count
78
+ 0
79
+ end
80
+
81
+ # @override
82
+ def accept(visitor)
83
+ visitor.visit_children(self)
84
+ end
85
+
86
+ def to_string_tree(recognizer:nil, rule_names: [])
87
+ Trees.to_string_tree(self, recognizer:recognizer, rule_names: rule_names)
88
+ end
89
+
90
+ def to_s(recognizer:nil , rule_names:[], stop:nil )
91
+ # 多余的形式舍弃掉
92
+ rule_names = recognizer.get_rule_names if recognizer
93
+ p = self
94
+ result = ''
95
+ while p && !p.equal?(stop)
96
+ rule_index = p.get_rule_index
97
+ rule_name = rule_names[rule_index] || rule_index.to_s
98
+ result += rule_name + ' '
99
+ p = p.parent
100
+ end
101
+ result
102
+ end
103
+
104
+ def enter_rule(listener) end
105
+
106
+ def exit_rule(listener) end
107
+
108
+ end
109
+ end
@@ -0,0 +1,22 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+ class RuleContextWithAltNum < ParserRuleContext
5
+ attr_accessor :alt_num
6
+
7
+ def initialize(parent, invoking_state)
8
+ super(parent, invoking_state)
9
+ @alt_num = ATN.INVALID_ALT_NUMBER
10
+ end
11
+
12
+ def get_alt_number
13
+ @alt_num
14
+ end
15
+
16
+ def set_alt_number(alt_number)
17
+ @alt_num = alt_number
18
+ end
19
+
20
+
21
+ end
22
+ end
@@ -0,0 +1,40 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+ class RuntimeMetaData
5
+ VERSION = "4.11.1"
6
+
7
+ def self.get_runtime_version
8
+ VERSION
9
+ end
10
+
11
+ def self.check_version(tool_version, compile_time_version)
12
+ runtime_version = VERSION
13
+ conflicts_with_tool = false
14
+ conflicts_with_compile = false
15
+
16
+ if tool_version
17
+ conflicts_with_tool = !runtime_version.eql?(tool_version) &&
18
+ !get_major_minor_version(runtime_version).eql?(get_major_minor_version(tool_version))
19
+ end
20
+
21
+ conflicts_with_compile =
22
+ !runtime_version.eql?(compile_time_version) &&
23
+ !get_major_minor_version(runtime_version).eql?(get_major_minor_version(compile_time_version))
24
+
25
+ if conflicts_with_tool
26
+ print "ANTLR Tool version #{tool_version} used for code generation does not match the current runtime version #{runtime_version}"
27
+ end
28
+
29
+ if conflicts_with_compile
30
+ print "ANTLR Runtime version #{compile_time_version} used for parser compilation does not match the current runtime version #{runtime_version}"
31
+ end
32
+ end
33
+
34
+ def self.get_major_minor_version(version)
35
+ # 懒得解析了
36
+ version
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,10 @@
1
+ module Antlr4ruby
2
+ module Token
3
+ INVALID_TYPE = 0; EPSILON = -2; MIN_USER_TOKEN_TYPE = 1
4
+ EOF = -1 # IntStream.EOF
5
+ DEFAULT_CHANNEL = 0
6
+ HIDDEN_CHANNEL = 1
7
+ MIN_USER_CHANNEL_VALUE = 2
8
+ end
9
+ end
10
+
@@ -0,0 +1,5 @@
1
+
2
+ module Antlr4ruby
3
+ class TokenStreamRewriter
4
+ end
5
+ end
@@ -0,0 +1,56 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+
5
+ # @abstract
6
+ class AbstractParseTreeVisitor
7
+ # @override
8
+ def visit(tree)
9
+ tree.accept(self)
10
+ end
11
+
12
+ # @override
13
+ def visit_children(node)
14
+ result = default_result
15
+ n = node.get_child_count
16
+ n.times do |i|
17
+ unless should_visit_next_child(node, result)
18
+ break
19
+ end
20
+
21
+ child = node.get_child(i)
22
+ if child
23
+ child_result = child.accept(self)
24
+ result = aggregate_result(result, child_result)
25
+ end
26
+ end
27
+
28
+ result
29
+ end
30
+
31
+ # @!override
32
+ def visit_terminal(_node)
33
+ default_result
34
+ end
35
+
36
+ def visit_error_node(_node)
37
+ default_result
38
+ end
39
+
40
+ protected
41
+
42
+ def default_result
43
+ nil
44
+ end
45
+
46
+ def aggregate_result(_aggregate, next_result)
47
+ next_result
48
+ end
49
+
50
+ def should_visit_next_child(_node, _current_result)
51
+ true
52
+ end
53
+ end
54
+ end
55
+
56
+
@@ -0,0 +1,15 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+
5
+ class ErrorNode < TerminalNode
6
+ def initialize(token)
7
+ super(token)
8
+ end
9
+
10
+ # @override
11
+ def accept(visitor)
12
+ visitor.visit_error_node(self)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ module Antlr4ruby
2
+
3
+ class IterativeParseTreeWalker < ParseTreeWalker
4
+ def walk(listener, tree)
5
+ # todo
6
+ end
7
+ end
8
+ end
9
+
10
+
@@ -0,0 +1,6 @@
1
+ module Antlr4ruby
2
+
3
+ class ParseTreeProperty
4
+ # todo
5
+ end
6
+ end
@@ -0,0 +1,38 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+
5
+ class ParseTreeWalker
6
+ DEFAULT = ParseTreeWalker.new
7
+
8
+ def walk(listener, tree)
9
+ if tree.instance_of?(ErrorNode)
10
+ listener.visit_error_node(tree)
11
+ return
12
+ elsif tree.instance_of?(TerminalNode)
13
+ listener.visit_terminal(tree)
14
+ return
15
+ end
16
+ enter_rule(listener, tree)
17
+ n = tree.get_child_count
18
+ n.times do |i|
19
+ walk(listener, tree.get_child(i))
20
+ end
21
+ exit_rule(listener, tree)
22
+ end
23
+
24
+ protected
25
+
26
+ def enter_rule(listener, rule)
27
+ ctx = rule.get_rule_context
28
+ listener.enter_every_rule(ctx)
29
+ ctx.enter_rule(listener)
30
+ end
31
+
32
+ def exit_rule(listener, rule)
33
+ ctx = rule.get_rule_context
34
+ listener.exit_every_rule(ctx)
35
+ ctx.exit_rule(listener)
36
+ end
37
+ end
38
+ end