ibex 0.1.0 → 0.3.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 (603) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +89 -123
  3. data/docs/architecture.md +477 -31
  4. data/docs/bison-import.md +103 -0
  5. data/docs/comparison-policy.md +127 -0
  6. data/docs/configuration-model.md +59 -0
  7. data/docs/configuration-report.md +28 -0
  8. data/docs/conflict-explanation-reviews/v1/records/README.md +28 -0
  9. data/docs/conflict-explanation-study.md +62 -0
  10. data/docs/construction-profiling.md +157 -0
  11. data/docs/cst-migration.md +106 -0
  12. data/docs/cst.md +237 -0
  13. data/docs/decisions/0000-template.md +24 -0
  14. data/docs/decisions/0001-separate-ir-pipeline.md +34 -0
  15. data/docs/decisions/0002-opaque-user-code-boundary.md +32 -0
  16. data/docs/decisions/0003-self-hosted-grammar-frontend.md +32 -0
  17. data/docs/decisions/0004-shared-semantic-and-lossless-source-model.md +33 -0
  18. data/docs/decisions/0005-contained-grammar-composition.md +34 -0
  19. data/docs/decisions/0006-bounded-structural-grammar-lowering.md +32 -0
  20. data/docs/decisions/0007-shared-parser-construction-pipeline.md +33 -0
  21. data/docs/decisions/0008-versioned-runtime-package-boundary.md +36 -0
  22. data/docs/decisions/0009-isolated-parser-sessions.md +34 -0
  23. data/docs/decisions/0010-committed-runtime-observation.md +34 -0
  24. data/docs/decisions/0011-versioned-semantic-action-boundary.md +37 -0
  25. data/docs/decisions/0012-bounded-nonexecuting-analysis.md +37 -0
  26. data/docs/decisions/0013-transactional-generation-publication.md +37 -0
  27. data/docs/decisions/0014-versioned-generated-lexer.md +35 -0
  28. data/docs/decisions/0015-worker-isolated-browser-analysis.md +32 -0
  29. data/docs/decisions/0016-red-green-concrete-syntax.md +34 -0
  30. data/docs/decisions/0017-persistent-syntax-artifacts.md +35 -0
  31. data/docs/decisions/0018-conservative-incremental-syntax-reuse.md +38 -0
  32. data/docs/decisions/0019-runtime-syntax-session-boundary.md +51 -0
  33. data/docs/decisions/0020-grammar-ir-parser-contract.md +65 -0
  34. data/docs/decisions/0021-data-only-parser-table-sidecar.md +50 -0
  35. data/docs/decisions/0022-manifest-bound-verification-report.md +77 -0
  36. data/docs/decisions/0023-syntax-only-repair-results.md +48 -0
  37. data/docs/decisions/0024-direct-ielr-construction.md +42 -0
  38. data/docs/decisions/README.md +74 -0
  39. data/docs/declarative-configuration.md +262 -0
  40. data/docs/development.md +306 -0
  41. data/docs/direct-ielr-decision.md +120 -0
  42. data/docs/direct-multi-entry-decision.md +82 -0
  43. data/docs/editor-setup.md +26 -0
  44. data/docs/error-ux-review-rubric-v1.md +117 -0
  45. data/docs/error-ux-reviews/v1/records/README.md +22 -0
  46. data/docs/error-ux-round2-review-status-v1.json +27 -0
  47. data/docs/error-ux-round2-reviews/v1/records/README.md +30 -0
  48. data/docs/error-ux-round2-v1.json +1581 -0
  49. data/docs/error-ux-round2.md +111 -0
  50. data/docs/error-ux.md +114 -0
  51. data/docs/getting-started.md +80 -0
  52. data/docs/grammar-reference.md +629 -18
  53. data/docs/ielr-design.md +43 -0
  54. data/docs/ielr.md +92 -0
  55. data/docs/ja/bison-import.md +51 -0
  56. data/docs/ja/stable-api.md +53 -0
  57. data/docs/lexer-construction-profile.md +109 -0
  58. data/docs/lexer-migration.md +56 -0
  59. data/docs/maturity.md +128 -0
  60. data/docs/project-site-strategy.md +54 -0
  61. data/docs/racc-migration-evidence.md +45 -0
  62. data/docs/racc-migration.md +45 -6
  63. data/docs/release-readiness.md +221 -0
  64. data/docs/repair-semantics.md +123 -0
  65. data/docs/runtime-abi-evolution.md +307 -0
  66. data/docs/stability.md +234 -0
  67. data/docs/status.md +43 -0
  68. data/docs/syntax-sessions.md +183 -0
  69. data/docs/table-artifact.md +125 -0
  70. data/docs/test-interactions.md +219 -0
  71. data/docs/verification-report.md +137 -0
  72. data/docs/verifier-trust-boundary.md +199 -0
  73. data/docs/workloads.md +132 -0
  74. data/examples/README.md +60 -0
  75. data/examples/calculator.y +44 -0
  76. data/examples/csv.y +32 -0
  77. data/examples/ini.y +70 -0
  78. data/examples/json.y +48 -0
  79. data/examples/tiny_language.y +75 -0
  80. data/lib/ibex/analysis/digraph.rb +128 -0
  81. data/lib/ibex/analysis/sets.rb +5 -4
  82. data/lib/ibex/analysis.rb +1 -0
  83. data/lib/ibex/artifact_set.rb +63 -0
  84. data/lib/ibex/bison_import/importer.rb +516 -0
  85. data/lib/ibex/bison_import/tokenizer.rb +260 -0
  86. data/lib/ibex/bison_import.rb +200 -0
  87. data/lib/ibex/bounded_subprocess.rb +171 -0
  88. data/lib/ibex/cli/ambiguity.rb +75 -0
  89. data/lib/ibex/cli/analysis.rb +134 -0
  90. data/lib/ibex/cli/bison_import.rb +121 -0
  91. data/lib/ibex/cli/config.rb +128 -0
  92. data/lib/ibex/cli/counterexample_options.rb +6 -2
  93. data/lib/ibex/cli/coverage.rb +173 -0
  94. data/lib/ibex/cli/debug.rb +106 -0
  95. data/lib/ibex/cli/diagnostics.rb +136 -0
  96. data/lib/ibex/cli/documentation.rb +70 -0
  97. data/lib/ibex/cli/equiv.rb +169 -0
  98. data/lib/ibex/cli/error_messages.rb +184 -0
  99. data/lib/ibex/cli/explain.rb +85 -0
  100. data/lib/ibex/cli/fix.rb +203 -0
  101. data/lib/ibex/cli/formatting.rb +387 -0
  102. data/lib/ibex/cli/fuzz.rb +200 -0
  103. data/lib/ibex/cli/fuzz_regressions.rb +145 -0
  104. data/lib/ibex/cli/generation_artifacts.rb +189 -0
  105. data/lib/ibex/cli/generation_error_messages.rb +39 -0
  106. data/lib/ibex/cli/grammar_tests.rb +140 -0
  107. data/lib/ibex/cli/ir_tools.rb +128 -0
  108. data/lib/ibex/cli/lsp.rb +33 -0
  109. data/lib/ibex/cli/outputs.rb +133 -23
  110. data/lib/ibex/cli/racc_migration.rb +87 -0
  111. data/lib/ibex/cli/reduce.rb +202 -0
  112. data/lib/ibex/cli/reduce_reporting.rb +71 -0
  113. data/lib/ibex/cli/samples.rb +118 -0
  114. data/lib/ibex/cli/verify.rb +116 -0
  115. data/lib/ibex/cli/watch.rb +104 -0
  116. data/lib/ibex/cli.rb +825 -55
  117. data/lib/ibex/codegen/action_locations.rb +103 -0
  118. data/lib/ibex/codegen/action_method_source.rb +209 -0
  119. data/lib/ibex/codegen/action_source.rb +119 -0
  120. data/lib/ibex/codegen/ambiguity.rb +174 -0
  121. data/lib/ibex/codegen/cst_metadata.rb +171 -0
  122. data/lib/ibex/codegen/documentation.rb +170 -0
  123. data/lib/ibex/codegen/explain.rb +380 -0
  124. data/lib/ibex/codegen/generated_action_abi.rb +293 -0
  125. data/lib/ibex/codegen/html.rb +94 -10
  126. data/lib/ibex/codegen/mermaid.rb +43 -0
  127. data/lib/ibex/codegen/railroad.rb +197 -0
  128. data/lib/ibex/codegen/railroad_documentation.rb +59 -0
  129. data/lib/ibex/codegen/rbs.rb +331 -2
  130. data/lib/ibex/codegen/report.rb +67 -15
  131. data/lib/ibex/codegen/ruby.rb +305 -66
  132. data/lib/ibex/codegen/ruby_actions.rb +146 -0
  133. data/lib/ibex/codegen/ruby_ast.rb +121 -0
  134. data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
  135. data/lib/ibex/codegen/ruby_lexer.rb +83 -0
  136. data/lib/ibex/codegen/ruby_syntax.rb +96 -0
  137. data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
  138. data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
  139. data/lib/ibex/codegen/symbol_labels.rb +1 -1
  140. data/lib/ibex/configuration/analysis_grammar.rb +35 -0
  141. data/lib/ibex/configuration/explanation.rb +421 -0
  142. data/lib/ibex/configuration/inspector.rb +232 -0
  143. data/lib/ibex/configuration.rb +580 -0
  144. data/lib/ibex/coverage/collector.rb +198 -0
  145. data/lib/ibex/coverage/event_stream.rb +103 -0
  146. data/lib/ibex/coverage/report.rb +267 -0
  147. data/lib/ibex/coverage/runtime_event_validator.rb +169 -0
  148. data/lib/ibex/coverage.rb +13 -0
  149. data/lib/ibex/delta_reducer.rb +99 -0
  150. data/lib/ibex/diff.rb +140 -0
  151. data/lib/ibex/equiv/machine.rb +135 -0
  152. data/lib/ibex/equiv.rb +373 -0
  153. data/lib/ibex/error_messages/parser.rb +159 -0
  154. data/lib/ibex/error_messages/parser_v2.rb +198 -0
  155. data/lib/ibex/error_messages/renderer.rb +65 -0
  156. data/lib/ibex/error_messages/sentence_search.rb +196 -0
  157. data/lib/ibex/error_messages/update.rb +169 -0
  158. data/lib/ibex/error_messages.rb +165 -0
  159. data/lib/ibex/fix.rb +557 -0
  160. data/lib/ibex/frontend/ast.rb +166 -7
  161. data/lib/ibex/frontend/bootstrap_parser.rb +40 -4
  162. data/lib/ibex/frontend/diagnostic.rb +81 -0
  163. data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
  164. data/lib/ibex/frontend/dsl.rb +66 -7
  165. data/lib/ibex/frontend/formatter.rb +453 -0
  166. data/lib/ibex/frontend/generated_parser.rb +644 -190
  167. data/lib/ibex/frontend/generated_parser_base.rb +170 -32
  168. data/lib/ibex/frontend/generated_parser_includes.rb +51 -0
  169. data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
  170. data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
  171. data/lib/ibex/frontend/generation.rb +33 -0
  172. data/lib/ibex/frontend/lexer.rb +162 -10
  173. data/lib/ibex/frontend/lexer_recovery.rb +84 -0
  174. data/lib/ibex/frontend/parser/declarations.rb +262 -11
  175. data/lib/ibex/frontend/parser/parameters.rb +82 -0
  176. data/lib/ibex/frontend/parser/rules.rb +43 -6
  177. data/lib/ibex/frontend/parser.rb +182 -4
  178. data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
  179. data/lib/ibex/frontend/regenerator.rb +27 -1
  180. data/lib/ibex/frontend/resolution.rb +70 -0
  181. data/lib/ibex/frontend/resolver.rb +217 -0
  182. data/lib/ibex/frontend/rule_documentation.rb +104 -0
  183. data/lib/ibex/frontend/source_cursor.rb +133 -9
  184. data/lib/ibex/frontend/source_document.rb +229 -0
  185. data/lib/ibex/frontend/source_loader.rb +150 -0
  186. data/lib/ibex/frontend/source_span.rb +89 -0
  187. data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
  188. data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
  189. data/lib/ibex/frontend/token_adapter/declaration_state.rb +244 -22
  190. data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
  191. data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
  192. data/lib/ibex/frontend/token_adapter.rb +18 -3
  193. data/lib/ibex/frontend.rb +14 -2
  194. data/lib/ibex/fuzz.rb +219 -0
  195. data/lib/ibex/generation_input.rb +57 -0
  196. data/lib/ibex/generation_manifest.rb +211 -0
  197. data/lib/ibex/generation_transaction.rb +261 -0
  198. data/lib/ibex/generation_transaction_recovery.rb +109 -0
  199. data/lib/ibex/generation_transaction_validation.rb +196 -0
  200. data/lib/ibex/grammar_tests.rb +206 -0
  201. data/lib/ibex/ir/automaton_ir.rb +86 -11
  202. data/lib/ibex/ir/grammar_ir.rb +170 -26
  203. data/lib/ibex/ir/lexer_ir.rb +76 -0
  204. data/lib/ibex/ir/parser_contract.rb +135 -0
  205. data/lib/ibex/ir/serialize.rb +268 -50
  206. data/lib/ibex/ir/validator/automaton.rb +375 -0
  207. data/lib/ibex/ir/validator/base.rb +147 -0
  208. data/lib/ibex/ir/validator/grammar.rb +634 -0
  209. data/lib/ibex/ir/validator/lexer.rb +113 -0
  210. data/lib/ibex/ir/validator.rb +63 -0
  211. data/lib/ibex/ir.rb +71 -5
  212. data/lib/ibex/lalr/build_metrics.rb +71 -0
  213. data/lib/ibex/lalr/builder.rb +514 -52
  214. data/lib/ibex/lalr/conflict.rb +1 -0
  215. data/lib/ibex/lalr/conflict_search.rb +26 -9
  216. data/lib/ibex/lalr/counterexample.rb +38 -18
  217. data/lib/ibex/lalr/direct_lookaheads.rb +289 -0
  218. data/lib/ibex/lalr/goto_follows.rb +229 -0
  219. data/lib/ibex/lalr/ielr/annotator.rb +214 -0
  220. data/lib/ibex/lalr/ielr/bits.rb +28 -0
  221. data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
  222. data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
  223. data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
  224. data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
  225. data/lib/ibex/lalr/ielr/split_state.rb +20 -0
  226. data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
  227. data/lib/ibex/lalr/ielr_partition.rb +166 -0
  228. data/lib/ibex/lalr/inadequacy_report.rb +50 -0
  229. data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
  230. data/lib/ibex/lalr/lr0_collection.rb +121 -0
  231. data/lib/ibex/lalr/on_error_reductions.rb +74 -0
  232. data/lib/ibex/lalr/unreachable_states.rb +80 -0
  233. data/lib/ibex/lalr.rb +59 -1
  234. data/lib/ibex/location.rb +129 -0
  235. data/lib/ibex/lsp/document_handlers.rb +68 -0
  236. data/lib/ibex/lsp/document_store.rb +264 -0
  237. data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
  238. data/lib/ibex/lsp/document_store_validation.rb +61 -0
  239. data/lib/ibex/lsp/initialization_handlers.rb +80 -0
  240. data/lib/ibex/lsp/navigation_handlers.rb +70 -0
  241. data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
  242. data/lib/ibex/lsp/position_codec.rb +113 -0
  243. data/lib/ibex/lsp/protocol_error.rb +33 -0
  244. data/lib/ibex/lsp/request_handlers.rb +46 -0
  245. data/lib/ibex/lsp/request_support.rb +94 -0
  246. data/lib/ibex/lsp/server.rb +148 -0
  247. data/lib/ibex/lsp/symbol_index.rb +241 -0
  248. data/lib/ibex/lsp/symbol_index_builder.rb +277 -0
  249. data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
  250. data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
  251. data/lib/ibex/lsp/symbol_occurrence.rb +23 -0
  252. data/lib/ibex/lsp/transport.rb +128 -0
  253. data/lib/ibex/lsp/workspace.rb +128 -0
  254. data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
  255. data/lib/ibex/lsp.rb +33 -0
  256. data/lib/ibex/messages/en.yml +28 -0
  257. data/lib/ibex/messages/ja.yml +28 -0
  258. data/lib/ibex/messages.rb +68 -0
  259. data/lib/ibex/metrics.rb +175 -0
  260. data/lib/ibex/normalize/declarations.rb +142 -7
  261. data/lib/ibex/normalize/diagnostics.rb +94 -24
  262. data/lib/ibex/normalize/expander.rb +64 -59
  263. data/lib/ibex/normalize/expression.rb +63 -40
  264. data/lib/ibex/normalize/grammar_builder.rb +26 -0
  265. data/lib/ibex/normalize/inline_expansion.rb +465 -0
  266. data/lib/ibex/normalize/inline_validation.rb +174 -0
  267. data/lib/ibex/normalize/lexer.rb +131 -0
  268. data/lib/ibex/normalize/named_references.rb +60 -0
  269. data/lib/ibex/normalize/nodes.rb +46 -0
  270. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +70 -0
  271. data/lib/ibex/normalize/parameter_lowering.rb +143 -0
  272. data/lib/ibex/normalize/parameter_substitution.rb +125 -0
  273. data/lib/ibex/normalize/parameter_validation.rb +140 -0
  274. data/lib/ibex/normalize/parameters.rb +226 -0
  275. data/lib/ibex/normalize/parser_configuration.rb +70 -0
  276. data/lib/ibex/normalize/recovery_declarations.rb +84 -0
  277. data/lib/ibex/normalize.rb +172 -17
  278. data/lib/ibex/racc_migration/checker.rb +122 -0
  279. data/lib/ibex/racc_migration/harness.rb +177 -0
  280. data/lib/ibex/racc_migration/report.rb +97 -0
  281. data/lib/ibex/racc_migration.rb +12 -0
  282. data/lib/ibex/rake_task.rb +116 -0
  283. data/lib/ibex/samples.rb +216 -0
  284. data/lib/ibex/table_artifact/builder.rb +266 -0
  285. data/lib/ibex/table_artifact/cst_projection.rb +70 -0
  286. data/lib/ibex/table_artifact/document.rb +39 -0
  287. data/lib/ibex/table_artifact/executor.rb +187 -0
  288. data/lib/ibex/table_artifact/serializer.rb +57 -0
  289. data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
  290. data/lib/ibex/table_artifact/validator/support.rb +86 -0
  291. data/lib/ibex/table_artifact/validator/tables.rb +238 -0
  292. data/lib/ibex/table_artifact/validator.rb +253 -0
  293. data/lib/ibex/table_artifact.rb +88 -0
  294. data/lib/ibex/table_simulation/result.rb +55 -0
  295. data/lib/ibex/table_simulation/simulator.rb +253 -0
  296. data/lib/ibex/table_simulation/step.rb +62 -0
  297. data/lib/ibex/table_simulation/text.rb +31 -0
  298. data/lib/ibex/table_simulation.rb +13 -0
  299. data/lib/ibex/tables.rb +22 -69
  300. data/lib/ibex/verifiable_generation_bundle.rb +86 -0
  301. data/lib/ibex/verification_report/builder.rb +159 -0
  302. data/lib/ibex/verification_report/canonical_ir.rb +123 -0
  303. data/lib/ibex/verification_report/logical_path.rb +68 -0
  304. data/lib/ibex/verification_report/validator.rb +329 -0
  305. data/lib/ibex/verification_report.rb +69 -0
  306. data/lib/ibex/verify/action_correspondence.rb +138 -0
  307. data/lib/ibex/verify/language_witness.rb +295 -0
  308. data/lib/ibex/verify/reference_collection.rb +190 -0
  309. data/lib/ibex/verify/result.rb +73 -0
  310. data/lib/ibex/verify/verifier.rb +598 -0
  311. data/lib/ibex/verify.rb +15 -0
  312. data/lib/ibex/version.rb +1 -1
  313. data/lib/ibex/watch/runner.rb +181 -0
  314. data/lib/ibex/watch/source_snapshot.rb +98 -0
  315. data/lib/ibex/watch.rb +11 -0
  316. data/lib/ibex.rb +35 -1
  317. data/schema/automaton-ir-definitions.schema.json +401 -0
  318. data/schema/automaton-ir.schema.json +65 -0
  319. data/schema/benchmark-v1.schema.json +212 -0
  320. data/schema/benchmark-v2.schema.json +61 -0
  321. data/schema/bison-import-v1.schema.json +106 -0
  322. data/schema/conflict-explanation-review-v1.schema.json +196 -0
  323. data/schema/conflict-explanation-study-v1.schema.json +528 -0
  324. data/schema/construction-profile-v1.schema.json +779 -0
  325. data/schema/cst-v1.json +170 -0
  326. data/schema/diff-v1.schema.json +41 -0
  327. data/schema/direct-ielr-decision-v1.schema.json +200 -0
  328. data/schema/equiv-v1.schema.json +64 -0
  329. data/schema/error-ux-review-v1.schema.json +609 -0
  330. data/schema/error-ux-round2-review-v1.schema.json +191 -0
  331. data/schema/error-ux-round2-v1.schema.json +519 -0
  332. data/schema/error-ux-v1.schema.json +258 -0
  333. data/schema/explain-v1.schema.json +495 -0
  334. data/schema/fix-v1.schema.json +64 -0
  335. data/schema/fix-v2.schema.json +66 -0
  336. data/schema/fix-v3.schema.json +101 -0
  337. data/schema/frontend-diagnostics-v1.schema.json +154 -0
  338. data/schema/fuzz-regression-v1.schema.json +79 -0
  339. data/schema/fuzz-v1.schema.json +114 -0
  340. data/schema/generation-manifest-v1.schema.json +115 -0
  341. data/schema/grammar-ir-extensions.schema.json +734 -0
  342. data/schema/grammar-ir-foundation.schema.json +426 -0
  343. data/schema/grammar-ir.schema.json +271 -0
  344. data/schema/ielr-benchmark-v1.schema.json +85 -0
  345. data/schema/lexer-ir-v1.schema.json +215 -0
  346. data/schema/lexer-profile-v1.schema.json +491 -0
  347. data/schema/metrics-v1.schema.json +60 -0
  348. data/schema/migration-check-v1.schema.json +60 -0
  349. data/schema/performance-comparison-v1.schema.json +395 -0
  350. data/schema/public-performance-comparison-v1.schema.json +506 -0
  351. data/schema/public-performance-profile-v1.schema.json +360 -0
  352. data/schema/reduce-v1.schema.json +22 -0
  353. data/schema/reduce-v2.schema.json +63 -0
  354. data/schema/runtime-coverage-v1.schema.json +86 -0
  355. data/schema/runtime-event-v1.schema.json +308 -0
  356. data/schema/table-artifact-v1.schema.json +377 -0
  357. data/schema/table-simulation-v1.schema.json +70 -0
  358. data/schema/verification-report-v1.schema.json +222 -0
  359. data/schema/verify-v1.schema.json +42 -0
  360. data/sig/ibex/analysis/digraph.rbs +19 -0
  361. data/sig/ibex/artifact_set.rbs +37 -0
  362. data/sig/ibex/bison_import/importer.rbs +140 -0
  363. data/sig/ibex/bison_import/tokenizer.rbs +91 -0
  364. data/sig/ibex/bison_import.rbs +95 -0
  365. data/sig/ibex/bounded_subprocess.rbs +76 -0
  366. data/sig/ibex/cli/ambiguity.rbs +28 -0
  367. data/sig/ibex/cli/analysis.rbs +43 -0
  368. data/sig/ibex/cli/bison_import.rbs +32 -0
  369. data/sig/ibex/cli/config.rbs +35 -0
  370. data/sig/ibex/cli/counterexample_options.rbs +2 -0
  371. data/sig/ibex/cli/coverage.rbs +53 -0
  372. data/sig/ibex/cli/debug.rbs +28 -0
  373. data/sig/ibex/cli/diagnostics.rbs +51 -0
  374. data/sig/ibex/cli/documentation.rbs +29 -0
  375. data/sig/ibex/cli/equiv.rbs +49 -0
  376. data/sig/ibex/cli/error_messages.rbs +63 -0
  377. data/sig/ibex/cli/explain.rbs +31 -0
  378. data/sig/ibex/cli/fix.rbs +53 -0
  379. data/sig/ibex/cli/formatting.rbs +107 -0
  380. data/sig/ibex/cli/fuzz.rbs +47 -0
  381. data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
  382. data/sig/ibex/cli/generation_artifacts.rbs +69 -0
  383. data/sig/ibex/cli/generation_error_messages.rbs +19 -0
  384. data/sig/ibex/cli/grammar_tests.rbs +48 -0
  385. data/sig/ibex/cli/ir_tools.rbs +39 -0
  386. data/sig/ibex/cli/lsp.rbs +14 -0
  387. data/sig/ibex/cli/outputs.rbs +26 -3
  388. data/sig/ibex/cli/racc_migration.rbs +30 -0
  389. data/sig/ibex/cli/reduce.rbs +60 -0
  390. data/sig/ibex/cli/reduce_reporting.rbs +27 -0
  391. data/sig/ibex/cli/samples.rbs +38 -0
  392. data/sig/ibex/cli/verify.rbs +28 -0
  393. data/sig/ibex/cli/watch.rbs +43 -0
  394. data/sig/ibex/cli.rbs +182 -9
  395. data/sig/ibex/codegen/action_locations.rbs +45 -0
  396. data/sig/ibex/codegen/action_method_source.rbs +65 -0
  397. data/sig/ibex/codegen/action_source.rbs +50 -0
  398. data/sig/ibex/codegen/ambiguity.rbs +60 -0
  399. data/sig/ibex/codegen/cst_metadata.rbs +59 -0
  400. data/sig/ibex/codegen/documentation.rbs +50 -0
  401. data/sig/ibex/codegen/explain.rbs +105 -0
  402. data/sig/ibex/codegen/generated_action_abi.rbs +105 -0
  403. data/sig/ibex/codegen/html.rbs +18 -2
  404. data/sig/ibex/codegen/mermaid.rbs +16 -0
  405. data/sig/ibex/codegen/railroad.rbs +82 -0
  406. data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
  407. data/sig/ibex/codegen/rbs.rbs +86 -4
  408. data/sig/ibex/codegen/report.rbs +16 -8
  409. data/sig/ibex/codegen/ruby.rbs +105 -28
  410. data/sig/ibex/codegen/ruby_actions.rbs +54 -0
  411. data/sig/ibex/codegen/ruby_ast.rbs +34 -0
  412. data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
  413. data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
  414. data/sig/ibex/codegen/ruby_syntax.rbs +27 -0
  415. data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
  416. data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
  417. data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
  418. data/sig/ibex/configuration/explanation.rbs +195 -0
  419. data/sig/ibex/configuration/inspector.rbs +53 -0
  420. data/sig/ibex/configuration.rbs +242 -0
  421. data/sig/ibex/coverage/collector.rbs +78 -0
  422. data/sig/ibex/coverage/event_stream.rbs +44 -0
  423. data/sig/ibex/coverage/report.rbs +102 -0
  424. data/sig/ibex/coverage/runtime_event_validator.rbs +70 -0
  425. data/sig/ibex/coverage.rbs +7 -0
  426. data/sig/ibex/delta_reducer.rbs +38 -0
  427. data/sig/ibex/diff.rbs +47 -0
  428. data/sig/ibex/equiv/machine.rbs +54 -0
  429. data/sig/ibex/equiv.rbs +129 -0
  430. data/sig/ibex/error_messages/parser.rbs +58 -0
  431. data/sig/ibex/error_messages/parser_v2.rbs +67 -0
  432. data/sig/ibex/error_messages/renderer.rbs +23 -0
  433. data/sig/ibex/error_messages/sentence_search.rbs +80 -0
  434. data/sig/ibex/error_messages/update.rbs +43 -0
  435. data/sig/ibex/error_messages.rbs +85 -0
  436. data/sig/ibex/fix.rbs +138 -0
  437. data/sig/ibex/frontend/ast.rbs +237 -22
  438. data/sig/ibex/frontend/bootstrap_parser.rbs +13 -0
  439. data/sig/ibex/frontend/diagnostic.rbs +53 -0
  440. data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
  441. data/sig/ibex/frontend/dsl.rbs +33 -4
  442. data/sig/ibex/frontend/formatter.rbs +143 -0
  443. data/sig/ibex/frontend/generated_parser.rbs +228 -68
  444. data/sig/ibex/frontend/generated_parser_base.rbs +65 -12
  445. data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
  446. data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
  447. data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
  448. data/sig/ibex/frontend/generation.rbs +6 -0
  449. data/sig/ibex/frontend/lexer.rbs +49 -2
  450. data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
  451. data/sig/ibex/frontend/parser/declarations.rbs +57 -0
  452. data/sig/ibex/frontend/parser/parameters.rbs +28 -0
  453. data/sig/ibex/frontend/parser/rules.rbs +3 -0
  454. data/sig/ibex/frontend/parser.rbs +66 -0
  455. data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
  456. data/sig/ibex/frontend/regenerator.rbs +11 -0
  457. data/sig/ibex/frontend/resolution.rbs +34 -0
  458. data/sig/ibex/frontend/resolver.rbs +91 -0
  459. data/sig/ibex/frontend/rule_documentation.rbs +42 -0
  460. data/sig/ibex/frontend/source_cursor.rbs +38 -5
  461. data/sig/ibex/frontend/source_document.rbs +119 -0
  462. data/sig/ibex/frontend/source_loader.rbs +66 -0
  463. data/sig/ibex/frontend/source_span.rbs +56 -0
  464. data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
  465. data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
  466. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +83 -3
  467. data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
  468. data/sig/ibex/frontend/token_adapter.rbs +11 -2
  469. data/sig/ibex/frontend.rbs +1 -1
  470. data/sig/ibex/fuzz.rbs +71 -0
  471. data/sig/ibex/generation_input.rbs +37 -0
  472. data/sig/ibex/generation_manifest.rbs +70 -0
  473. data/sig/ibex/generation_transaction.rbs +82 -0
  474. data/sig/ibex/generation_transaction_recovery.rbs +36 -0
  475. data/sig/ibex/generation_transaction_validation.rbs +65 -0
  476. data/sig/ibex/grammar_tests.rbs +93 -0
  477. data/sig/ibex/ir/automaton_ir.rbs +35 -10
  478. data/sig/ibex/ir/grammar_ir.rbs +96 -22
  479. data/sig/ibex/ir/lexer_ir.rbs +57 -0
  480. data/sig/ibex/ir/parser_contract.rbs +69 -0
  481. data/sig/ibex/ir/serialize.rbs +75 -23
  482. data/sig/ibex/ir/validator/automaton.rbs +112 -0
  483. data/sig/ibex/ir/validator/base.rbs +69 -0
  484. data/sig/ibex/ir/validator/grammar.rbs +195 -0
  485. data/sig/ibex/ir/validator/lexer.rbs +37 -0
  486. data/sig/ibex/ir/validator.rbs +16 -0
  487. data/sig/ibex/ir.rbs +45 -5
  488. data/sig/ibex/lalr/build_metrics.rbs +60 -0
  489. data/sig/ibex/lalr/builder.rbs +150 -19
  490. data/sig/ibex/lalr/conflict_search.rbs +12 -5
  491. data/sig/ibex/lalr/counterexample.rbs +20 -14
  492. data/sig/ibex/lalr/direct_lookaheads.rbs +93 -0
  493. data/sig/ibex/lalr/goto_follows.rbs +89 -0
  494. data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
  495. data/sig/ibex/lalr/ielr/bits.rbs +14 -0
  496. data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
  497. data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
  498. data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
  499. data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
  500. data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
  501. data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
  502. data/sig/ibex/lalr/ielr_partition.rbs +71 -0
  503. data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
  504. data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
  505. data/sig/ibex/lalr/lr0_collection.rbs +50 -0
  506. data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
  507. data/sig/ibex/lalr/unreachable_states.rbs +25 -0
  508. data/sig/ibex/lalr.rbs +17 -1
  509. data/sig/ibex/location.rbs +67 -0
  510. data/sig/ibex/lsp/document_handlers.rbs +24 -0
  511. data/sig/ibex/lsp/document_store.rbs +94 -0
  512. data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
  513. data/sig/ibex/lsp/document_store_validation.rbs +26 -0
  514. data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
  515. data/sig/ibex/lsp/navigation_handlers.rbs +33 -0
  516. data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
  517. data/sig/ibex/lsp/position_codec.rbs +44 -0
  518. data/sig/ibex/lsp/protocol_error.rbs +32 -0
  519. data/sig/ibex/lsp/request_handlers.rbs +26 -0
  520. data/sig/ibex/lsp/request_support.rbs +40 -0
  521. data/sig/ibex/lsp/server.rbs +55 -0
  522. data/sig/ibex/lsp/symbol_index.rbs +77 -0
  523. data/sig/ibex/lsp/symbol_index_builder.rbs +88 -0
  524. data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
  525. data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
  526. data/sig/ibex/lsp/symbol_occurrence.rbs +31 -0
  527. data/sig/ibex/lsp/transport.rbs +47 -0
  528. data/sig/ibex/lsp/workspace.rbs +42 -0
  529. data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
  530. data/sig/ibex/lsp.rbs +7 -0
  531. data/sig/ibex/messages.rbs +26 -0
  532. data/sig/ibex/metrics.rbs +50 -0
  533. data/sig/ibex/normalize/declarations.rbs +31 -0
  534. data/sig/ibex/normalize/diagnostics.rbs +13 -4
  535. data/sig/ibex/normalize/expander.rbs +22 -16
  536. data/sig/ibex/normalize/expression.rbs +11 -9
  537. data/sig/ibex/normalize/grammar_builder.rbs +11 -0
  538. data/sig/ibex/normalize/inline_expansion.rbs +129 -0
  539. data/sig/ibex/normalize/inline_validation.rbs +40 -0
  540. data/sig/ibex/normalize/lexer.rbs +37 -0
  541. data/sig/ibex/normalize/named_references.rbs +20 -0
  542. data/sig/ibex/normalize/nodes.rbs +14 -0
  543. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +33 -0
  544. data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
  545. data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
  546. data/sig/ibex/normalize/parameter_validation.rbs +44 -0
  547. data/sig/ibex/normalize/parameters.rbs +51 -0
  548. data/sig/ibex/normalize/parser_configuration.rbs +23 -0
  549. data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
  550. data/sig/ibex/normalize.rbs +129 -18
  551. data/sig/ibex/racc_migration/checker.rbs +36 -0
  552. data/sig/ibex/racc_migration/harness.rbs +16 -0
  553. data/sig/ibex/racc_migration/report.rbs +55 -0
  554. data/sig/ibex/racc_migration.rbs +8 -0
  555. data/sig/ibex/rake_task.rbs +51 -0
  556. data/sig/ibex/samples.rbs +60 -0
  557. data/sig/ibex/table_artifact/builder.rbs +93 -0
  558. data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
  559. data/sig/ibex/table_artifact/document.rbs +27 -0
  560. data/sig/ibex/table_artifact/executor.rbs +66 -0
  561. data/sig/ibex/table_artifact/serializer.rbs +25 -0
  562. data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
  563. data/sig/ibex/table_artifact/validator/support.rbs +46 -0
  564. data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
  565. data/sig/ibex/table_artifact/validator.rbs +66 -0
  566. data/sig/ibex/table_artifact.rbs +32 -0
  567. data/sig/ibex/table_simulation/result.rbs +36 -0
  568. data/sig/ibex/table_simulation/simulator.rbs +98 -0
  569. data/sig/ibex/table_simulation/step.rbs +42 -0
  570. data/sig/ibex/table_simulation/text.rbs +14 -0
  571. data/sig/ibex/table_simulation.rbs +7 -0
  572. data/sig/ibex/tables.rbs +10 -35
  573. data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
  574. data/sig/ibex/verification_report/builder.rbs +53 -0
  575. data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
  576. data/sig/ibex/verification_report/logical_path.rbs +34 -0
  577. data/sig/ibex/verification_report/validator.rbs +114 -0
  578. data/sig/ibex/verification_report.rbs +44 -0
  579. data/sig/ibex/verify/action_correspondence.rbs +50 -0
  580. data/sig/ibex/verify/language_witness.rbs +112 -0
  581. data/sig/ibex/verify/reference_collection.rbs +63 -0
  582. data/sig/ibex/verify/result.rbs +52 -0
  583. data/sig/ibex/verify/verifier.rbs +170 -0
  584. data/sig/ibex/verify.rbs +6 -0
  585. data/sig/ibex/watch/runner.rbs +58 -0
  586. data/sig/ibex/watch/source_snapshot.rbs +46 -0
  587. data/sig/ibex/watch.rbs +7 -0
  588. data/sig/ibex.rbs +2 -0
  589. metadata +524 -19
  590. data/.rubocop.yml +0 -43
  591. data/CHANGELOG.md +0 -30
  592. data/Rakefile +0 -25
  593. data/Steepfile +0 -10
  594. data/docs/compat-notes.md +0 -37
  595. data/docs/lexer-coverage.md +0 -14
  596. data/docs/phase10-extensions.md +0 -27
  597. data/gemfiles/Gemfile +0 -7
  598. data/gemfiles/Gemfile.lock +0 -98
  599. data/lib/ibex/frontend/grammar.y +0 -156
  600. data/lib/ibex/runtime/parser.rb +0 -360
  601. data/lib/ibex/runtime.rb +0 -8
  602. data/sig/ibex/runtime/parser.rbs +0 -167
  603. data/sig/ibex/runtime.rbs +0 -6
