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,53 @@
1
+ # Generated from lib/ibex/cli/fix.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI entry point for bounded conflict-repair proposals.
5
+ # rubocop:disable Metrics/ModuleLength -- CLI option wiring and output projections share one closed contract.
6
+ module CLIFix
7
+ type fix_options = Hash[Symbol, untyped]
8
+
9
+ private def normalize_grammar_path: (String) -> IR::Grammar
10
+
11
+ private def activate_cli_feature: (Symbol) -> void
12
+
13
+ private def configuration_value: (String) -> untyped
14
+
15
+ private def set_configuration_option: (Symbol, Object?) -> void
16
+
17
+ private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
18
+
19
+ private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
20
+
21
+ private
22
+
23
+ # @rbs (Array[String] arguments) -> Integer
24
+ def run_fix_command: (Array[String] arguments) -> Integer
25
+
26
+ # @rbs (String path, Hash[Symbol, untyped] settings) -> [String, Fix]
27
+ def prepare_fixer: (String path, Hash[Symbol, untyped] settings) -> [ String, Fix ]
28
+
29
+ # Keep command-local construction settings separate from reusable CLI state.
30
+ # @rbs (Array[String] arguments) -> Hash[Symbol, untyped]
31
+ def fix_options: (Array[String] arguments) -> Hash[Symbol, untyped]
32
+
33
+ # @rbs (OptionParser options, Hash[Symbol, untyped] settings) -> void
34
+ def add_fix_target_options: (OptionParser options, Hash[Symbol, untyped] settings) -> void
35
+
36
+ # @rbs (OptionParser options, Hash[Symbol, untyped] settings) -> void
37
+ def add_fix_budget_options: (OptionParser options, Hash[Symbol, untyped] settings) -> void
38
+
39
+ # @rbs (IR::Grammar grammar, Hash[Symbol, untyped] settings) -> [IR::Grammar, Symbol, IR::Automaton]
40
+ def fixer_construction: (IR::Grammar grammar, Hash[Symbol, untyped] settings) -> [ IR::Grammar, Symbol, IR::Automaton ]
41
+
42
+ private def construct_analysis_automaton: (IR::Grammar, Hash[Symbol, Object?], Array[Symbol]) -> [ IR::Grammar, Symbol, IR::Automaton ]
43
+
44
+ # @rbs (String path, String original, Hash[Symbol, untyped] report, Fix fixer, String | true selector) -> void
45
+ def apply_fix!: (String path, String original, Hash[Symbol, untyped] report, Fix fixer, String | true selector) -> void
46
+
47
+ # @rbs (Array[Hash[Symbol, untyped]] proposals, String | true selector) -> Hash[Symbol, untyped]
48
+ def selected_fix_proposal: (Array[Hash[Symbol, untyped]] proposals, String | true selector) -> Hash[Symbol, untyped]
49
+
50
+ # @rbs (Hash[Symbol, untyped] report, String format) -> void
51
+ def write_fix_report: (Hash[Symbol, untyped] report, String format) -> void
52
+ end
53
+ end
@@ -0,0 +1,107 @@
1
+ # Generated from lib/ibex/cli/formatting.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI coordination for deterministic, semantics-preserving grammar formatting.
5
+ # rubocop:disable Metrics/ModuleLength -- transaction lifecycle stays cohesive and auditable.
6
+ module CLIFormatting
7
+ type formatting_settings = Hash[Symbol, untyped]
8
+
9
+ type formatting_result = { path: String, label: String, source: String, formatted: String }
10
+
11
+ type formatting_target = { path: String, label: String, target: String, formatted: String, mode: Integer, directory: String, basename: String, changed: bool, installed: bool, ?stage: String, ?backup: String }
12
+
13
+ type formatting_cleanup_result = { errors: Array[String], remaining: Array[String] }
14
+
15
+ private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
16
+
17
+ private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
18
+
19
+ private
20
+
21
+ # @rbs (Array[String] arguments) -> Integer
22
+ def run_format_command: (Array[String] arguments) -> Integer
23
+
24
+ # @rbs (Array[String] arguments) -> formatting_settings
25
+ def formatting_options: (Array[String] arguments) -> formatting_settings
26
+
27
+ # @rbs (formatting_settings settings) -> OptionParser
28
+ def formatting_option_parser: (formatting_settings settings) -> OptionParser
29
+
30
+ # @rbs (formatting_settings settings) -> void
31
+ def validate_formatting_settings!: (formatting_settings settings) -> void
32
+
33
+ # @rbs (formatting_settings settings, Array[String] paths) -> void
34
+ def validate_formatting_operation!: (formatting_settings settings, Array[String] paths) -> void
35
+
36
+ # @rbs (formatting_settings settings, Array[String] paths) -> void
37
+ def validate_formatting_stdin!: (formatting_settings settings, Array[String] paths) -> void
38
+
39
+ # @rbs (formatting_settings settings) -> [Array[formatting_result], bool]
40
+ def prepare_formatting_results: (formatting_settings settings) -> [ Array[formatting_result], bool ]
41
+
42
+ # @rbs (Array[formatting_result] results) -> Integer
43
+ def check_formatting_results: (Array[formatting_result] results) -> Integer
44
+
45
+ # @rbs (Array[formatting_result] results) -> Integer
46
+ def write_formatting_results: (Array[formatting_result] results) -> Integer
47
+
48
+ # @rbs (Array[formatting_result] results) -> Array[formatting_target]
49
+ def formatting_targets: (Array[formatting_result] results) -> Array[formatting_target]
50
+
51
+ # @rbs (Array[formatting_target] targets) -> void
52
+ def validate_unique_formatting_targets!: (Array[formatting_target] targets) -> void
53
+
54
+ # @rbs (Array[formatting_target] targets) -> [formatting_target, formatting_target]?
55
+ def duplicate_formatting_target_pair: (Array[formatting_target] targets) -> [ formatting_target, formatting_target ]?
56
+
57
+ # @rbs (Array[formatting_target] targets) -> void
58
+ def transactionally_write_formatted: (Array[formatting_target] targets) -> void
59
+
60
+ # @rbs (Array[formatting_target] targets) -> void
61
+ def stage_formatting_targets: (Array[formatting_target] targets) -> void
62
+
63
+ # @rbs (Array[formatting_target] targets) -> void
64
+ def backup_formatting_targets: (Array[formatting_target] targets) -> void
65
+
66
+ # @rbs (Array[formatting_target] targets) -> void
67
+ def install_formatting_targets: (Array[formatting_target] targets) -> void
68
+
69
+ # @rbs (Array[formatting_target] targets) -> Array[String]
70
+ def rollback_formatting_targets: (Array[formatting_target] targets) -> Array[String]
71
+
72
+ # @rbs (Array[formatting_target] targets, preserve_installed_backups: bool) ->
73
+ # formatting_cleanup_result
74
+ def cleanup_formatting_artifacts: (Array[formatting_target] targets, preserve_installed_backups: bool) -> formatting_cleanup_result
75
+
76
+ # @rbs (String path) -> String?
77
+ def remove_formatting_artifact: (String path) -> String?
78
+
79
+ # @rbs (StandardError error, Array[String] rollback_errors,
80
+ # formatting_cleanup_result cleanup, Array[String] sync_errors) -> Ibex::Error
81
+ def formatting_transaction_error: (StandardError error, Array[String] rollback_errors, formatting_cleanup_result cleanup, Array[String] sync_errors) -> Ibex::Error
82
+
83
+ # @rbs (formatting_cleanup_result cleanup, Array[String] sync_errors) -> void
84
+ def report_formatting_cleanup_warning: (formatting_cleanup_result cleanup, Array[String] sync_errors) -> void
85
+
86
+ # @rbs (Array[formatting_target] targets) -> void
87
+ def sync_formatting_directories!: (Array[formatting_target] targets) -> void
88
+
89
+ # @rbs (Array[formatting_target] targets) -> Array[String]
90
+ def sync_formatting_directories_best_effort: (Array[formatting_target] targets) -> Array[String]
91
+
92
+ # @rbs (Array[formatting_target] targets) -> Array[String]
93
+ def sync_formatting_directories: (Array[formatting_target] targets) -> Array[String]
94
+
95
+ # @rbs (String directory) -> void
96
+ def sync_formatting_directory: (String directory) -> void
97
+
98
+ # @rbs (String value) -> String
99
+ def formatting_label: (String value) -> String
100
+
101
+ # @rbs (String value) -> bool
102
+ def formatting_control_bytes?: (String value) -> bool
103
+
104
+ # @rbs (Integer byte) -> bool
105
+ def control_byte?: (Integer byte) -> bool
106
+ end
107
+ end
@@ -0,0 +1,47 @@
1
+ # Generated from lib/ibex/cli/fuzz.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI entry point for bounded grammar-derived differential fuzzing.
5
+ module CLIFuzz
6
+ include CLIFuzzRegressions
7
+
8
+ private def print_help: (OptionParser) -> Integer
9
+
10
+ private def input_path: (Array[String]) -> String
11
+
12
+ private def normalize_grammar_path: (String) -> IR::Grammar
13
+
14
+ private def handle_grammar_warnings: (IR::Grammar, String) -> void
15
+
16
+ private def warning_categories: (String) -> Array[Symbol]
17
+
18
+ private def select_configuration_mode: (String) -> void
19
+
20
+ private
21
+
22
+ # @rbs (Array[String] arguments) -> Integer
23
+ def run_fuzz_command: (Array[String] arguments) -> Integer
24
+
25
+ # @rbs () -> OptionParser
26
+ def fuzz_option_parser: () -> OptionParser
27
+
28
+ # @rbs (OptionParser options) -> void
29
+ def add_fuzz_generation_options: (OptionParser options) -> void
30
+
31
+ # @rbs (OptionParser options) -> void
32
+ def add_fuzz_execution_options: (OptionParser options) -> void
33
+
34
+ # @rbs (OptionParser options) -> void
35
+ def add_fuzz_external_options: (OptionParser options) -> void
36
+
37
+ # @rbs () -> fuzz_external_target?
38
+ def external_fuzz_target: () -> fuzz_external_target?
39
+
40
+ # @rbs (BoundedSubprocess subprocess, Array[String] arguments, Array[String] tokens,
41
+ # Integer timeout, Integer max_output) -> Symbol
42
+ def external_fuzz_outcome: (BoundedSubprocess subprocess, Array[String] arguments, Array[String] tokens, Integer timeout, Integer max_output) -> Symbol
43
+
44
+ # @rbs (String name, Integer value) -> Integer
45
+ def positive_fuzz_option!: (String name, Integer value) -> Integer
46
+ end
47
+ end
@@ -0,0 +1,40 @@
1
+ # Generated from lib/ibex/cli/fuzz_regressions.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ type fuzz_external_description = { command: String, target_runtime: String, timeout_seconds: Integer, max_output_bytes: Integer, host_ruby_engine: String, host_ruby_version: String, host_platform: String }
5
+
6
+ type fuzz_external_target = [ ^(Array[String]) -> Symbol, fuzz_external_description ]
7
+
8
+ # Automatic bounded minimization and persistence for fuzz differences.
9
+ module CLIFuzzRegressions
10
+ private def atomic_write_ir: (String path, String source) -> void
11
+
12
+ private
13
+
14
+ # @rbs (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path,
15
+ # fuzz_external_target? external) -> Integer
16
+ def write_minimized_fuzz_mismatch: (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path, fuzz_external_target? external) -> Integer
17
+
18
+ # @rbs (Hash[Symbol, untyped] report) -> void
19
+ def write_fuzz_report: (Hash[Symbol, untyped] report) -> void
20
+
21
+ # @rbs (Fuzz::BudgetExceeded error,
22
+ # fuzz_external_target? external, phase: String) -> Integer
23
+ def write_fuzz_budget_report: (Fuzz::BudgetExceeded error, fuzz_external_target? external, phase: String) -> Integer
24
+
25
+ # @rbs (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path,
26
+ # fuzz_external_target? external) -> Hash[Symbol, untyped]
27
+ def minimized_fuzz_mismatch: (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path, fuzz_external_target? external) -> Hash[Symbol, untyped]
28
+
29
+ # @rbs (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path,
30
+ # fuzz_external_description? external) -> Hash[Symbol, String]?
31
+ def persist_fuzz_regression: (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path, fuzz_external_description? external) -> Hash[Symbol, String]?
32
+
33
+ # @rbs (String path) -> void
34
+ def validate_fuzz_regression_target!: (String path) -> void
35
+
36
+ # @rbs (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path,
37
+ # fuzz_external_description? external) -> Hash[Symbol, Object?]
38
+ def fuzz_regression_document: (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path, fuzz_external_description? external) -> Hash[Symbol, Object?]
39
+ end
40
+ end
@@ -0,0 +1,69 @@
1
+ # Generated from lib/ibex/cli/generation_artifacts.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Collects, verifies, and transactionally publishes CLI generation outputs.
5
+ module CLIGenerationArtifacts
6
+ private def report_status: (String) -> void
7
+
8
+ private def verify_file: (String, String, String) -> void
9
+
10
+ private def default_output_path: (String, String) -> String
11
+
12
+ private def configuration_value: (String) -> Object?
13
+
14
+ private def effective_configuration: () -> Configuration::Resolver
15
+
16
+ private
17
+
18
+ # @rbs () -> void
19
+ def begin_artifact_generation: () -> void
20
+
21
+ # @rbs (Symbol kind, String path, String content, ?mode: Integer?, ?status: bool) -> Artifact
22
+ def register_artifact: (Symbol kind, String path, String content, ?mode: Integer?, ?status: bool) -> Artifact
23
+
24
+ # @rbs (Array[String] source_paths) -> Integer
25
+ def finish_artifact_generation: (Array[String] source_paths) -> Integer
26
+
27
+ # @rbs () -> void
28
+ def add_generation_manifest: () -> void
29
+
30
+ # @rbs () -> void
31
+ def verify_artifact_generation: () -> void
32
+
33
+ # @rbs (Symbol kind) -> String
34
+ def artifact_label: (Symbol kind) -> String
35
+
36
+ # @rbs () -> ArtifactSet
37
+ def generation_artifacts: () -> ArtifactSet
38
+
39
+ # @rbs () -> bool
40
+ def generation_inputs_stable?: () -> bool
41
+
42
+ # @rbs () -> void
43
+ def ensure_generation_inputs_stable!: () -> void
44
+
45
+ # @rbs (String path, String source) -> GenerationInput
46
+ def record_generation_input: (String path, String source) -> GenerationInput
47
+
48
+ # @rbs () -> String
49
+ def manifest_output_path: () -> String
50
+
51
+ # @rbs () -> Hash[String, Object?]
52
+ def generation_manifest_options: () -> Hash[String, Object?]
53
+
54
+ # @rbs (Hash[String, Object?] options) -> void
55
+ def append_ir_manifest_options: (Hash[String, Object?] options) -> void
56
+
57
+ # @rbs () -> String
58
+ def construction_authority: () -> String
59
+
60
+ # @rbs () -> Array[Hash[String, Object?]]
61
+ def manifest_effective_configuration: () -> Array[Hash[String, Object?]]
62
+
63
+ # @rbs (IR::ParserContract contract) -> Hash[String, Object?]
64
+ def stringify_contract: (IR::ParserContract contract) -> Hash[String, Object?]
65
+
66
+ # @rbs () -> Symbol
67
+ def effective_cst_trivia: () -> Symbol
68
+ end
69
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/ibex/cli/generation_error_messages.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Optional example-keyed error-message support for parser generation.
5
+ module CLIGenerationErrorMessages
6
+ private def record_generation_input: (String, String) -> GenerationInput
7
+
8
+ private
9
+
10
+ # @rbs (OptionParser options) -> void
11
+ def add_error_messages_generation_option: (OptionParser options) -> void
12
+
13
+ # @rbs (IR::Automaton automaton) -> Hash[Integer, String | { id: String, message: String }]
14
+ def configured_error_messages: (IR::Automaton automaton) -> Hash[Integer, String | { id: String, message: String }]
15
+
16
+ # @rbs () -> void
17
+ def validate_messages_options: () -> void
18
+ end
19
+ end
@@ -0,0 +1,48 @@
1
+ # Generated from lib/ibex/cli/grammar_tests.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # `%test` command parsing and human-readable result reporting.
5
+ module CLIGrammarTests
6
+ type grammar_test_settings = Hash[Symbol, untyped]
7
+
8
+ private def print_help: (OptionParser) -> Integer
9
+
10
+ private def resolve_grammar_path: (String) -> Frontend::Resolution
11
+
12
+ private def handle_grammar_warnings: (IR::Grammar, String) -> void
13
+
14
+ private def build_automaton: (IR::Grammar, String) -> IR::Automaton
15
+
16
+ private def configuration_value: (String) -> untyped
17
+
18
+ private def mark_configuration_option: (Symbol) -> void
19
+
20
+ private
21
+
22
+ # @rbs (Array[String] arguments) -> Integer
23
+ def run_grammar_tests_command: (Array[String] arguments) -> Integer
24
+
25
+ # @rbs () -> Hash[Symbol, untyped]
26
+ def default_grammar_test_settings: () -> Hash[Symbol, untyped]
27
+
28
+ # @rbs (Hash[Symbol, untyped] settings) -> OptionParser
29
+ def grammar_test_option_parser: (Hash[Symbol, untyped] settings) -> OptionParser
30
+
31
+ # @rbs (Array[String] remaining, OptionParser options) -> String
32
+ def single_grammar_test_path: (Array[String] remaining, OptionParser options) -> String
33
+
34
+ # @rbs (Frontend::Resolution resolution) -> IR::Grammar
35
+ def normalize_analysis_grammar: (Frontend::Resolution resolution) -> IR::Grammar
36
+
37
+ private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
38
+
39
+ # @rbs (Array[GrammarTests::Result] results) -> Integer
40
+ def render_grammar_test_results: (Array[GrammarTests::Result] results) -> Integer
41
+
42
+ # @rbs (GrammarTests::ProductionCoverage coverage, Integer minimum, Integer failures) -> Integer
43
+ def render_grammar_test_coverage: (GrammarTests::ProductionCoverage coverage, Integer minimum, Integer failures) -> Integer
44
+
45
+ # @rbs (GrammarTests::Result result) -> String
46
+ def grammar_test_failure: (GrammarTests::Result result) -> String
47
+ end
48
+ end
@@ -0,0 +1,39 @@
1
+ # Generated from lib/ibex/cli/ir_tools.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI validation and structural comparison for current IR documents.
5
+ module CLIIRTools
6
+ private
7
+
8
+ # @rbs (Array[String] arguments) -> Integer
9
+ def run_validate_ir_command: (Array[String] arguments) -> Integer
10
+
11
+ # @rbs (Array[String] arguments) -> Integer
12
+ def run_compare_command: (Array[String] arguments) -> Integer
13
+
14
+ # @rbs (Array[String] arguments, String command) -> String
15
+ def single_ir_path: (Array[String] arguments, String command) -> String
16
+
17
+ # @rbs (IR::Grammar | IR::Automaton | IR::Lexer before,
18
+ # IR::Grammar | IR::Automaton | IR::Lexer after) -> Hash[Symbol, Object?]
19
+ def compare_ir: (IR::Grammar | IR::Automaton | IR::Lexer before, IR::Grammar | IR::Automaton | IR::Lexer after) -> Hash[Symbol, Object?]
20
+
21
+ # @rbs (IR::Lexer before, IR::Lexer after) -> Hash[Symbol, Object?]
22
+ def compare_lexers: (IR::Lexer before, IR::Lexer after) -> Hash[Symbol, Object?]
23
+
24
+ # @rbs (IR::Grammar before, IR::Grammar after) -> Hash[Symbol, Object?]
25
+ def compare_grammars: (IR::Grammar before, IR::Grammar after) -> Hash[Symbol, Object?]
26
+
27
+ # @rbs (IR::Grammar grammar) -> Array[String]
28
+ def production_shapes: (IR::Grammar grammar) -> Array[String]
29
+
30
+ # @rbs (IR::Automaton automaton) -> Integer
31
+ def transition_count: (IR::Automaton automaton) -> Integer
32
+
33
+ # @rbs (IR::Automaton automaton, Symbol kind) -> Integer
34
+ def summary_count: (IR::Automaton automaton, Symbol kind) -> Integer
35
+
36
+ # @rbs (Integer before, Integer after) -> Hash[Symbol, Integer]
37
+ def numeric_change: (Integer before, Integer after) -> Hash[Symbol, Integer]
38
+ end
39
+ end
@@ -0,0 +1,14 @@
1
+ # Generated from lib/ibex/cli/lsp.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI boundary for the stdio-only language server.
5
+ module CLILSP
6
+ private
7
+
8
+ # @rbs (Array[String] arguments) -> Integer
9
+ def run_lsp_command: (Array[String] arguments) -> Integer
10
+
11
+ # @rbs (Hash[Symbol, bool] settings) -> OptionParser
12
+ def lsp_option_parser: (Hash[Symbol, bool] settings) -> OptionParser
13
+ end
14
+ end
@@ -3,7 +3,11 @@
3
3
  module Ibex
