ibex 0.1.0 → 0.2.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 (384) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +247 -104
  3. data/docs/architecture.md +322 -28
  4. data/docs/cst-migration.md +107 -0
  5. data/docs/cst.md +213 -0
  6. data/docs/development.md +129 -0
  7. data/docs/editor-setup.md +25 -0
  8. data/docs/error-ux.md +60 -0
  9. data/docs/grammar-reference.md +458 -18
  10. data/docs/lexer-migration.md +51 -0
  11. data/docs/racc-migration.md +34 -6
  12. data/docs/release-readiness.md +163 -0
  13. data/docs/stability.md +124 -0
  14. data/examples/README.md +60 -0
  15. data/examples/calculator.y +44 -0
  16. data/examples/csv.y +32 -0
  17. data/examples/ini.y +70 -0
  18. data/examples/json.y +48 -0
  19. data/examples/tiny_language.y +75 -0
  20. data/lib/ibex/analysis/sets.rb +5 -4
  21. data/lib/ibex/artifact_set.rb +63 -0
  22. data/lib/ibex/cli/ambiguity.rb +66 -0
  23. data/lib/ibex/cli/counterexample_options.rb +6 -2
  24. data/lib/ibex/cli/coverage.rb +173 -0
  25. data/lib/ibex/cli/debug.rb +106 -0
  26. data/lib/ibex/cli/diagnostics.rb +116 -0
  27. data/lib/ibex/cli/documentation.rb +67 -0
  28. data/lib/ibex/cli/error_messages.rb +177 -0
  29. data/lib/ibex/cli/explain.rb +76 -0
  30. data/lib/ibex/cli/formatting.rb +386 -0
  31. data/lib/ibex/cli/generation_artifacts.rb +138 -0
  32. data/lib/ibex/cli/generation_error_messages.rb +39 -0
  33. data/lib/ibex/cli/grammar_tests.rb +122 -0
  34. data/lib/ibex/cli/ir_tools.rb +184 -0
  35. data/lib/ibex/cli/lsp.rb +33 -0
  36. data/lib/ibex/cli/outputs.rb +91 -8
  37. data/lib/ibex/cli/racc_migration.rb +87 -0
  38. data/lib/ibex/cli/samples.rb +92 -0
  39. data/lib/ibex/cli/watch.rb +103 -0
  40. data/lib/ibex/cli.rb +506 -37
  41. data/lib/ibex/codegen/action_locations.rb +103 -0
  42. data/lib/ibex/codegen/action_method_source.rb +210 -0
  43. data/lib/ibex/codegen/action_source.rb +118 -0
  44. data/lib/ibex/codegen/ambiguity.rb +173 -0
  45. data/lib/ibex/codegen/cst_metadata.rb +171 -0
  46. data/lib/ibex/codegen/documentation.rb +170 -0
  47. data/lib/ibex/codegen/explain.rb +312 -0
  48. data/lib/ibex/codegen/generated_action_abi.rb +288 -0
  49. data/lib/ibex/codegen/html.rb +94 -10
  50. data/lib/ibex/codegen/mermaid.rb +43 -0
  51. data/lib/ibex/codegen/railroad.rb +197 -0
  52. data/lib/ibex/codegen/railroad_documentation.rb +59 -0
  53. data/lib/ibex/codegen/rbs.rb +323 -2
  54. data/lib/ibex/codegen/report.rb +46 -6
  55. data/lib/ibex/codegen/ruby.rb +334 -59
  56. data/lib/ibex/codegen/ruby_actions.rb +143 -0
  57. data/lib/ibex/codegen/ruby_ast.rb +121 -0
  58. data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
  59. data/lib/ibex/codegen/ruby_lexer.rb +83 -0
  60. data/lib/ibex/codegen/ruby_syntax.rb +90 -0
  61. data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
  62. data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
  63. data/lib/ibex/codegen/symbol_labels.rb +1 -1
  64. data/lib/ibex/coverage/collector.rb +188 -0
  65. data/lib/ibex/coverage/event_stream.rb +97 -0
  66. data/lib/ibex/coverage/report.rb +259 -0
  67. data/lib/ibex/coverage/runtime_event_validator.rb +160 -0
  68. data/lib/ibex/coverage.rb +13 -0
  69. data/lib/ibex/error_messages/parser.rb +159 -0
  70. data/lib/ibex/error_messages/parser_v2.rb +198 -0
  71. data/lib/ibex/error_messages/renderer.rb +65 -0
  72. data/lib/ibex/error_messages/sentence_search.rb +196 -0
  73. data/lib/ibex/error_messages/update.rb +169 -0
  74. data/lib/ibex/error_messages.rb +165 -0
  75. data/lib/ibex/frontend/ast.rb +145 -6
  76. data/lib/ibex/frontend/bootstrap_parser.rb +47 -4
  77. data/lib/ibex/frontend/diagnostic.rb +81 -0
  78. data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
  79. data/lib/ibex/frontend/dsl.rb +66 -7
  80. data/lib/ibex/frontend/formatter.rb +407 -0
  81. data/lib/ibex/frontend/generated_parser.rb +614 -190
  82. data/lib/ibex/frontend/generated_parser_base.rb +164 -30
  83. data/lib/ibex/frontend/generated_parser_includes.rb +61 -0
  84. data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
  85. data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
  86. data/lib/ibex/frontend/generation.rb +33 -0
  87. data/lib/ibex/frontend/lexer.rb +162 -10
  88. data/lib/ibex/frontend/lexer_recovery.rb +84 -0
  89. data/lib/ibex/frontend/parser/declarations.rb +247 -11
  90. data/lib/ibex/frontend/parser/parameters.rb +82 -0
  91. data/lib/ibex/frontend/parser/rules.rb +43 -6
  92. data/lib/ibex/frontend/parser.rb +182 -4
  93. data/lib/ibex/frontend/regenerator.rb +26 -1
  94. data/lib/ibex/frontend/resolution.rb +69 -0
  95. data/lib/ibex/frontend/resolver.rb +217 -0
  96. data/lib/ibex/frontend/rule_documentation.rb +103 -0
  97. data/lib/ibex/frontend/source_cursor.rb +132 -8
  98. data/lib/ibex/frontend/source_document.rb +229 -0
  99. data/lib/ibex/frontend/source_loader.rb +150 -0
  100. data/lib/ibex/frontend/source_span.rb +81 -0
  101. data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
  102. data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
  103. data/lib/ibex/frontend/token_adapter/declaration_state.rb +216 -26
  104. data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
  105. data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
  106. data/lib/ibex/frontend/token_adapter.rb +8 -3
  107. data/lib/ibex/frontend.rb +13 -2
  108. data/lib/ibex/generation_input.rb +57 -0
  109. data/lib/ibex/generation_manifest.rb +200 -0
  110. data/lib/ibex/generation_transaction.rb +261 -0
  111. data/lib/ibex/generation_transaction_recovery.rb +109 -0
  112. data/lib/ibex/generation_transaction_validation.rb +196 -0
  113. data/lib/ibex/grammar_tests.rb +206 -0
  114. data/lib/ibex/ir/automaton_ir.rb +38 -5
  115. data/lib/ibex/ir/grammar_ir.rb +137 -24
  116. data/lib/ibex/ir/lexer_ir.rb +76 -0
  117. data/lib/ibex/ir/migration.rb +120 -0
  118. data/lib/ibex/ir/serialize.rb +110 -19
  119. data/lib/ibex/ir/validator/automaton.rb +345 -0
  120. data/lib/ibex/ir/validator/base.rb +129 -0
  121. data/lib/ibex/ir/validator/grammar.rb +604 -0
  122. data/lib/ibex/ir/validator/lexer.rb +113 -0
  123. data/lib/ibex/ir/validator.rb +62 -0
  124. data/lib/ibex/ir.rb +57 -4
  125. data/lib/ibex/lalr/build_metrics.rb +23 -0
  126. data/lib/ibex/lalr/builder.rb +379 -52
  127. data/lib/ibex/lalr/conflict.rb +1 -0
  128. data/lib/ibex/lalr/conflict_search.rb +11 -5
  129. data/lib/ibex/lalr/counterexample.rb +20 -5
  130. data/lib/ibex/lalr/direct_lookaheads.rb +236 -0
  131. data/lib/ibex/lalr/ielr_partition.rb +152 -0
  132. data/lib/ibex/lalr/on_error_reductions.rb +74 -0
  133. data/lib/ibex/lalr.rb +7 -0
  134. data/lib/ibex/location.rb +129 -0
  135. data/lib/ibex/lsp/document_handlers.rb +66 -0
  136. data/lib/ibex/lsp/document_store.rb +264 -0
  137. data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
  138. data/lib/ibex/lsp/document_store_validation.rb +61 -0
  139. data/lib/ibex/lsp/initialization_handlers.rb +78 -0
  140. data/lib/ibex/lsp/navigation_handlers.rb +56 -0
  141. data/lib/ibex/lsp/position_codec.rb +109 -0
  142. data/lib/ibex/lsp/protocol_error.rb +33 -0
  143. data/lib/ibex/lsp/request_handlers.rb +45 -0
  144. data/lib/ibex/lsp/request_support.rb +87 -0
  145. data/lib/ibex/lsp/server.rb +146 -0
  146. data/lib/ibex/lsp/symbol_index.rb +241 -0
  147. data/lib/ibex/lsp/symbol_index_builder.rb +267 -0
  148. data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
  149. data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
  150. data/lib/ibex/lsp/symbol_occurrence.rb +17 -0
  151. data/lib/ibex/lsp/transport.rb +118 -0
  152. data/lib/ibex/lsp/workspace.rb +127 -0
  153. data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
  154. data/lib/ibex/lsp.rb +32 -0
  155. data/lib/ibex/normalize/declarations.rb +140 -7
  156. data/lib/ibex/normalize/diagnostics.rb +50 -5
  157. data/lib/ibex/normalize/expander.rb +59 -55
  158. data/lib/ibex/normalize/expression.rb +60 -39
  159. data/lib/ibex/normalize/inline_expansion.rb +414 -0
  160. data/lib/ibex/normalize/inline_validation.rb +174 -0
  161. data/lib/ibex/normalize/lexer.rb +131 -0
  162. data/lib/ibex/normalize/named_references.rb +60 -0
  163. data/lib/ibex/normalize/nodes.rb +46 -0
  164. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +69 -0
  165. data/lib/ibex/normalize/parameter_lowering.rb +126 -0
  166. data/lib/ibex/normalize/parameter_substitution.rb +125 -0
  167. data/lib/ibex/normalize/parameter_validation.rb +140 -0
  168. data/lib/ibex/normalize/parameters.rb +199 -0
  169. data/lib/ibex/normalize/recovery_declarations.rb +84 -0
  170. data/lib/ibex/normalize.rb +179 -14
  171. data/lib/ibex/racc_migration/checker.rb +122 -0
  172. data/lib/ibex/racc_migration/harness.rb +177 -0
  173. data/lib/ibex/racc_migration/report.rb +94 -0
  174. data/lib/ibex/racc_migration.rb +12 -0
  175. data/lib/ibex/rake_task.rb +116 -0
  176. data/lib/ibex/samples.rb +186 -0
  177. data/lib/ibex/table_simulation/result.rb +51 -0
  178. data/lib/ibex/table_simulation/simulator.rb +253 -0
  179. data/lib/ibex/table_simulation/step.rb +60 -0
  180. data/lib/ibex/table_simulation/text.rb +31 -0
  181. data/lib/ibex/table_simulation.rb +13 -0
  182. data/lib/ibex/tables.rb +9 -70
  183. data/lib/ibex/version.rb +1 -1
  184. data/lib/ibex/watch/runner.rb +172 -0
  185. data/lib/ibex/watch/source_snapshot.rb +93 -0
  186. data/lib/ibex/watch.rb +11 -0
  187. data/lib/ibex.rb +25 -1
  188. data/schema/automaton-ir-v1.schema.json +401 -0
  189. data/schema/automaton-ir-v2.schema.json +58 -0
  190. data/schema/benchmark-v1.schema.json +212 -0
  191. data/schema/benchmark-v2.schema.json +61 -0
  192. data/schema/cst-v1.json +170 -0
  193. data/schema/error-ux-v1.schema.json +258 -0
  194. data/schema/explain-v1.schema.json +433 -0
  195. data/schema/frontend-diagnostics-v1.schema.json +154 -0
  196. data/schema/generation-manifest-v1.schema.json +115 -0
  197. data/schema/grammar-ir-v1.schema.json +426 -0
  198. data/schema/grammar-ir-v2.schema.json +779 -0
  199. data/schema/lexer-ir-v1.schema.json +215 -0
  200. data/schema/migration-check-v1.schema.json +60 -0
  201. data/schema/performance-comparison-v1.schema.json +395 -0
  202. data/schema/public-performance-comparison-v1.schema.json +506 -0
  203. data/schema/public-performance-profile-v1.schema.json +360 -0
  204. data/schema/runtime-coverage-v1.schema.json +86 -0
  205. data/schema/runtime-event-v1.schema.json +308 -0
  206. data/schema/table-simulation-v1.schema.json +70 -0
  207. data/sig/ibex/artifact_set.rbs +37 -0
  208. data/sig/ibex/cli/ambiguity.rbs +22 -0
  209. data/sig/ibex/cli/counterexample_options.rbs +2 -0
  210. data/sig/ibex/cli/coverage.rbs +53 -0
  211. data/sig/ibex/cli/debug.rbs +28 -0
  212. data/sig/ibex/cli/diagnostics.rbs +38 -0
  213. data/sig/ibex/cli/documentation.rbs +25 -0
  214. data/sig/ibex/cli/error_messages.rbs +57 -0
  215. data/sig/ibex/cli/explain.rbs +25 -0
  216. data/sig/ibex/cli/formatting.rbs +103 -0
  217. data/sig/ibex/cli/generation_artifacts.rbs +50 -0
  218. data/sig/ibex/cli/generation_error_messages.rbs +19 -0
  219. data/sig/ibex/cli/grammar_tests.rbs +36 -0
  220. data/sig/ibex/cli/ir_tools.rbs +51 -0
  221. data/sig/ibex/cli/lsp.rbs +14 -0
  222. data/sig/ibex/cli/outputs.rbs +17 -0
  223. data/sig/ibex/cli/racc_migration.rbs +30 -0
  224. data/sig/ibex/cli/samples.rbs +30 -0
  225. data/sig/ibex/cli/watch.rbs +43 -0
  226. data/sig/ibex/cli.rbs +104 -5
  227. data/sig/ibex/codegen/action_locations.rbs +45 -0
  228. data/sig/ibex/codegen/action_method_source.rbs +65 -0
  229. data/sig/ibex/codegen/action_source.rbs +50 -0
  230. data/sig/ibex/codegen/ambiguity.rbs +60 -0
  231. data/sig/ibex/codegen/cst_metadata.rbs +59 -0
  232. data/sig/ibex/codegen/documentation.rbs +50 -0
  233. data/sig/ibex/codegen/explain.rbs +85 -0
  234. data/sig/ibex/codegen/generated_action_abi.rbs +101 -0
  235. data/sig/ibex/codegen/html.rbs +18 -2
  236. data/sig/ibex/codegen/mermaid.rbs +16 -0
  237. data/sig/ibex/codegen/railroad.rbs +82 -0
  238. data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
  239. data/sig/ibex/codegen/rbs.rbs +84 -4
  240. data/sig/ibex/codegen/report.rbs +8 -0
  241. data/sig/ibex/codegen/ruby.rbs +97 -23
  242. data/sig/ibex/codegen/ruby_actions.rbs +54 -0
  243. data/sig/ibex/codegen/ruby_ast.rbs +34 -0
  244. data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
  245. data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
  246. data/sig/ibex/codegen/ruby_syntax.rbs +25 -0
  247. data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
  248. data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
  249. data/sig/ibex/coverage/collector.rbs +76 -0
  250. data/sig/ibex/coverage/event_stream.rbs +42 -0
  251. data/sig/ibex/coverage/report.rbs +100 -0
  252. data/sig/ibex/coverage/runtime_event_validator.rbs +68 -0
  253. data/sig/ibex/coverage.rbs +7 -0
  254. data/sig/ibex/error_messages/parser.rbs +58 -0
  255. data/sig/ibex/error_messages/parser_v2.rbs +67 -0
  256. data/sig/ibex/error_messages/renderer.rbs +23 -0
  257. data/sig/ibex/error_messages/sentence_search.rbs +80 -0
  258. data/sig/ibex/error_messages/update.rbs +43 -0
  259. data/sig/ibex/error_messages.rbs +85 -0
  260. data/sig/ibex/frontend/ast.rbs +208 -19
  261. data/sig/ibex/frontend/bootstrap_parser.rbs +11 -0
  262. data/sig/ibex/frontend/diagnostic.rbs +53 -0
  263. data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
  264. data/sig/ibex/frontend/dsl.rbs +33 -4
  265. data/sig/ibex/frontend/formatter.rbs +135 -0
  266. data/sig/ibex/frontend/generated_parser.rbs +218 -68
  267. data/sig/ibex/frontend/generated_parser_base.rbs +61 -10
  268. data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
  269. data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
  270. data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
  271. data/sig/ibex/frontend/generation.rbs +6 -0
  272. data/sig/ibex/frontend/lexer.rbs +49 -2
  273. data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
  274. data/sig/ibex/frontend/parser/declarations.rbs +54 -0
  275. data/sig/ibex/frontend/parser/parameters.rbs +28 -0
  276. data/sig/ibex/frontend/parser/rules.rbs +3 -0
  277. data/sig/ibex/frontend/parser.rbs +66 -0
  278. data/sig/ibex/frontend/regenerator.rbs +11 -0
  279. data/sig/ibex/frontend/resolution.rbs +33 -0
  280. data/sig/ibex/frontend/resolver.rbs +91 -0
  281. data/sig/ibex/frontend/rule_documentation.rbs +42 -0
  282. data/sig/ibex/frontend/source_cursor.rbs +36 -3
  283. data/sig/ibex/frontend/source_document.rbs +119 -0
  284. data/sig/ibex/frontend/source_loader.rbs +66 -0
  285. data/sig/ibex/frontend/source_span.rbs +53 -0
  286. data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
  287. data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
  288. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +73 -5
  289. data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
  290. data/sig/ibex/frontend/token_adapter.rbs +5 -2
  291. data/sig/ibex/frontend.rbs +1 -1
  292. data/sig/ibex/generation_input.rbs +37 -0
  293. data/sig/ibex/generation_manifest.rbs +67 -0
  294. data/sig/ibex/generation_transaction.rbs +82 -0
  295. data/sig/ibex/generation_transaction_recovery.rbs +36 -0
  296. data/sig/ibex/generation_transaction_validation.rbs +65 -0
  297. data/sig/ibex/grammar_tests.rbs +93 -0
  298. data/sig/ibex/ir/automaton_ir.rbs +8 -2
  299. data/sig/ibex/ir/grammar_ir.rbs +75 -15
  300. data/sig/ibex/ir/lexer_ir.rbs +57 -0
  301. data/sig/ibex/ir/migration.rbs +34 -0
  302. data/sig/ibex/ir/serialize.rbs +23 -6
  303. data/sig/ibex/ir/validator/automaton.rbs +109 -0
  304. data/sig/ibex/ir/validator/base.rbs +65 -0
  305. data/sig/ibex/ir/validator/grammar.rbs +184 -0
  306. data/sig/ibex/ir/validator/lexer.rbs +37 -0
  307. data/sig/ibex/ir/validator.rbs +16 -0
  308. data/sig/ibex/ir.rbs +38 -4
  309. data/sig/ibex/lalr/build_metrics.rbs +20 -0
  310. data/sig/ibex/lalr/builder.rbs +95 -15
  311. data/sig/ibex/lalr/conflict_search.rbs +7 -3
  312. data/sig/ibex/lalr/counterexample.rbs +5 -2
  313. data/sig/ibex/lalr/direct_lookaheads.rbs +86 -0
  314. data/sig/ibex/lalr/ielr_partition.rbs +59 -0
  315. data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
  316. data/sig/ibex/lalr.rbs +6 -0
  317. data/sig/ibex/location.rbs +67 -0
  318. data/sig/ibex/lsp/document_handlers.rbs +24 -0
  319. data/sig/ibex/lsp/document_store.rbs +94 -0
  320. data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
  321. data/sig/ibex/lsp/document_store_validation.rbs +26 -0
  322. data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
  323. data/sig/ibex/lsp/navigation_handlers.rbs +30 -0
  324. data/sig/ibex/lsp/position_codec.rbs +40 -0
  325. data/sig/ibex/lsp/protocol_error.rbs +32 -0
  326. data/sig/ibex/lsp/request_handlers.rbs +26 -0
  327. data/sig/ibex/lsp/request_support.rbs +40 -0
  328. data/sig/ibex/lsp/server.rbs +55 -0
  329. data/sig/ibex/lsp/symbol_index.rbs +78 -0
  330. data/sig/ibex/lsp/symbol_index_builder.rbs +87 -0
  331. data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
  332. data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
  333. data/sig/ibex/lsp/symbol_occurrence.rbs +25 -0
  334. data/sig/ibex/lsp/transport.rbs +35 -0
  335. data/sig/ibex/lsp/workspace.rbs +41 -0
  336. data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
  337. data/sig/ibex/lsp.rbs +7 -0
  338. data/sig/ibex/normalize/declarations.rbs +31 -0
  339. data/sig/ibex/normalize/diagnostics.rbs +9 -0
  340. data/sig/ibex/normalize/expander.rbs +20 -14
  341. data/sig/ibex/normalize/expression.rbs +10 -10
  342. data/sig/ibex/normalize/inline_expansion.rbs +120 -0
  343. data/sig/ibex/normalize/inline_validation.rbs +40 -0
  344. data/sig/ibex/normalize/lexer.rbs +37 -0
  345. data/sig/ibex/normalize/named_references.rbs +20 -0
  346. data/sig/ibex/normalize/nodes.rbs +14 -0
  347. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +32 -0
  348. data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
  349. data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
  350. data/sig/ibex/normalize/parameter_validation.rbs +44 -0
  351. data/sig/ibex/normalize/parameters.rbs +46 -0
  352. data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
  353. data/sig/ibex/normalize.rbs +123 -18
  354. data/sig/ibex/racc_migration/checker.rbs +36 -0
  355. data/sig/ibex/racc_migration/harness.rbs +16 -0
  356. data/sig/ibex/racc_migration/report.rbs +53 -0
  357. data/sig/ibex/racc_migration.rbs +8 -0
  358. data/sig/ibex/rake_task.rbs +51 -0
  359. data/sig/ibex/samples.rbs +51 -0
  360. data/sig/ibex/table_simulation/result.rbs +32 -0
  361. data/sig/ibex/table_simulation/simulator.rbs +98 -0
  362. data/sig/ibex/table_simulation/step.rbs +40 -0
  363. data/sig/ibex/table_simulation/text.rbs +14 -0
  364. data/sig/ibex/table_simulation.rbs +7 -0
  365. data/sig/ibex/tables.rbs +0 -26
  366. data/sig/ibex/watch/runner.rbs +48 -0
  367. data/sig/ibex/watch/source_snapshot.rbs +42 -0
  368. data/sig/ibex/watch.rbs +7 -0
  369. data/sig/ibex.rbs +2 -0
  370. metadata +301 -16
  371. data/.rubocop.yml +0 -43
  372. data/CHANGELOG.md +0 -30
  373. data/Rakefile +0 -25
  374. data/Steepfile +0 -10
  375. data/docs/compat-notes.md +0 -37
  376. data/docs/lexer-coverage.md +0 -14
  377. data/docs/phase10-extensions.md +0 -27
  378. data/gemfiles/Gemfile +0 -7
  379. data/gemfiles/Gemfile.lock +0 -98
  380. data/lib/ibex/frontend/grammar.y +0 -156
  381. data/lib/ibex/runtime/parser.rb +0 -360
  382. data/lib/ibex/runtime.rb +0 -8
  383. data/sig/ibex/runtime/parser.rbs +0 -167
  384. data/sig/ibex/runtime.rbs +0 -6
