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,63 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ # @abstract
5
+ class Transition
6
+ EPSILON = 1
7
+ RANGE = 2
8
+ RULE = 3
9
+ PREDICATE = 4
10
+ ATOM = 5
11
+ ACTION = 6
12
+ SET = 7
13
+ NOT_SET = 8
14
+ WILDCARD = 9
15
+ PRECEDENCE = 10
16
+
17
+ @@serialization_names = %w[INVALID EPSILON RANGE RULE PREDICATE ATOM ACTION SET NOT_SET WILDCARD PRECEDENCE]
18
+ @@serialization_types = {
19
+ EpsilonTransition => EPSILON,
20
+ RangeTransition => RANGE,
21
+ RuleTransition => RULE,
22
+ PredicateTransition => PREDICATE,
23
+ AtomTransition => ATOM,
24
+ ActionTransition => ACTION,
25
+ SetTransition => SET,
26
+ NotSetTransition => NOT_SET,
27
+ WildcardTransition => WILDCARD,
28
+ PrecedencePredicateTransition => PRECEDENCE
29
+ }
30
+
31
+ attr_accessor :target
32
+
33
+ def self.serialization_names
34
+ @@serialization_names
35
+ end
36
+
37
+ def self.serialization_types
38
+ @@serialization_types
39
+ end
40
+
41
+ def initialize(target)
42
+ super()
43
+ raise "target can not be nil." unless target
44
+ @target = target
45
+ end
46
+
47
+ def get_serialization_type
48
+ raise NotImplementedError.new("#{self.class.name}#get_serialization_type is abstract method.")
49
+ end
50
+
51
+ def is_epsilon?
52
+ false
53
+ end
54
+
55
+ def label
56
+ nil
57
+ end
58
+
59
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
60
+ raise NotImplementedError.new("#{self.class.name}#matches is abstract method.")
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,21 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ class WildcardTransition < Transition
5
+ def initialize(target)
6
+ super(target)
7
+ end
8
+
9
+ def get_serialization_type
10
+ WILDCARD
11
+ end
12
+
13
+ def matches?(symbol, min_vocab_symbol, max_vocab_symbol)
14
+ symbol >= min_vocab_symbol && symbol <= max_vocab_symbol
15
+ end
16
+
17
+ def to_s
18
+ '.'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ class BailErrorStrategy < DefaultErrorStrategy
5
+
6
+ def recover(recognizer, e)
7
+ context = recognizer.get_context
8
+ while context
9
+ context.exception = e; context = context.get_parent
10
+ end
11
+
12
+ raise ParseCancellationException.new
13
+ end
14
+
15
+ def recover_in_line(recognizer)
16
+ e = InputMismatchException.new(recognizer, nil, nil)
17
+ context = recognizer.get_context
18
+ while context
19
+ context.exception = e; context = context.get_parent
20
+ end
21
+ raise ParseCancellationException.new
22
+ end
23
+
24
+ def sync(recognizer) end
25
+
26
+
27
+ end
28
+ end
@@ -0,0 +1,14 @@
1
+ # 已完成
2
+
3
+ module Antlr4ruby
4
+ class BaseErrorListener
5
+ # @override
6
+ def syntax_error(recognizer, offending_symbol, line, char_position_in_line, msg, e) end
7
+
8
+ def report_ambiguity(recognizer, dfa, start_index, stop_index, exact, ambig_alts, configs) end
9
+
10
+ def report_attempting_full_context(recognizer, dfa, start_index, stop_index, conflicting_alts, configs) end
11
+
12
+ def report_context_sensitivity(recognizer,dfa, start_index, stop_index, prediction, configs) end
13
+ end
14
+ end
@@ -0,0 +1,115 @@
1
+ # 完成所有函数的声明
2
+
3
+ module Antlr4ruby
4
+ class BufferedTokenStream
5
+
6
+ def initialize(token_source)
7
+ @token_source = token_source
8
+ end
9
+
10
+ protected
11
+
12
+ attr_accessor :token_source, :tokens, :p, :fetched_eof
13
+
14
+ def sync(i)
15
+ # todo
16
+ end
17
+
18
+ def fetch(n)
19
+ # todo
20
+ end
21
+
22
+ def lb(k)
23
+ # todo
24
+ end
25
+
26
+ def adjust_seek_index(i)
27
+ i;
28
+ end
29
+
30
+ def lazy_init
31
+ # todo
32
+ end
33
+
34
+ def setup
35
+ # todo
36
+ end
37
+
38
+ def next_token_on_channel(i, channel)
39
+ # todo
40
+ end
41
+
42
+ def previous_token_on_channel(i, channel)
43
+ # todo
44
+ end
45
+
46
+ def filter_for_channel(from, to, channel)
47
+ # todo
48
+ end
49
+
50
+ public
51
+
52
+ def get_token_source
53
+ @token_source
54
+ end
55
+
56
+ def index
57
+ @p
58
+ end
59
+
60
+ def mark
61
+ 0
62
+ end
63
+
64
+ def release(marker) end
65
+
66
+ def seek(index)
67
+ # todo
68
+ end
69
+
70
+ def size
71
+ tokens.length
72
+ end
73
+
74
+ def consume
75
+ # todo
76
+ end
77
+
78
+ def get_multi(start, stop)
79
+ # todo
80
+ end
81
+
82
+ def la(i)
83
+ # todo
84
+ end
85
+
86
+ def lt(k)
87
+ # todo
88
+ end
89
+
90
+ def get_text(rule_context: nil, interval: nil, start: nil, stop: nil)
91
+ # todo
92
+ end
93
+
94
+ def fill
95
+ # todo
96
+ end
97
+
98
+ def set_token_source(token_source)
99
+ # todo
100
+ end
101
+
102
+ def get_tokens(start, stop, types)
103
+ # todo 改成关键字参数
104
+ end
105
+
106
+ def get_hidden_tokens_to_right(token_index, channel = -1)
107
+ # todo
108
+ end
109
+
110
+ def get_hidden_tokens_to_left(token_index, channel = -1)
111
+ # todo
112
+ end
113
+
114
+ end
115
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'code_point_char_stream'
2
+ module Antlr4ruby
3
+ class CharStreams
4
+ class << self
5
+ def from_path(path, charset)
6
+ # from_file(path, charset)
7
+ end
8
+
9
+ def from_file_name(filename, charset)
10
+ mode = charset ? "rb:#{charset}" : 'r'
11
+ File.open(filename, mode) do |file|
12
+ from_file(file)
13
+ end
14
+ end
15
+
16
+ def from_file(file)
17
+ input = file.read
18
+ if input
19
+ from_string(input)
20
+ else
21
+ raise "文件读取异常"
22
+ end
23
+ end
24
+
25
+ def from_string(input, source_name = IntStream.UNKNOWN_SOURCE_NAME)
26
+ # 首先将字符串转换为整数数组
27
+ CodePointCharStream.from_string(input, source_name)
28
+ end
29
+
30
+
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,31 @@
1
+ # @deprecated
2
+ module Antlr4ruby
3
+ class CodePointBuffer
4
+ BYTE = :BYTE
5
+ CHAR = :CHAR
6
+ INT = :INT
7
+
8
+ def position(new_position)
9
+ # todo
10
+ end
11
+
12
+ def remaining
13
+ # todo
14
+ end
15
+
16
+ def get(offset)
17
+ # todo
18
+ end
19
+
20
+ def get_type
21
+ # todo
22
+ end
23
+
24
+ def array_offset
25
+ # todo
26
+ end
27
+
28
+
29
+
30
+ end
31
+ end
@@ -0,0 +1,88 @@
1
+ # finished
2
+
3
+ module Antlr4ruby
4
+ # @abstract
5
+ class CodePointCharStream
6
+
7
+ def initialize(data, name = UNKNOWN_SOURCE_NAME)
8
+ @data, @name, @position = data, name, 0
9
+ end
10
+
11
+ protected
12
+
13
+ attr_reader :name, :data
14
+ attr_accessor :position
15
+
16
+ private
17
+
18
+ def get_internal_storage
19
+ @data
20
+ end
21
+
22
+ public
23
+
24
+ def self.from_buffer(code_point_buffer, name = UNKNOWN_SOURCE_NAME)
25
+ # todo
26
+ end
27
+
28
+ def self.from_string(input, name = UNKNOWN_SOURCE_NAME)
29
+ buffer = input.unpack('U*')
30
+ # input.each_char do |c|
31
+ # buffer.push(c.ord)
32
+ # end
33
+ # 这里会有一个警告,但是不好处理
34
+ CodePointCharStream.new(buffer, name)
35
+ end
36
+
37
+ def consume
38
+ raise "can not consume eof." if @position == @data.length
39
+ @position += 1
40
+ end
41
+
42
+ def index
43
+ @position
44
+ end
45
+
46
+ def size
47
+ @data.length
48
+ end
49
+
50
+ def mark
51
+ -1
52
+ end
53
+
54
+ def release(marker) end
55
+
56
+ def seek(index)
57
+ @position = index
58
+ end
59
+
60
+ def la(i)
61
+ if i < 0
62
+ offset = position + i
63
+ offset < 0 ? IntStream.EOF : data[offset]
64
+ elsif i > 0
65
+ offset = position + i - 1
66
+ offset > data.length ? IntStream.EOF : data[offset]
67
+ else
68
+ 0
69
+ end
70
+ end
71
+
72
+ def get_text(interval)
73
+ hold = data[interval]
74
+ return hold.pack('U*') if hold
75
+ 'error in method get_text'
76
+ end
77
+
78
+ def get_source_name
79
+ UNKNOWN_SOURCE_NAME if !@name || name.empty?
80
+ @name
81
+ end
82
+
83
+ def to_s
84
+ data.pack('U*')
85
+ end
86
+
87
+ end
88
+ end
@@ -0,0 +1,113 @@
1
+ # finished
2
+ module Antlr4ruby
3
+ class CommonToken
4
+ # 使用关键字参数来定义
5
+ def initialize(type: nil, source: nil,
6
+ channel:nil, start: nil, stop: nil, text: nil )
7
+ @char_position_in_line = -1
8
+ @channel = channel || Token::DEFAULT_CHANNEL
9
+ @index = -1
10
+ @text = text || ''
11
+ @type = type || -1
12
+ @start = start || 0
13
+ @stop = stop || 0
14
+
15
+ if source&.first
16
+ @line = source.first.get_line
17
+ @char_position_in_line = source.first.get_char_position_in_line
18
+ else
19
+ @source = EMPTY_SOURCE
20
+ end
21
+
22
+ end
23
+
24
+ protected
25
+ EMPTY_SOURCE = Pair.new(nil, nil )
26
+ attr_accessor :type, :line, :char_position_in_line, :channel, :source, :text,:index,
27
+ :start, :stop
28
+
29
+ public
30
+ def to_s(recognizer)
31
+ channel_str = channel == 0 ? "":", channel=#{channel}"
32
+ txt = get_text
33
+ txt = '<no text>' unless txt
34
+ type_string = type.to_s
35
+ type_string = recognizer.get_vocabulary.get_display_name(type) if recognizer
36
+ "[@#{get_token_index}, #{start}:#{stop}='#{txt}',<#{type_string}>, #{line}:#{char_position_in_line}]"
37
+ end
38
+
39
+ def get_type
40
+ @type
41
+ end
42
+
43
+ def set_line(line)
44
+ @line = line
45
+ end
46
+
47
+ def get_text
48
+ return @text if @text
49
+ input = get_input_stream
50
+ return "" unless input
51
+ n = input.size
52
+ if start < n && stop < n
53
+ input.get_text(start..stop)
54
+ else
55
+ '<EOF>'
56
+ end
57
+ end
58
+
59
+ def set_text(text)
60
+ @text = text
61
+ end
62
+
63
+ def get_line
64
+ @line
65
+ end
66
+
67
+ def get_char_position_in_line
68
+ @char_position_in_line
69
+ end
70
+
71
+ def set_char_position_in_line(position)
72
+ @char_position_in_line = position
73
+ end
74
+
75
+ def get_channel
76
+ @channel
77
+ end
78
+
79
+ def set_channel(channel) @channel = channel; end
80
+
81
+ def set_type(ty) @type = ty; end
82
+
83
+ def get_start_index
84
+ @start
85
+ end
86
+
87
+ def set_start_index(start) @start = start; end
88
+
89
+ def get_stop_index
90
+ @stop
91
+ end
92
+
93
+ def set_stop_index(stop) @stop = stop; end
94
+
95
+ def get_token_index
96
+ @index
97
+ end
98
+
99
+ def set_token_index(index) @index = index; end
100
+
101
+ def get_token_source
102
+ source.first
103
+ end
104
+
105
+ def get_input_stream
106
+ source.second
107
+ end
108
+
109
+
110
+
111
+
112
+ end
113
+ end
@@ -0,0 +1,39 @@
1
+ # finished
2
+ # 已完成
3
+
4
+ module Antlr4ruby
5
+ class CommonTokenFactory
6
+
7
+ DEFAULT = CommonTokenFactory.new
8
+
9
+ def initialize(copy_text = false)
10
+ @copy_text = copy_text
11
+ end
12
+
13
+ protected
14
+
15
+ attr_reader :copy_text
16
+
17
+ public
18
+
19
+ def create(type:, text:, source: nil,
20
+ channel: nil, start: nil, stop: nil, line: nil, position: nil)
21
+ if channel and source and start and stop and line and position
22
+ t = CommonToken.new(type: type, source: source, channel: channel, start: start, stop: stop)
23
+ t.set_line(line)
24
+ t.set_char_position_in_line(position)
25
+ if text
26
+ t.set_text(text)
27
+ elsif copy_text && source.second
28
+ t.set_text(source.second.get_text(start..stop))
29
+ end
30
+ t
31
+ else
32
+ CommonToken.new(type: type, text: text)
33
+ end
34
+ end
35
+
36
+
37
+
38
+ end
39
+ end
@@ -0,0 +1,62 @@
1
+ # finished
2
+ require 'antlr4ruby/buffered_token_stream'
3
+
4
+ module Antlr4ruby
5
+ class CommonTokenStream < BufferedTokenStream
6
+ def initialize(token_source, channel = Token::DEFAULT_CHANNEL)
7
+ super(token_source)
8
+ @channel = channel
9
+ end
10
+
11
+
12
+
13
+ protected
14
+ attr_accessor :channel
15
+
16
+ def adjust_seek_index(i)
17
+ next_token_on_channel(i, @channel)
18
+ end
19
+
20
+ def lb(k)
21
+ return nil if k==0 || (@p -k) < 0
22
+
23
+ i = @p
24
+ n = 1
25
+ while n <= k && i > 0
26
+ i = previous_token_on_channel(i-1, @channel)
27
+ n += 1
28
+ end
29
+ return nil if i < 0
30
+ tokens[i]
31
+ end
32
+
33
+ public
34
+ def lt(k)
35
+ lazy_init
36
+ return nil if k == 0
37
+ return lb(-k) if k < 0
38
+
39
+ i = @p
40
+ n = 1
41
+ while n < k
42
+ if sync(i + 1)
43
+ i = next_token_on_channel(i+1, channel)
44
+ end
45
+ n += 1
46
+ end
47
+
48
+ tokens[i]
49
+ end
50
+ def get_number_of_on_channel_tokens
51
+ n = 0
52
+ fill
53
+ tokens.each do |token|
54
+ n += 1 if token.get_channel == channel
55
+ break if token.get_type == Token::EOF
56
+ end
57
+ n
58
+ end
59
+
60
+
61
+ end
62
+ end
@@ -0,0 +1,10 @@
1
+ # 已完成
2
+ module Antlr4ruby
3
+ class ConsoleErrorListener < BaseErrorListener
4
+ INSTANCE = ConsoleErrorListener.new
5
+
6
+ def syntax_error(recognizer, offending_symbol, line, char_position_in_line, msg, e)
7
+ print "line #{line}:#{char_position_in_line} #{msg}"
8
+ end
9
+ end
10
+ end