4
4
  # Files, warnings, and progress emitted by CLI pipeline stages.
5
5
  module CLIOutputs
6
- WARNING_MESSAGES: Hash[Symbol, ^(IR::grammar_warning) -> String]
6
+ private def register_artifact: (Symbol, String, String, ?mode: Integer?, ?status: bool) -> Artifact
7
+
8
+ private def configuration_value: (String) -> Object?
9
+
10
+ WARNING_MESSAGE_IDS: Hash[Symbol, String]
7
11
 
8
12
  private
9
13
 
@@ -13,12 +17,25 @@ module Ibex
13
17
  # @rbs (IR::Grammar grammar, String input_path) -> void
14
18
  def handle_grammar_warnings: (IR::Grammar grammar, String input_path) -> void
15
19
 
16
- # @rbs (IR::grammar_warning warning, String input_path) -> String
17
- def format_grammar_warning: (IR::grammar_warning warning, String input_path) -> String
20
+ # @rbs (IR::grammar_warning warning, String input_path, ?promoted: bool) -> String
21
+ def format_grammar_warning: (IR::grammar_warning warning, String input_path, ?promoted: bool) -> String
22
+
23
+ # @rbs (IR::grammar_warning warning) -> String
24
+ def grammar_warning_message: (IR::grammar_warning warning) -> String
18
25
 