@@ -3,24 +3,104 @@
3
3
  module Ibex
4
4
  module Codegen
5
5
  # Generates an RBS declaration for the public surface of a generated parser.
6
+ # rubocop:disable Metrics/ClassLength -- one generator owns the complete parser signature.
6
7
  class RBS
7
- @automaton: IR::Automaton
8
+ @generated_action_abi: GeneratedActionABI::Cache
8
9
 
9
- @grammar: IR::Grammar
10
+ @omit_action_call: bool
10
11
 
11
12
  @superclass: String
12
13
 
13
- # @rbs (IR::Automaton automaton, ?superclass: String?) -> void
14
- def initialize: (IR::Automaton automaton, ?superclass: String?) -> void
14
+ @grammar: IR::Grammar
15
+
16
+ @automaton: IR::Automaton
17
+
18
+ # @rbs (IR::Automaton automaton, ?superclass: String?, ?omit_action_call: bool?) -> void
19
+ def initialize: (IR::Automaton automaton, ?superclass: String?, ?omit_action_call: bool?) -> void
15
20
 
16
21
  # @rbs () -> String
17
22
  def generate: () -> String
18
23
 
19
24
  private
20
25
 
26
+ # @rbs (Array[String] lines) -> void
27
+ def append_ast_contract: (Array[String] lines) -> void
28
+
29
+ # @rbs (Array[String] lines) -> void
30
+ def append_syntax_contract: (Array[String] lines) -> void
31
+
32
+ # @rbs () -> Hash[String, Hash[Symbol, untyped]]
33
+ def syntax_node_definitions: () -> Hash[String, Hash[Symbol, untyped]]
34
+
35
+ # @rbs (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
36
+ def merge_syntax_fields: (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
37
+
38
+ # @rbs (Array[String] lines, Hash[Symbol, untyped] definition) -> void
39
+ def append_syntax_node_contract: (Array[String] lines, Hash[Symbol, untyped] definition) -> void
40
+
41
+ # @rbs (String node_name, Integer index) -> String
42
+ def syntax_field_type: (String node_name, Integer index) -> String
43
+
44
+ # @rbs (Array[String] lines, Hash[String, untyped] fields) -> void
45
+ def append_repetition_contracts: (Array[String] lines, Hash[String, untyped] fields) -> void
46
+
47
+ # @rbs () -> Hash[String, IR::node_annotation]
48
+ def ast_node_definitions: () -> Hash[String, IR::node_annotation]
49
+
50
+ # @rbs (Array[String] lines, IR::node_annotation node) -> void
51
+ def append_ast_node_contract: (Array[String] lines, IR::node_annotation node) -> void
52
+
53
+ # @rbs (String name, Integer length) -> Array[String]
54
+ def ast_node_field_types: (String name, Integer length) -> Array[String]
55
+
56
+ # @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
57
+ def append_visitor_contract: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
58
+
59
+ # @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
60
+ def append_listener_contract: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
61
+
62
+ # @rbs (String name) -> String
63
+ def ast_method_name: (String name) -> String
64
+
21
65
  # @rbs (Array[String] lines) -> void
22
66
  def append_contract: (Array[String] lines) -> void
23
67
 
68
+ # @rbs (Array[String] lines) -> void
69
+ def append_entry_contract: (Array[String] lines) -> void
70
+
71
+ # @rbs (Array[String] lines) -> void
72
+ def append_parameter_contract: (Array[String] lines) -> void
73
+
74
+ # @rbs (Array[String] lines) -> void
75
+ def append_lexer_contract: (Array[String] lines) -> void
76
+
77
+ # @rbs (Array[String] lines) -> void
78
+ def append_value_printer_signatures: (Array[String] lines) -> void
79
+
80
+ # @rbs (Array[String] lines) -> void
81
+ def append_actions: (Array[String] lines) -> void
82
+
83
+ # @rbs (Array[String] lines, IR::Production production) -> void
84
+ def append_action_signature: (Array[String] lines, IR::Production production) -> void
85
+
86
+ # @rbs (Array[String] lines, IR::Production production) -> void
87
+ def append_composed_fragment_signatures: (Array[String] lines, IR::Production production) -> void
88
+
89
+ # @rbs (IR::Production production, Hash[Symbol, untyped] plan, Integer slot, Integer step_index) -> String
90
+ def composition_slot_type: (IR::Production production, Hash[Symbol, untyped] plan, Integer slot, Integer step_index) -> String
91
+
92
+ # @rbs (IR::Production production) -> bool
93
+ def action_method?: (IR::Production production) -> bool
94
+
95
+ # @rbs (IR::Production production) -> bool
96
+ def composed_action?: (IR::Production production) -> bool
97
+
98
+ # @rbs (Integer symbol_id) -> String
99
+ def semantic_type: (Integer symbol_id) -> String
100
+
101
+ # @rbs (Integer symbol_id) -> String?
102
+ def inferred_ast_type: (Integer symbol_id) -> String?
103
+
24
104
  # @rbs () -> [Array[String], String]
25
105
  def class_parts: () -> [ Array[String], String ]
26
106
 
@@ -32,6 +32,14 @@ module Ibex
32
32
 
33
33
  private def self.tree_label: (IR::Grammar grammar, Hash[Integer, String] labels, untyped value) -> untyped
34
34
 
35
+ private def display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, untyped]
36
+
37
+ private def self.display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, untyped]
38
+
39
+ private def format_value: (untyped value) -> String
40
+
41
+ private def self.format_value: (untyped value) -> String
42
+
35
43
  # @rbs (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