@@ -0,0 +1,37 @@
1
+ # Generated from lib/ibex/normalize/lexer.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Lexer declaration normalization and static safety checks.
5
+ module NormalizeLexer
6
+ private
7
+
8
+ # @rbs () -> IR::Lexer?
9
+ def normalize_lexer: () -> IR::Lexer?
10
+
11
+ # @rbs (Frontend::AST::LexerState definition, Array[String] states, Array[IR::LexerRule] rules,
12
+ # Array[IR::lexer_warning] warnings) -> void
13
+ def normalize_lexer_state: (Frontend::AST::LexerState definition, Array[String] states, Array[IR::LexerRule] rules, Array[IR::lexer_warning] warnings) -> void
14
+
15
+ # @rbs (Frontend::AST::LexerRule definition, String state, Integer id,
16
+ # Array[IR::lexer_warning] warnings) -> IR::LexerRule
17
+ def normalize_lexer_rule: (Frontend::AST::LexerRule definition, String state, Integer id, Array[IR::lexer_warning] warnings) -> IR::LexerRule
18
+
19
+ # @rbs (Frontend::AST::LexerRule definition) -> void
20
+ def validate_lexer_token: (Frontend::AST::LexerRule definition) -> void
21
+
22
+ # @rbs (Frontend::AST::LexerRule definition) -> void
23
+ def validate_lexer_action: (Frontend::AST::LexerRule definition) -> void
24
+
25
+ # @rbs (Frontend::AST::LexerRule definition) -> [String, String]
26
+ def normalize_lexer_pattern: (Frontend::AST::LexerRule definition) -> [ String, String ]
27
+
28
+ # @rbs (String raw, Frontend::Location location) -> String
29
+ def decode_lexer_literal: (String raw, Frontend::Location location) -> String
30
+
31
+ # @rbs (Frontend::AST::LexerRule definition, String source, String options) -> void
32
+ def validate_lexer_regexp: (Frontend::AST::LexerRule definition, String source, String options) -> void
33
+
34
+ # @rbs (String source) -> bool
35
+ def risky_lexer_pattern?: (String source) -> bool
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ # Generated from lib/ibex/normalize/named_references.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Named-reference collection and validation shared by ordinary and parameterized items.
5
+ module NormalizeNamedReferences
6
+ private
7
+
8
+ # @rbs (Frontend::AST::Group group) -> void
9
+ def reject_group_named_references: (Frontend::AST::Group group) -> void
10
+
11
+ # @rbs (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
12
+ def named_reference_in: (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
13
+
14
+ # @rbs (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
15
+ def add_named_reference: (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
16
+
17
+ # @rbs (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
18
+ def unwrap_reference: (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ # Generated from lib/ibex/normalize/nodes.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Validation and normalization for generated AST node declarations.
5
+ module NormalizeNodes
6
+ private
7
+
8
+ # @rbs (Frontend::AST::Alternative alternative, Array[String] rhs) -> IR::node_annotation?
9
+ def normalize_node_annotation: (Frontend::AST::Alternative alternative, Array[String] rhs) -> IR::node_annotation?
10
+
11
+ # @rbs (Frontend::AST::NodeAnnotation annotation, Array[String] rhs) -> void
12
+ def validate_node_fields: (Frontend::AST::NodeAnnotation annotation, Array[String] rhs) -> void
13
+ end
14
+ end
@@ -0,0 +1,33 @@
1
+ # Generated from lib/ibex/normalize/parameter_ebnf_lowering.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Resumable EBNF lowering used inside specialized parameter alternatives.
5
+ module NormalizeParameterEbnfLowering
6
+ private
7
+
8
+ # @rbs (NormalizeParameters::parameter_frame frame,
9
+ # Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
10
+ def lower_parameter_suffix: (NormalizeParameters::parameter_frame frame, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
11
+
12
+ # @rbs (NormalizeParameters::parameter_frame frame,
13
+ # Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
14
+ def finish_parameter_suffix: (NormalizeParameters::parameter_frame frame, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
15
+
16
+ # @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
17
+ def lower_parameter_separated_list: (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
18
+
19
+ # @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
20
+ def finish_parameter_separated_list: (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
21
+
22
+ # @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::Group item) -> void
23
+ def lower_parameter_group: (NormalizeParameters::parameter_frame frame, Frontend::AST::Group item) -> void
24
+
25
+ # @rbs (NormalizeParameters::parameter_frame frame, String helper, Frontend::AST::Group item,
26
+ # Array[Frontend::AST::item] alternative) -> void
27
+ def start_parameter_group_alternative: (NormalizeParameters::parameter_frame frame, String helper, Frontend::AST::Group item, Array[Frontend::AST::item] alternative) -> void
28
+
29
+ # @rbs (NormalizeParameters::parameter_frame frame, String helper,
30
+ # Frontend::AST::Group item, Integer length) -> void
31
+ def finish_parameter_group_alternative: (NormalizeParameters::parameter_frame frame, String helper, Frontend::AST::Group item, Integer length) -> void
32
+ end
33
+ end
@@ -0,0 +1,35 @@
1
+ # Generated from lib/ibex/normalize/parameter_lowering.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Resumable, source-ordered lowering for specialized parameter alternatives.
5
+ module NormalizeParameterLowering
6
+ private
7
+
8
+ # @rbs (NormalizeParameters::parameter_frame frame) -> void
9
+ def advance_parameter_alternative: (NormalizeParameters::parameter_frame frame) -> void
10
+
11
+ # @rbs (NormalizeParameters::parameter_frame frame) { () -> void } -> void
12
+ def with_parameter_frame_context: (NormalizeParameters::parameter_frame frame) { () -> void } -> void
13
+
14
+ # @rbs (NormalizeParameters::parameter_frame frame) -> bool
15
+ def parameter_items_remaining?: (NormalizeParameters::parameter_frame frame) -> bool
16
+
17
+ # @rbs (NormalizeParameters::parameter_frame frame) -> void
18
+ def start_parameter_item: (NormalizeParameters::parameter_frame frame) -> void
19
+
20
+ # @rbs (NormalizeParameters::parameter_frame frame, NormalizeParameters::parameter_operation operation) -> void
21
+ def process_parameter_operation: (NormalizeParameters::parameter_frame frame, NormalizeParameters::parameter_operation operation) -> void
22
+
23
+ # @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
24
+ def lower_parameter_item: (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
25
+
26
+ # @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::ParameterizedReference item) -> void
27
+ def lower_parameter_call: (NormalizeParameters::parameter_frame frame, Frontend::AST::ParameterizedReference item) -> void
28
+
29
+ # @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
30
+ def finish_parameter_item: (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
31
+
32
+ # @rbs (NormalizeParameters::parameter_frame frame) -> void
33
+ def finish_parameter_alternative: (NormalizeParameters::parameter_frame frame) -> void
34
+ end
35
+ end
@@ -0,0 +1,42 @@
1
+ # Generated from lib/ibex/normalize/parameter_substitution.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Structural, sharing-preserving substitution for parameterized user rules.
5
+ module NormalizeParameterSubstitution
6
+ private
7
+
8
+ # @rbs (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) ->
9
+ # Frontend::AST::Alternative
10
+ def substitute_parameter_alternative: (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Alternative
11
+
12
+ # @rbs (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> String?
13
+ def substitute_parameter_precedence: (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> String?
14
+
15
+ # @rbs (Frontend::AST::item item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
16
+ def substitute_parameter_item: (Frontend::AST::item item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
17
+
18
+ # @rbs (Frontend::AST::SymbolReference formal, Frontend::AST::item argument) -> Frontend::AST::item
19
+ def substitute_formal_reference: (Frontend::AST::SymbolReference formal, Frontend::AST::item argument) -> Frontend::AST::item
20
+
21
+ # @rbs (Frontend::AST::item item, ?Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
22
+ def clone_parameter_item: (Frontend::AST::item item, ?Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
23
+
24
+ # @rbs (Frontend::AST::SymbolReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
25
+ def clone_parameter_symbol: (Frontend::AST::SymbolReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
26
+
27
+ # @rbs (Frontend::AST::ParameterizedReference item, Hash[String, Frontend::AST::item] bindings) ->
28
+ # Frontend::AST::ParameterizedReference
29
+ def clone_parameter_call: (Frontend::AST::ParameterizedReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::ParameterizedReference
30
+
31
+ # @rbs (Frontend::AST::Group item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Group
32
+ def clone_parameter_group: (Frontend::AST::Group item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Group
33
+
34
+ # @rbs (Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item,
35
+ # Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
36
+ def clone_parameter_suffix: (Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
37
+
38
+ # @rbs (Frontend::AST::SeparatedList item, Hash[String, Frontend::AST::item] bindings) ->
39
+ # Frontend::AST::SeparatedList
40
+ def clone_parameter_separated_list: (Frontend::AST::SeparatedList item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::SeparatedList
41
+ end
42
+ end
@@ -0,0 +1,44 @@
1
+ # Generated from lib/ibex/normalize/parameter_validation.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Static validation and collection of parameterized user rule definitions.
5
+ module NormalizeParameterValidation
6
+ private
7
+
8
+ # @rbs () -> void
9
+ def gather_parameter_templates: () -> void
10
+
11
+ # @rbs (Frontend::AST::Rule rule, Hash[String, Frontend::AST::Rule] plain_rules) -> void
12
+ def gather_parameterized_rule: (Frontend::AST::Rule rule, Hash[String, Frontend::AST::Rule] plain_rules) -> void
13
+
14
+ # @rbs (Frontend::AST::Rule rule) -> void
15
+ def validate_parameter_formals: (Frontend::AST::Rule rule) -> void
16
+
17
+ # @rbs (Frontend::AST::Rule rule) -> bot
18
+ def reject_mixed_parameterized_rule: (Frontend::AST::Rule rule) -> bot
19
+
20
+ # @rbs () -> void
21
+ def validate_parameter_terminal_collisions: () -> void
22
+
23
+ # @rbs (Frontend::AST::Rule rule) -> void
24
+ def validate_parameter_references: (Frontend::AST::Rule rule) -> void
25
+
26
+ # @rbs (Frontend::AST::item item, Array[String] formals, inside_argument: bool) -> void
27
+ def validate_parameter_item: (Frontend::AST::item item, Array[String] formals, inside_argument: bool) -> void
28
+
29
+ # @rbs (Frontend::AST::ParameterizedReference item, Array[String] formals, inside_argument: bool) -> void
30
+ def validate_parameterized_item: (Frontend::AST::ParameterizedReference item, Array[String] formals, inside_argument: bool) -> void
31
+
32
+ # @rbs (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item) -> bot
33
+ def reject_argument_named_reference: (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item) -> bot
34
+
35
+ # @rbs (Frontend::AST::ParameterizedReference reference) -> void
36
+ def validate_parameter_call: (Frontend::AST::ParameterizedReference reference) -> void
37
+
38
+ # @rbs (Frontend::AST::Rule rule) -> bool
39
+ def parameterized_rule?: (Frontend::AST::Rule rule) -> bool
40
+
41
+ # @rbs (String name) -> bool
42
+ def parameter_template?: (String name) -> bool
43
+ end
44
+ end
@@ -0,0 +1,51 @@
1
+ # Generated from lib/ibex/normalize/parameters.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Iterative, hygienic specialization of validated parameterized user rules.
5
+ # rubocop:disable Metrics/ModuleLength -- parameter-frame transitions are kept together for auditability.
6
+ module NormalizeParameters
7
+ type parameter_operation = [ :item | :finish_item, Frontend::AST::item ] | [ :value, String ] | [ :finish_suffix, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus ] | [ :finish_separated, Frontend::AST::SeparatedList ] | [ :group_alternative, String, Frontend::AST::Group, Array[Frontend::AST::item] ] | [ :finish_group_alternative, String, Frontend::AST::Group, Integer ]
8
+
9
+ type parameter_frame = { reference: Frontend::AST::ParameterizedReference, arguments: Array[Frontend::AST::item], helper: String, bindings: Hash[String, Frontend::AST::item], rendered_arguments: Array[String], templates: Array[Frontend::AST::Rule], template_index: Integer, alternative_index: Integer, current: [ Frontend::AST::Rule, Frontend::AST::Rule, Frontend::AST::Alternative ]?, item_index: Integer, rhs: Array[String], named_refs: Array[IR::named_ref], operations: Array[parameter_operation], values: Array[String] }
10
+
11
+ private
12
+
13
+ # @rbs (Frontend::AST::ParameterizedReference reference) -> String
14
+ def specialize_parameterized_reference: (Frontend::AST::ParameterizedReference reference) -> String
15
+
16
+ # @rbs (Frontend::AST::ParameterizedReference reference) -> [String, bool]
17
+ def schedule_parameter_specialization: (Frontend::AST::ParameterizedReference reference) -> [ String, bool ]
18
+
19
+ # @rbs (Frontend::AST::ParameterizedReference reference) -> void
20
+ def enforce_parameter_limits!: (Frontend::AST::ParameterizedReference reference) -> void
21
+
22
+ # A constructor-growing recursive call can create infinitely many distinct
23
+ # specializations. Calls whose arguments shrink or merely change are
24
+ # allowed; they may reach a memoized fixed point after finite expansion.
25
+ # @rbs (Array[Frontend::AST::item] candidates, Array[Frontend::AST::item] ancestors) -> bool
26
+ def growing_parameter_arguments?: (Array[Frontend::AST::item] candidates, Array[Frontend::AST::item] ancestors) -> bool
27
+
28
+ # @rbs (Frontend::AST::item candidate, String target) -> bool
29
+ def parameter_argument_contains?: (Frontend::AST::item candidate, String target) -> bool
30
+
31
+ # @rbs (Frontend::AST::ParameterizedReference reference) -> String
32
+ def new_parameter_helper: (Frontend::AST::ParameterizedReference reference) -> String
33
+
34
+ # @rbs (Frontend::AST::ParameterizedReference reference, String helper,
35
+ # Array[Frontend::AST::item] arguments, Array[String] rendered_arguments) ->
36
+ # NormalizeParameters::parameter_frame
37
+ def parameter_frame: (Frontend::AST::ParameterizedReference reference, String helper, Array[Frontend::AST::item] arguments, Array[String] rendered_arguments) -> NormalizeParameters::parameter_frame
38
+
39
+ # @rbs () -> void
40
+ def drain_parameter_worklist: () -> void
41
+
42
+ # @rbs (NormalizeParameters::parameter_frame frame) -> bool
43
+ def prepare_parameter_alternative?: (NormalizeParameters::parameter_frame frame) -> bool
44
+
45
+ # @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::Rule template, Integer index) -> void
46
+ def prepare_parameter_alternative_entry: (NormalizeParameters::parameter_frame frame, Frontend::AST::Rule template, Integer index) -> void
47
+
48
+ # @rbs (NormalizeParameters::parameter_frame frame) -> void
49
+ def clear_parameter_alternative: (NormalizeParameters::parameter_frame frame) -> void
50
+ end
51
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/ibex/normalize/parser_configuration.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Converts a root parser declaration into the explicit current Grammar IR contract.
5
+ module NormalizeParserConfiguration
6
+ private
7
+
8
+ # @rbs (Frontend::AST::ParserConfiguration declaration) -> void
9
+ def read_parser_configuration: (Frontend::AST::ParserConfiguration declaration) -> void
10
+
11
+ # @rbs () -> IR::ParserContract?
12
+ def normalized_parser_contract: () -> IR::ParserContract?
13
+
14
+ # @rbs (Frontend::AST::ParserSetting setting) -> Hash[Symbol, Object?]
15
+ def validated_parser_setting_definition: (Frontend::AST::ParserSetting setting) -> Hash[Symbol, Object?]
16
+
17
+ # @rbs (Frontend::AST::ParserConfiguration declaration) -> void
18
+ def validate_isolated_entries: (Frontend::AST::ParserConfiguration declaration) -> void
19
+
20
+ # @rbs (Frontend::AST::ParserSetting setting) -> Location
21
+ def parser_setting_location: (Frontend::AST::ParserSetting setting) -> Location
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ # Generated from lib/ibex/normalize/recovery_declarations.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Recovery declaration extraction and post-interning symbol validation.
5
+ module NormalizeRecoveryDeclarations
6
+ private
7
+
8
+ # @rbs (Frontend::AST::Start | Frontend::AST::Recovery | Frontend::AST::OnErrorReduce |
9
+ # Frontend::AST::GrammarTest declaration) -> void
10
+ def read_parser_control_declaration: (Frontend::AST::Start | Frontend::AST::Recovery | Frontend::AST::OnErrorReduce | Frontend::AST::GrammarTest declaration) -> void
11
+
12
+ # @rbs (Frontend::AST::GrammarTest declaration) -> void
13
+ def read_grammar_test: (Frontend::AST::GrammarTest declaration) -> void
14
+
15
+ # @rbs (Frontend::AST::Recovery declaration) -> void
16
+ def read_recovery_declaration: (Frontend::AST::Recovery declaration) -> void
17
+
18
+ # @rbs (Frontend::AST::OnErrorReduce declaration) -> void
19
+ def read_on_error_reduce_declaration: (Frontend::AST::OnErrorReduce declaration) -> void
20
+
21
+ # @rbs () -> void
22
+ def validate_recovery_declarations: () -> void
23
+ end
24
+ end
@@ -5,52 +5,147 @@ module Ibex
5
5
  class Normalizer
6
6
  include NormalizeDeclarations
7
7
 
8
+ include NormalizeParserConfiguration
9
+
10
+ include NormalizeGrammarBuilder
11
+
12
+ include NormalizeLexer
13
+
14
+ include NormalizeRecoveryDeclarations
15
+
16
+ include NormalizeParameterValidation
17
+
18
+ include NormalizeInlineValidation
19
+
20
+ include NormalizeParameterSubstitution
21
+
22
+ include NormalizeParameterEbnfLowering
23
+
24
+ include NormalizeParameterLowering
25
+
26
+ include NormalizeParameters
27
+
28
+ include NormalizeNamedReferences
29
+
30
+ include NormalizeNodes
31
+
8
32
  include NormalizeExpander
9
33
 
34
+ include NormalizeInlineExpansion
35
+
10
36
  include NormalizeDiagnostics
11
37
 
12
38
  RESERVED_NAMES: Array[String]
13
39
 
14
- @ast: Frontend::AST::Root
40
+ RUBY_KEYWORDS: Array[String]
15
41
 
16
- @mode: Symbol
42
+ DEFAULT_MAX_PARAMETER_SPECIALIZATIONS: ::Integer
17
43
 
18
- @symbols: Array[IR::GrammarSymbol]
44
+ DEFAULT_MAX_INLINE_EXPANSIONS: ::Integer
19
45
 
20
- @symbols_by_name: Hash[String, IR::GrammarSymbol]
46
+ @explicit_starts: Array[String]?
21
47
 
22
- @productions: Array[IR::Production]
48
+ @parser_configuration: Frontend::AST::ParserConfiguration?
23
49
 
24
- @warnings: Array[IR::grammar_warning]
50
+ @lexer_declaration: Frontend::AST::Lexer?
25
51
 
26
- @helper_sequence: Integer
52
+ @grammar_tests: Array[IR::grammar_test]
27
53
 
28
- @declared_tokens: Hash[String, IR::location]
54
+ @on_error_reduce_groups: Array[Array[String]]
29
55
 
30
- @precedence: Hash[String, IR::precedence]
56
+ @recovery_sync_tokens: Array[String]
31
57
 
32
- @precedence_locations: Hash[String, IR::location]
58
+ @value_printers: Hash[String, IR::value_printer]
33
59
 
34
- @options: IR::grammar_options
60
+ @parser_parameters: Array[IR::parser_parameter]
61
+
62
+ @conversions: Hash[String, String]
63
+
64
+ @expected_rr_conflicts: Integer?
35
65
 
36
66
  @expected_conflicts: Integer
37
67
 
38
- @conversions: Hash[String, String]
68
+ @options: IR::grammar_options
39
69
 
40
- @explicit_start: String?
70
+ @semantic_type_locations: Hash[String, IR::location]
41
71
 
42
- @start_name: String
72
+ @semantic_types: Hash[String, String]
73
+
74
+ @display_name_locations: Hash[String, IR::location]
75
+
76
+ @display_names: Hash[String, String]
77
+
78
+ @precedence_locations: Hash[String, IR::location]
79
+
80
+ @node_shapes: Hash[String, Array[String]]
81
+
82
+ @inline_expansion_count: Integer
83
+
84
+ @max_inline_expansions: Integer
85
+
86
+ @inline_rule_by_symbol: Hash[Integer, String]
87
+
88
+ @inline_symbol_ids: Set[Integer]
89
+
90
+ @inline_rule_names: Set[String]
91
+
92
+ @rule_documentation: Hash[String, String]
93
+
94
+ @current_parameter_expansion: IR::parameter_expansion?
95
+
96
+ @max_parameter_specializations: Integer
97
+
98
+ @parameter_worklist_active: bool
99
+
100
+ @parameter_worklist: Array[NormalizeParameters::parameter_frame]
101
+
102
+ @parameter_specializations: Hash[[ String, Array[String] ], String]
103
+
104
+ @parameter_formals: Hash[String, Array[String]]
105
+
106
+ @parameter_templates: Hash[String, Array[Frontend::AST::Rule]]
43
107
 
44
108
  @start_location: Frontend::Location?
45
109
 
46
- # @rbs (Frontend::AST::Root ast, ?mode: Symbol | String) -> void
47
- def initialize: (Frontend::AST::Root ast, ?mode: Symbol | String) -> void
110
+ @start_name: String
111
+
112
+ @start_names: Array[String]
113
+
114
+ @precedence: Hash[String, IR::precedence]
115
+
116
+ @declared_tokens: Hash[String, IR::location]
117
+
118
+ @helper_sequence: Integer
119
+
120
+ @warnings: Array[IR::grammar_warning]
121
+
122
+ @productions: Array[IR::Production]
123
+
124
+ @symbols_by_name: Hash[String, IR::GrammarSymbol]
125
+
126
+ @symbols: Array[IR::GrammarSymbol]
127
+
128
+ @mode: IR::grammar_mode
129
+
130
+ @current_include_chain: Array[IR::source_provenance]
131
+
132
+ @resolution: Frontend::Resolution?
133
+
134
+ @ast: Frontend::AST::Root
135
+
136
+ # @rbs (Frontend::AST::Root | Frontend::AST::Fragment | Frontend::Resolution input,
137
+ # ?mode: Symbol | String, ?max_parameter_specializations: Integer,
138
+ # ?max_inline_expansions: Integer) -> void
139
+ def initialize: (Frontend::AST::Root | Frontend::AST::Fragment | Frontend::Resolution input, ?mode: Symbol | String, ?max_parameter_specializations: Integer, ?max_inline_expansions: Integer) -> void
48
140
 
49
141
  # @rbs () -> IR::Grammar
50
142
  def normalize: () -> IR::Grammar
51
143
 
52
144
  private
53
145
 
146
+ # @rbs (Symbol name, Object value) -> void
147
+ def validate_positive_limit!: (Symbol name, Object value) -> void
148
+
54
149
  # @rbs () -> void
55
150
  def intern_reserved_symbols: () -> void
56
151
 
@@ -60,8 +155,21 @@ module Ibex
60
155
  # @rbs () -> void
61
156
  def intern_user_nonterminals: () -> void
62
157
 
63
- # @rbs (String name, Symbol kind, ?reserved: bool, ?location: IR::location?) -> IR::GrammarSymbol
64
- def intern: (String name, Symbol kind, ?reserved: bool, ?location: IR::location?) -> IR::GrammarSymbol
158
+ # @rbs () -> Array[String]
159
+ def normalized_start_names: () -> Array[String]
160
+
161
+ # @rbs (Frontend::AST::Rule rule) -> bool
162
+ def start_rule_candidate?: (Frontend::AST::Rule rule) -> bool
163
+
164
+ # @rbs (Frontend::AST::Rule rule) -> void
165
+ def intern_user_nonterminal: (Frontend::AST::Rule rule) -> void
166
+
167
+ # @rbs () -> Hash[String, String]
168
+ def validated_rule_documentation: () -> Hash[String, String]
169
+
170
+ # @rbs (String name, Symbol kind, ?reserved: bool, ?location: IR::location?,
171
+ # ?documentation: String?, ?metadata_name: String?) -> IR::GrammarSymbol
172
+ def intern: (String name, Symbol kind, ?reserved: bool, ?location: IR::location?, ?documentation: String?, ?metadata_name: String?) -> IR::GrammarSymbol
65
173
 
66
174
  # @rbs (String name) -> IR::GrammarSymbol?
67
175
  def symbol: (String name) -> IR::GrammarSymbol?
@@ -92,5 +200,8 @@ module Ibex
92
200
 
93
201
  # @rbs (IR::location? location, String message) -> bot
94
202
  def fail_hash: (IR::location? location, String message) -> bot
203
+
204
+ # @rbs () -> IR::production_expansion?
205
+ def resolved_expansion: () -> IR::production_expansion?
95
206
  end
96
207
  end
@@ -0,0 +1,36 @@
1
+ # Generated from lib/ibex/racc_migration/checker.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module RaccMigration
5
+ # Checks syntax, normalization, superclass, and runtime-coupling hazards.
6
+ # Semantic action code is treated as opaque data and never executed.
7
+ class Checker
8
+ RACC_REQUIRE: Regexp
9
+
10
+ RACC_CONSTANT: Regexp
11
+
12
+ # @rbs (String source, file: String) -> Report
13
+ def check: (String source, file: String) -> Report
14
+
15
+ private
16
+
17
+ # @rbs (Frontend::Diagnostic diagnostic) -> Finding
18
+ def syntax_finding: (Frontend::Diagnostic diagnostic) -> Finding
19
+
20
+ # @rbs (Frontend::AST::Root ast) -> Array[Finding]
21
+ def superclass_findings: (Frontend::AST::Root ast) -> Array[Finding]
22
+
23
+ # @rbs (Frontend::AST::Root ast) -> Array[Finding]
24
+ def user_code_findings: (Frontend::AST::Root ast) -> Array[Finding]
25
+
26
+ # @rbs (Frontend::AST::Root ast) -> Array[Finding]
27
+ def normalization_findings: (Frontend::AST::Root ast) -> Array[Finding]
28
+
29
+ # @rbs (String message, Frontend::Location fallback) -> [Frontend::Location, String]
30
+ def error_location: (String message, Frontend::Location fallback) -> [ Frontend::Location, String ]
31
+
32
+ # @rbs (Array[Finding] findings) -> Array[Finding]
33
+ def sort_findings: (Array[Finding] findings) -> Array[Finding]
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,16 @@
1
+ # Generated from lib/ibex/racc_migration/harness.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module RaccMigration
5
+ # Emits, but never executes, a subprocess-separated differential harness.
6
+ class Harness
7
+ CLASS_NAME: Regexp
8
+
9
+ # @rbs (String class_name) -> String
10
+ def self.generate: (String class_name) -> String
11
+
12
+ # @rbs () -> String
13
+ def self.template: () -> String
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,55 @@
1
+ # Generated from lib/ibex/racc_migration/report.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module RaccMigration
5
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
6
+
7
+ # One immutable migration compatibility observation.
8
+ class Finding
9
+ SEVERITIES: Array[Symbol]
10
+
11
+ attr_reader code: String
12
+
13
+ attr_reader severity: Symbol
14
+
15
+ attr_reader message: String
16
+
17
+ attr_reader location: Frontend::Location?
18
+
19
+ attr_reader suggestion: String
20
+
21
+ # @rbs (code: String, severity: Symbol, message: String, location: Frontend::Location?,
22
+ # suggestion: String) -> void
23
+ def initialize: (code: String, severity: Symbol, message: String, location: Frontend::Location?, suggestion: String) -> void
24
+
25
+ # @rbs () -> Hash[String, json_value]
26
+ def to_h: () -> Hash[String, json_value]
27
+ end
28
+
29
+ # Versioned result of checking one grammar without executing its code.
30
+ class Report
31
+ SCHEMA_VERSION: Integer
32
+
33
+ attr_reader file: String
34
+
35
+ attr_reader class_name: String?
36
+
37
+ attr_reader findings: Array[Finding]
38
+
39
+ # @rbs (file: String, class_name: String?, findings: Array[Finding]) -> void
40
+ def initialize: (file: String, class_name: String?, findings: Array[Finding]) -> void
41
+
42
+ # @rbs () -> bool
43
+ def compatible?: () -> bool
44
+
45
+ # @rbs () -> Hash[String, json_value]
46
+ def to_h: () -> Hash[String, json_value]
47
+
48
+ # @rbs (*Object?) -> String
49
+ def to_json: (*Object?) -> String
50
+
51
+ # @rbs () -> String
52
+ def to_text: () -> String
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,8 @@
1
+ # Generated from lib/ibex/racc_migration.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Static checks and explicitly generated differential tooling for migration
5
+ # from racc grammar files.
6
+ module RaccMigration
7
+ end
8
+ end