19
26
  # @rbs (IR::Automaton automaton, String input_path) -> void
20
27
  def report_conflicts: (IR::Automaton automaton, String input_path) -> void
21
28
 
29
+ # @rbs (IR::conflict_summary summary, String input_path) -> Array[String]
30
+ def conflict_messages: (IR::conflict_summary summary, String input_path) -> Array[String]
31
+
32
+ # @rbs (IR::Automaton automaton, String input_path) -> void
33
+ # rubocop:disable Metrics/AbcSize -- the bounded comparison reports each conflict class independently.
34
+ def suggest_ielr: (IR::Automaton automaton, String input_path) -> void
35
+
36
+ # @rbs (Integer count, String kind) -> String
37
+ def conflict_count: (Integer count, String kind) -> String
38
+
22
39
  # @rbs (IR::Automaton automaton, String input_path) -> void
23
40
  def write_report: (IR::Automaton automaton, String input_path) -> void
24
41
 
@@ -27,5 +44,11 @@ module Ibex
27
44
 
28
45
  # @rbs (String message) -> void
29
46
  def report_status: (String message) -> void
47
+
48
+ # @rbs (String path, String source) -> void
49
+ def atomic_write_ir: (String path, String source) -> void
50
+
51
+ # @rbs (String path) -> Integer
52
+ def ir_file_mode: (String path) -> Integer
30
53
  end