36
44
  def self?.render: (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
37
45
  end
@@ -3,31 +3,57 @@
3
3
  module Ibex
4
4
  module Codegen
5
5
  # Generates a standalone Ruby parser class from Automaton IR.
6
+ # rubocop:disable Metrics/ClassLength -- generation stages are split into focused mixins.
6
7
  class Ruby
7
- @executable: String?
8
+ include RubyActions
8
9
 
9
- @superclass: String
10
+ include RubyErrorMessages
10
11
 
11
- @omit_action_call: bool
12
+ include RubyTableMetadata
12
13
 
13
- @debug: bool
14
+ include RubyValuePrinters
14
15
 
15
- @line_convert_all: bool
16
+ include RubyLexer
16
17
 
17
- @line_convert: bool
18
+ include RubyAST
18
19
 
19
- @embedded: bool
20
+ include RubySyntax
20
21
 
21
- @table_format: Symbol
22
+ EMBEDDED_RUNTIME_SOURCES: Array[String]
23
+
24
+ @automaton: IR::Automaton
22
25
 
23
26
  @grammar: IR::Grammar
24
27
 
25
- @automaton: IR::Automaton
28
+ @table_format: Symbol
29
+
30
+ @embedded: bool
31
+
32
+ @line_convert: bool
33
+
34
+ @line_convert_all: bool
35
+
36
+ @debug: bool
37
+
38
+ @omit_action_call: bool
39
+
40
+ @superclass: String
41
+
42
+ @executable: String?
43
+
44
+ @cst_trivia: Symbol
45
+
46
+ @error_messages: Hash[Integer, String | { id: String, message: String }]
47
+
48
+ @generated_action_abi: GeneratedActionABI::Cache
49
+
50
+ @runtime_require: String?
26
51
 
27
52
  # @rbs (IR::Automaton automaton, ?table: Symbol | String, ?embedded: bool, ?line_convert: bool,
28
53
  # ?line_convert_all: bool, ?debug: bool, ?omit_action_call: bool?, ?superclass: String?,
29
- # ?executable: String?) -> void
30
- def initialize: (IR::Automaton automaton, ?table: Symbol | String, ?embedded: bool, ?line_convert: bool, ?line_convert_all: bool, ?debug: bool, ?omit_action_call: bool?, ?superclass: String?, ?executable: String?) -> void
54
+ # ?executable: String?, ?cst_trivia: Symbol | String, ?runtime_require: String?,
55
+ # ?error_messages: Hash[Integer, String | { id: String, message: String }]) -> void
56
+ def initialize: (IR::Automaton automaton, ?table: Symbol | String, ?embedded: bool, ?line_convert: bool, ?line_convert_all: bool, ?debug: bool, ?omit_action_call: bool?, ?superclass: String?, ?executable: String?, ?cst_trivia: Symbol | String, ?runtime_require: String?, ?error_messages: Hash[Integer, String | { id: String, message: String }]) -> void
31
57
 
32
58
  # @rbs () -> String
33
59
  def generate: () -> String
@@ -43,9 +69,36 @@ module Ibex
43
69
  # @rbs (Array[String] lines) -> void
44
70
  def append_tables: (Array[String] lines) -> void
45
71
 
72
+ # @rbs (Array[String] lines, String indent) -> void
73
+ def append_cst_metadata: (Array[String] lines, String indent) -> void
74
+
75
+ # @rbs (Array[String] lines, String indent, Tables::TableSet table_set) -> void
76
+ def append_parser_tables: (Array[String] lines, String indent, Tables::TableSet table_set) -> void
77
+
78
+ # @rbs (Array[String] lines) -> void
79
+ def append_parameter_initializer: (Array[String] lines) -> void
80
+
81
+ # Custom conversion expressions can return caller-owned mutable or
82
+ # inherently unshareable objects, so only standard token mappings are
83
+ # safe to freeze transitively.
84
+ # @rbs () -> bool
85
+ def shareable_parser_tables?: () -> bool
86
+
87
+ # @rbs () -> Hash[Symbol, untyped]
88
+ def cst_metadata: () -> Hash[Symbol, untyped]
89
+
90
+ # @rbs (untyped value) -> String
91
+ def deep_frozen_literal: (untyped value) -> String
92
+
46
93
  # @rbs (untyped table) -> String
47
94
  def table_literal: (untyped table) -> String
48
95
 
96
+ # @rbs (Array[Integer?] values) -> String
97
+ def packed_integers_literal: (Array[Integer?] values) -> String
98
+
99
+ # @rbs (Array[Integer?] values) -> String
100
+ def packed_signed_integers_literal: (Array[Integer?] values) -> String
101
+
49
102
  # @rbs () -> String
50
103
  def token_ids_literal: () -> String
51
104
 
@@ -55,26 +108,47 @@ module Ibex
55
108
  # @rbs () -> String
56
109
  def token_names_literal: () -> String
57
110
 
111
+ # @rbs () -> String
112
+ def symbol_names_literal: () -> String
113
+
58
114
  # @rbs () -> String
59
115
  def productions_literal: () -> String
60
116
 
61
- # @rbs (Array[String] lines) -> void
62
- def append_actions: (Array[String] lines) -> void
117
+ # @rbs () -> String
118
+ def plain_productions_literal: () -> String
119
+
120
+ # @rbs (IR::Production production, bool generated_action) -> String
121
+ def production_action_abi_literal: (IR::Production production, bool generated_action) -> String
122
+
123
+ # @rbs () -> String
124
+ def compact_productions_literal: () -> String
125
+
126
+ # @rbs (IR::Production production) -> Integer
127
+ def compact_production_flags: (IR::Production production) -> Integer
128
+
129
+ # @rbs () -> String
130
+ def compact_production_metadata_literal: () -> String
131
+
132
+ # Reductions that are the sole non-error behavior of a state may run
133
+ # before requesting another lexer token. This enables parser actions to
134
+ # select lexer_state without speculative lookahead.
135
+ # @rbs () -> String
136
+ def eager_reductions_literal: () -> String
63
137
 
64
- # @rbs (Array[String] lines, IR::Production production) -> void
65
- def append_action_constant: (Array[String] lines, IR::Production production) -> void
138
+ # @rbs (IR::AutomatonState state) -> IR::reduce_action?
139
+ def eager_lexer_feedback_reduction: (IR::AutomatonState state) -> IR::reduce_action?
66
140
 
67
- # @rbs (Array[String] lines, IR::Production production) -> void
68
- def append_action_method: (Array[String] lines, IR::Production production) -> void
141
+ # @rbs (IR::Action? action) -> [String, String]
142
+ def production_location_metadata: (IR::Action? action) -> [ String, String ]
69
143
 
70
- # @rbs (Array[String] lines, IR::Action? action) -> void
71
- def append_named_bindings: (Array[String] lines, IR::Action? action) -> void
144
+ # @rbs () -> bool
145
+ def uses_locations?: () -> bool
72
146
 
73
- # @rbs (Array[String] lines, IR::Production production) -> void
74
- def append_semantic_code: (Array[String] lines, IR::Production production) -> void
147
+ # @rbs (IR::Production production, IR::Action action) -> bool
148
+ def action_references_locations?: (IR::Production production, IR::Action action) -> bool
75
149
 
76
- # @rbs (IR::Production production) -> bool
77
- def action_method?: (IR::Production production) -> bool
150
+ # @rbs () -> bool
151
+ def cst?: () -> bool
78
152
 
79
153
  # @rbs (Array[String] lines, String name, ?indent: Integer) -> void
80
154
  def append_user_code: (Array[String] lines, String name, ?indent: Integer) -> void
@@ -0,0 +1,54 @@
1
+ # Generated from lib/ibex/codegen/ruby_actions.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Semantic-action method generation shared by direct and source-mapped
6
+ # Ruby output.
7
+ module RubyActions
8
+ include RubyAST
9
+
10
+ @action_method_source: ActionMethodSource?
11
+
12
+ @omit_action_call: bool
13
+
14
+ @line_convert: bool
15
+
16
+ @grammar: IR::Grammar
17
+
18
+ private
19
+
20
+ # @rbs (Array[String] lines) -> void
21
+ def append_actions: (Array[String] lines) -> void
22
+
23
+ # @rbs (Array[String] lines, IR::Production production) -> void
24
+ def append_composed_action_method: (Array[String] lines, IR::Production production) -> void
25
+
26
+ # @rbs (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
27
+ def append_composed_fragment_method: (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
28
+
29
+ # @rbs (IR::Production production, Integer index) -> String
30
+ def composed_fragment_name: (IR::Production production, Integer index) -> String
31
+
32
+ # @rbs (Array[String] lines, IR::Production production, Hash[Symbol, untyped] plan) -> void
33
+ def append_composed_orchestrator: (Array[String] lines, IR::Production production, Hash[Symbol, untyped] plan) -> void
34
+
35
+ # @rbs (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
36
+ def append_composed_step: (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
37
+
38
+ # @rbs (Array[String] lines, IR::Production production) -> void
39
+ def append_compiled_action_method: (Array[String] lines, IR::Production production) -> void
40
+
41
+ # @rbs (Array[String] lines, IR::Production production) -> void
42
+ def append_action_method: (Array[String] lines, IR::Production production) -> void
43
+
44
+ # @rbs (IR::Production production) -> bool
45
+ def action_method?: (IR::Production production) -> bool
46
+
47
+ # @rbs (IR::Production production) -> bool
48
+ def composed_action?: (IR::Production production) -> bool
49
+
50
+ # @rbs () -> ActionMethodSource
51
+ def action_method_source: () -> ActionMethodSource
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,34 @@
1
+ # Generated from lib/ibex/codegen/ruby_ast.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Generates typed AST data classes and traversal bases from @node metadata.
6
+ module RubyAST
7
+ private
8
+
9
+ # @rbs (Array[String] lines) -> void
10
+ def append_ast: (Array[String] lines) -> void
11
+
12
+ # @rbs () -> Hash[String, IR::node_annotation]
13
+ def ast_node_definitions: () -> Hash[String, IR::node_annotation]
14
+
15
+ # @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
16
+ def append_visitor: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
17
+
18
+ # @rbs (Array[String] lines) -> void
19
+ def append_visit_children: (Array[String] lines) -> void
20
+
21
+ # @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
22
+ def append_listener: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
23
+
24
+ # @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions, :enter | :exit kind) -> void
25
+ def append_listener_dispatch: (Array[String] lines, Hash[String, IR::node_annotation] definitions, :enter | :exit kind) -> void
26
+
27
+ # @rbs (IR::Production production) -> String
28
+ def ast_node_action_source: (IR::Production production) -> String
29
+
30
+ # @rbs (String name) -> String
31
+ def ast_method_name: (String name) -> String
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ # Generated from lib/ibex/codegen/ruby_error_messages.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Serializes immutable example-keyed error records into generated Ruby.
6
+ module RubyErrorMessages
7
+ private
8
+
9
+ # @rbs () -> String
10
+ def error_messages_literal: () -> String
11
+
12
+ # @rbs (String | { id: String, message: String } message) -> String
13
+ def error_message_literal: (String | { id: String, message: String } message) -> String
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ # Generated from lib/ibex/codegen/ruby_lexer.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Generated lexer tables and action methods.
6
+ module RubyLexer
7
+ private
8
+
9
+ # @rbs (Array[String] lines) -> void
10
+ def append_lexer: (Array[String] lines) -> void
11
+
12
+ # @rbs (Array[String] lines, IR::Lexer lexer) -> void
13
+ def append_lexer_rules: (Array[String] lines, IR::Lexer lexer) -> void
14
+
15
+ # @rbs (IR::LexerRule rule) -> String
16
+ def lexer_rule_literal: (IR::LexerRule rule) -> String
17
+
18
+ # @rbs (Array[String] lines, IR::Lexer lexer) -> void
19
+ def append_lexer_actions: (Array[String] lines, IR::Lexer lexer) -> void
20
+
21
+ # @rbs (IR::LexerRule rule) -> String
22
+ def lexer_action_source: (IR::LexerRule rule) -> String
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # Generated from lib/ibex/codegen/ruby_syntax.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Generates typed Red syntax views from @node metadata.
6
+ module RubySyntax
7
+ private
8
+
9
+ # @rbs (Array[String] lines) -> void
10
+ def append_syntax: (Array[String] lines) -> void
11
+
12
+ # @rbs () -> Hash[String, Hash[Symbol, untyped]]
13
+ def syntax_node_definitions: () -> Hash[String, Hash[Symbol, untyped]]
14
+
15
+ # @rbs (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
16
+ def merge_syntax_fields: (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
17
+
18
+ # @rbs (Array[String] lines, Hash[Symbol, untyped] definition) -> void
19
+ def append_syntax_node: (Array[String] lines, Hash[Symbol, untyped] definition) -> void
20
+
21
+ # @rbs (Array[String] lines, Hash[String, untyped] fields) -> void
22
+ def append_repetition_accessors: (Array[String] lines, Hash[String, untyped] fields) -> void
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ # Generated from lib/ibex/codegen/ruby_table_metadata.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Emits immutable identity and size metadata for generated parser tables.
6
+ module RubyTableMetadata
7
+ @automaton: IR::Automaton
8
+
9
+ @grammar: IR::Grammar
10
+
11
+ private
12
+
13
+ # @rbs (Array[String] lines, String indent) -> void
14
+ def append_table_metadata: (Array[String] lines, String indent) -> void
15
+
16
+ # @rbs (Array[String] lines) -> void
17
+ def append_entry_methods: (Array[String] lines) -> void
18
+
19
+ # @rbs () -> String
20
+ def entry_table_fields: () -> String
21
+
22
+ # @rbs () -> String
23
+ def recovery_table_fields: () -> String
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ # Generated from lib/ibex/codegen/ruby_value_printers.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Emits declarative value-printer tables and methods for Ruby parsers.
6
+ module RubyValuePrinters
7
+ @grammar: IR::Grammar
8
+
9
+ @line_convert: bool
10
+
11
+ @value_printer_action_method_source: ActionMethodSource?
12
+
13
+ private
14
+
15
+ # @rbs (Array[String] lines, String indent) -> void
16
+ def append_value_printer_table: (Array[String] lines, String indent) -> void
17
+
18
+ # @rbs (Array[String] lines) -> void
19
+ def append_value_printers: (Array[String] lines) -> void
20
+
21
+ # @rbs (Array[String] lines, IR::value_printer printer) -> void
22
+ def append_value_printer: (Array[String] lines, IR::value_printer printer) -> void
23
+
24
+ # @rbs () -> ActionMethodSource
25
+ def value_printer_action_method_source: () -> ActionMethodSource
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,76 @@
1
+ # Generated from lib/ibex/coverage/collector.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Coverage
5
+ # Strictly turns one or more complete parse sessions into a coverage report.
6
+ class Collector
7
+ @expected_sequence: Integer
8
+
9
+ @in_session: bool
10
+
11
+ @production_hits: Hash[Integer, Integer]
12
+
13
+ @state_hits: Hash[Integer, Integer]
14
+
15
+ @event_count: Integer
16
+
17
+ @sessions: Integer
18
+
19
+ @production_count: Integer?
20
+
21
+ @state_count: Integer?
22
+
23
+ @table_format_version: Integer?
24
+
25
+ @grammar_digest: String?
26
+
27
+ # @rbs () -> void
28
+ def initialize: () -> void
29
+
30
+ # @rbs (String path) -> Report
31
+ def self.collect_file: (String path) -> Report
32
+
33
+ # @rbs (Hash[String, untyped] document, source: String, line: Integer) -> void
34
+ def consume: (Hash[String, untyped] document, source: String, line: Integer) -> void
35
+
36
+ # @rbs (source: String) -> Report
37
+ def finish: (source: String) -> Report
38
+
39
+ private
40
+
41
+ # @rbs (Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
42
+ def start_session: (Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
43
+
44
+ # @rbs (String event, Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
45
+ def consume_session_event: (String event, Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
46
+
47
+ # @rbs (Hash[untyped, untyped] data, String source, Integer line)
48
+ # -> [[String, Integer, Integer, Integer], Integer]
49
+ def session_metadata: (Hash[untyped, untyped] data, String source, Integer line) -> [ [ String, Integer, Integer, Integer ], Integer ]
50
+
51
+ # @rbs ([String, Integer, Integer, Integer] metadata, String source, Integer line) -> void
52
+ def establish_metadata: ([ String, Integer, Integer, Integer ] metadata, String source, Integer line) -> void
53
+
54
+ # @rbs (String source, Integer line) -> void
55
+ def validate_metadata!: (String source, Integer line) -> void
56
+
57
+ # @rbs (untyped id, String source, Integer line) -> void
58
+ def hit_state: (untyped id, String source, Integer line) -> void
59
+
60
+ # @rbs (untyped id, String source, Integer line) -> void
61
+ def hit_production: (untyped id, String source, Integer line) -> void
62
+
63
+ # @rbs (untyped id, Integer total) -> bool
64
+ def valid_id?: (untyped id, Integer total) -> bool
65
+
66
+ # @rbs (Hash[Integer, Integer] hits, Integer id, String kind, String source, Integer line) -> void
67
+ def increment: (Hash[Integer, Integer] hits, Integer id, String kind, String source, Integer line) -> void
68
+
69
+ # @rbs [T] (T? value) -> T
70
+ def required_metadata: [T] (T? value) -> T
71
+
72
+ # @rbs (String source, Integer line, String message) -> bot
73
+ def invalid: (String source, Integer line, String message) -> bot
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,42 @@
1
+ # Generated from lib/ibex/coverage/event_stream.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Coverage
5
+ # Bounded reader for the public runtime-event JSON Lines protocol.
6
+ module EventStream
7
+ interface _CoverageEventInput
8
+ def gets: (Integer) -> String?
9
+ end
10
+
11
+ MAX_LINE_BYTES: Integer
12
+
13
+ MAX_NESTING: Integer
14
+
15
+ ROOT_KEYS: Array[String]
16
+
17
+ EVENT_TYPES: Array[String]
18
+
19
+ # @rbs (String path) { (Hash[String, untyped], Integer) -> void } -> void
20
+ def self.each_file: (String path) { (Hash[String, untyped], Integer) -> void } -> void
21
+
22
+ # @rbs (_CoverageEventInput input, source: String)
23
+ # { (Hash[String, untyped], Integer) -> void } -> void
24
+ def self.each_io: (_CoverageEventInput input, source: String) { (Hash[String, untyped], Integer) -> void } -> void
25
+
26
+ # @rbs (String line, String source, Integer line_number) -> void
27
+ private def self.reject_oversized_line: (String line, String source, Integer line_number) -> void
28
+
29
+ # @rbs (String line, String source, Integer line_number) -> Hash[String, untyped]
30
+ private def self.parse_line: (String line, String source, Integer line_number) -> Hash[String, untyped]
31
+
32
+ # @rbs (Hash[String, untyped] document, String source, Integer line_number) -> void
33
+ private def self.validate_envelope: (Hash[String, untyped] document, String source, Integer line_number) -> void
34
+
35
+ # @rbs (untyped value) -> bool
36
+ private def self.positive_integer?: (untyped value) -> bool
37
+
38
+ # @rbs (String source, Integer line_number, String message) -> bot
39
+ private def self.raise_invalid: (String source, Integer line_number, String message) -> bot
40
+ end
41
+ end
42
+ end