31
54
  end
@@ -0,0 +1,30 @@
1
+ # Generated from lib/ibex/cli/racc_migration.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Static racc migration checks and differential harness generation.
5
+ module CLIRaccMigration
6
+ type migration_check_settings = { format: String, ?help: bool }
7
+
8
+ type migration_harness_settings = { ?output: String, ?help: bool }
9
+
10
+ private def input_path: (Array[String]) -> String
11
+
12
+ private def atomic_write_ir: (String path, String source) -> void
13
+
14
+ private def same_file_target?: (String left, String right) -> bool
15
+
16
+ private
17
+
18
+ # @rbs (Array[String] arguments) -> Integer
19
+ def run_migrate_check_command: (Array[String] arguments) -> Integer
20
+
21
+ # @rbs (Array[String] arguments) -> Integer
22
+ def run_migrate_harness_command: (Array[String] arguments) -> Integer
23
+
24
+ # @rbs (migration_check_settings settings) -> OptionParser
25
+ def migrate_check_options: (migration_check_settings settings) -> OptionParser
26
+
27
+ # @rbs (migration_harness_settings settings) -> OptionParser
28
+ def migrate_harness_options: (migration_harness_settings settings) -> OptionParser
29
+ end
30
+ end
@@ -0,0 +1,60 @@
1
+ # Generated from lib/ibex/cli/reduce.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ type reduction_bounds = { max_trials: Integer, timeout_seconds: Integer, max_output_bytes: Integer, max_input_bytes: Integer }
5
+
6
+ type reduction_budget_details = { kind: String, message: String, trials: Integer }
7
+
8
+ type reduction_success_document = { ibex_report: String, schema_version: Integer, result: String, mode: Symbol, original_size: Integer, minimized_size: Integer, trials: Integer, complete: bool, minimized: Array[String | Integer], bounded: bool, bounds: reduction_bounds }
9
+
10
+ type reduction_budget_document = { ibex_report: String, schema_version: Integer, result: String, mode: Symbol, bounded: bool, bounds: reduction_bounds, budget: reduction_budget_details }
11
+
12
+ # CLI entry point for generic bounded delta debugging.
13
+ module CLIReduce
14
+ include CLIReduceReporting
15
+
16
+ DEFAULT_MAX_INPUT_BYTES: Integer
17
+
18
+ class ReductionBudgetExceeded < Ibex::Error
19
+ attr_reader details: reduction_budget_details
20
+
21
+ # @rbs (reduction_budget_details details) -> void
22
+ def initialize: (reduction_budget_details details) -> void
23
+ end
24
+
25
+ @reduction_mode: Symbol
26
+
27
+ @reduction_bounds: reduction_bounds
28
+
29
+ @reduction_trials: Integer
30
+
31
+ @reduction_subprocess: BoundedSubprocess
32
+
33
+ private def print_help: (OptionParser) -> Integer
34
+
35
+ private def input_path: (Array[String]) -> String
36
+
37
+ private
38
+
39
+ # @rbs (Array[String] arguments) -> Integer
40
+ def run_reduce_command: (Array[String] arguments) -> Integer
41
+
42
+ # @rbs () -> OptionParser
43
+ def reduce_option_parser: () -> OptionParser
44
+
45
+ # @rbs () -> void
46
+ def prepare_reduction_run: () -> void
47
+
48
+ # @rbs (String path) -> String
49
+ def bounded_reduction_source: (String path) -> String
50
+
51
+ # @rbs (String source, Symbol mode) -> Array[String | Integer]
52
+ def reduction_items: (String source, Symbol mode) -> Array[String | Integer]
53
+
54
+ # @rbs (Array[String] command, Array[String | Integer] candidate, Symbol mode) -> bool
55
+ def reduction_failure?: (Array[String] command, Array[String | Integer] candidate, Symbol mode) -> bool
56
+
57
+ # @rbs (String name, Integer value) -> Integer
58
+ def positive_reduce_option!: (String name, Integer value) -> Integer
59
+ end
60
+ end
@@ -0,0 +1,27 @@
1
+ # Generated from lib/ibex/cli/reduce_reporting.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Versioned machine and terminal reports for bounded delta reduction.
5
+ module CLIReduceReporting
6
+ @reduction_mode: Symbol
7
+
8
+ @reduction_bounds: reduction_bounds
9
+
10
+ private
11
+
12
+ # @rbs (DeltaReducer::Result result) -> reduction_success_document
13
+ def reduction_success_report: (DeltaReducer::Result result) -> reduction_success_document
14
+
15
+ # @rbs (reduction_budget_details details) -> reduction_budget_document
16
+ def reduction_budget_report: (reduction_budget_details details) -> reduction_budget_document
17
+
18
+ # @rbs () -> reduction_bounds
19
+ def default_reduction_bounds: () -> reduction_bounds
20
+
21
+ # @rbs (reduction_success_document report) -> void
22
+ def write_reduction_success: (reduction_success_document report) -> void
23
+
24
+ # @rbs (reduction_budget_document report) -> void
25
+ def write_reduction_budget: (reduction_budget_document report) -> void
26
+ end
27
+ end
@@ -0,0 +1,38 @@
1
+ # Generated from lib/ibex/cli/samples.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI entry point for bounded grammar sentence generation.
5
+ module CLISamples
6
+ private def print_help: (OptionParser) -> Integer
7
+
8
+ private def input_path: (Array[String]) -> String
9
+
10
+ private def handle_grammar_warnings: (IR::Grammar, String) -> void
11
+
12
+ private def warning_categories: (String) -> Array[Symbol]
13
+
14
+ private def normalize_grammar_path: (String) -> IR::Grammar
15
+
16
+ private def set_configuration_option: (Symbol, Object?) -> void
17
+
18
+ private
19
+
20
+ # @rbs (Array[String] arguments) -> Integer
21
+ def run_samples_command: (Array[String] arguments) -> Integer
22
+
23
+ # @rbs () -> OptionParser
24
+ def samples_option_parser: () -> OptionParser
25
+
26
+ # @rbs (OptionParser options) -> void
27
+ def add_sample_generation_options: (OptionParser options) -> void
28
+
29
+ # @rbs (OptionParser options) -> void
30
+ def add_sample_input_options: (OptionParser options) -> void
31
+
32
+ # @rbs (String path) -> IR::Grammar
33
+ def grammar_for_samples: (String path) -> IR::Grammar
34
+
35
+ # @rbs (String name, Integer value) -> Integer
36
+ def positive_sample_option!: (String name, Integer value) -> Integer
37
+ end
38
+ end