ibex 0.2.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 (437) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +95 -272
  3. data/docs/architecture.md +187 -35
  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 +3 -4
  12. data/docs/cst.md +24 -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 +179 -2
  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 +2 -1
  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 +54 -0
  51. data/docs/getting-started.md +80 -0
  52. data/docs/grammar-reference.md +184 -13
  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 +5 -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 +11 -0
  63. data/docs/release-readiness.md +126 -68
  64. data/docs/repair-semantics.md +123 -0
  65. data/docs/runtime-abi-evolution.md +307 -0
  66. data/docs/stability.md +144 -34
  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/lib/ibex/analysis/digraph.rb +128 -0
  75. data/lib/ibex/analysis.rb +1 -0
  76. data/lib/ibex/bison_import/importer.rb +516 -0
  77. data/lib/ibex/bison_import/tokenizer.rb +260 -0
  78. data/lib/ibex/bison_import.rb +200 -0
  79. data/lib/ibex/bounded_subprocess.rb +171 -0
  80. data/lib/ibex/cli/ambiguity.rb +14 -5
  81. data/lib/ibex/cli/analysis.rb +134 -0
  82. data/lib/ibex/cli/bison_import.rb +121 -0
  83. data/lib/ibex/cli/config.rb +128 -0
  84. data/lib/ibex/cli/diagnostics.rb +31 -11
  85. data/lib/ibex/cli/documentation.rb +11 -8
  86. data/lib/ibex/cli/equiv.rb +169 -0
  87. data/lib/ibex/cli/error_messages.rb +11 -4
  88. data/lib/ibex/cli/explain.rb +14 -5
  89. data/lib/ibex/cli/fix.rb +203 -0
  90. data/lib/ibex/cli/formatting.rb +11 -10
  91. data/lib/ibex/cli/fuzz.rb +200 -0
  92. data/lib/ibex/cli/fuzz_regressions.rb +145 -0
  93. data/lib/ibex/cli/generation_artifacts.rb +53 -2
  94. data/lib/ibex/cli/generation_error_messages.rb +1 -1
  95. data/lib/ibex/cli/grammar_tests.rb +32 -14
  96. data/lib/ibex/cli/ir_tools.rb +5 -61
  97. data/lib/ibex/cli/outputs.rb +60 -33
  98. data/lib/ibex/cli/reduce.rb +202 -0
  99. data/lib/ibex/cli/reduce_reporting.rb +71 -0
  100. data/lib/ibex/cli/samples.rb +49 -23
  101. data/lib/ibex/cli/verify.rb +116 -0
  102. data/lib/ibex/cli/watch.rb +6 -5
  103. data/lib/ibex/cli.rb +357 -56
  104. data/lib/ibex/codegen/action_locations.rb +1 -1
  105. data/lib/ibex/codegen/action_method_source.rb +5 -6
  106. data/lib/ibex/codegen/action_source.rb +3 -2
  107. data/lib/ibex/codegen/ambiguity.rb +5 -4
  108. data/lib/ibex/codegen/explain.rb +123 -55
  109. data/lib/ibex/codegen/generated_action_abi.rb +10 -5
  110. data/lib/ibex/codegen/rbs.rb +15 -7
  111. data/lib/ibex/codegen/report.rb +25 -13
  112. data/lib/ibex/codegen/ruby.rb +28 -64
  113. data/lib/ibex/codegen/ruby_actions.rb +9 -6
  114. data/lib/ibex/codegen/ruby_syntax.rb +15 -9
  115. data/lib/ibex/configuration/analysis_grammar.rb +35 -0
  116. data/lib/ibex/configuration/explanation.rb +421 -0
  117. data/lib/ibex/configuration/inspector.rb +232 -0
  118. data/lib/ibex/configuration.rb +580 -0
  119. data/lib/ibex/coverage/collector.rb +21 -11
  120. data/lib/ibex/coverage/event_stream.rb +13 -7
  121. data/lib/ibex/coverage/report.rb +26 -18
  122. data/lib/ibex/coverage/runtime_event_validator.rb +30 -21
  123. data/lib/ibex/delta_reducer.rb +99 -0
  124. data/lib/ibex/diff.rb +140 -0
  125. data/lib/ibex/equiv/machine.rb +135 -0
  126. data/lib/ibex/equiv.rb +373 -0
  127. data/lib/ibex/fix.rb +557 -0
  128. data/lib/ibex/frontend/ast.rb +22 -2
  129. data/lib/ibex/frontend/bootstrap_parser.rb +6 -13
  130. data/lib/ibex/frontend/diagnostic.rb +1 -1
  131. data/lib/ibex/frontend/formatter.rb +72 -26
  132. data/lib/ibex/frontend/generated_parser.rb +147 -117
  133. data/lib/ibex/frontend/generated_parser_base.rb +7 -3
  134. data/lib/ibex/frontend/generated_parser_includes.rb +1 -11
  135. data/lib/ibex/frontend/generation.rb +1 -1
  136. data/lib/ibex/frontend/parser/declarations.rb +17 -2
  137. data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
  138. data/lib/ibex/frontend/regenerator.rb +1 -0
  139. data/lib/ibex/frontend/resolution.rb +2 -1
  140. data/lib/ibex/frontend/resolver.rb +1 -1
  141. data/lib/ibex/frontend/rule_documentation.rb +2 -1
  142. data/lib/ibex/frontend/source_cursor.rb +2 -2
  143. data/lib/ibex/frontend/source_span.rb +9 -1
  144. data/lib/ibex/frontend/token_adapter/declaration_state.rb +38 -6
  145. data/lib/ibex/frontend/token_adapter.rb +10 -0
  146. data/lib/ibex/frontend.rb +1 -0
  147. data/lib/ibex/fuzz.rb +219 -0
  148. data/lib/ibex/generation_input.rb +1 -1
  149. data/lib/ibex/generation_manifest.rb +36 -25
  150. data/lib/ibex/generation_transaction.rb +1 -1
  151. data/lib/ibex/generation_transaction_recovery.rb +4 -4
  152. data/lib/ibex/generation_transaction_validation.rb +2 -2
  153. data/lib/ibex/grammar_tests.rb +1 -1
  154. data/lib/ibex/ir/automaton_ir.rb +61 -19
  155. data/lib/ibex/ir/grammar_ir.rb +76 -45
  156. data/lib/ibex/ir/lexer_ir.rb +5 -5
  157. data/lib/ibex/ir/parser_contract.rb +135 -0
  158. data/lib/ibex/ir/serialize.rb +203 -76
  159. data/lib/ibex/ir/validator/automaton.rb +64 -34
  160. data/lib/ibex/ir/validator/base.rb +51 -33
  161. data/lib/ibex/ir/validator/grammar.rb +113 -83
  162. data/lib/ibex/ir/validator/lexer.rb +2 -2
  163. data/lib/ibex/ir/validator.rb +2 -1
  164. data/lib/ibex/ir.rb +16 -3
  165. data/lib/ibex/lalr/build_metrics.rb +50 -2
  166. data/lib/ibex/lalr/builder.rb +191 -56
  167. data/lib/ibex/lalr/conflict_search.rb +15 -4
  168. data/lib/ibex/lalr/counterexample.rb +19 -14
  169. data/lib/ibex/lalr/direct_lookaheads.rb +110 -57
  170. data/lib/ibex/lalr/goto_follows.rb +229 -0
  171. data/lib/ibex/lalr/ielr/annotator.rb +214 -0
  172. data/lib/ibex/lalr/ielr/bits.rb +28 -0
  173. data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
  174. data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
  175. data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
  176. data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
  177. data/lib/ibex/lalr/ielr/split_state.rb +20 -0
  178. data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
  179. data/lib/ibex/lalr/ielr_partition.rb +22 -8
  180. data/lib/ibex/lalr/inadequacy_report.rb +50 -0
  181. data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
  182. data/lib/ibex/lalr/lr0_collection.rb +121 -0
  183. data/lib/ibex/lalr/unreachable_states.rb +80 -0
  184. data/lib/ibex/lalr.rb +52 -1
  185. data/lib/ibex/location.rb +3 -3
  186. data/lib/ibex/lsp/document_handlers.rb +9 -7
  187. data/lib/ibex/lsp/initialization_handlers.rb +9 -7
  188. data/lib/ibex/lsp/navigation_handlers.rb +25 -11
  189. data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
  190. data/lib/ibex/lsp/position_codec.rb +6 -2
  191. data/lib/ibex/lsp/request_handlers.rb +3 -2
  192. data/lib/ibex/lsp/request_support.rb +14 -7
  193. data/lib/ibex/lsp/server.rb +13 -11
  194. data/lib/ibex/lsp/symbol_index.rb +13 -13
  195. data/lib/ibex/lsp/symbol_index_builder.rb +30 -20
  196. data/lib/ibex/lsp/symbol_occurrence.rb +8 -2
  197. data/lib/ibex/lsp/transport.rb +13 -3
  198. data/lib/ibex/lsp/workspace.rb +5 -4
  199. data/lib/ibex/lsp/workspace_analyzer.rb +1 -1
  200. data/lib/ibex/lsp.rb +1 -0
  201. data/lib/ibex/messages/en.yml +28 -0
  202. data/lib/ibex/messages/ja.yml +28 -0
  203. data/lib/ibex/messages.rb +68 -0
  204. data/lib/ibex/metrics.rb +175 -0
  205. data/lib/ibex/normalize/declarations.rb +2 -0
  206. data/lib/ibex/normalize/diagnostics.rb +63 -38
  207. data/lib/ibex/normalize/expander.rb +5 -4
  208. data/lib/ibex/normalize/expression.rb +8 -6
  209. data/lib/ibex/normalize/grammar_builder.rb +26 -0
  210. data/lib/ibex/normalize/inline_expansion.rb +100 -49
  211. data/lib/ibex/normalize/lexer.rb +3 -3
  212. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +11 -10
  213. data/lib/ibex/normalize/parameter_lowering.rb +40 -23
  214. data/lib/ibex/normalize/parameters.rb +31 -4
  215. data/lib/ibex/normalize/parser_configuration.rb +70 -0
  216. data/lib/ibex/normalize.rb +10 -20
  217. data/lib/ibex/racc_migration/report.rb +6 -3
  218. data/lib/ibex/rake_task.rb +1 -1
  219. data/lib/ibex/samples.rb +43 -13
  220. data/lib/ibex/table_artifact/builder.rb +266 -0
  221. data/lib/ibex/table_artifact/cst_projection.rb +70 -0
  222. data/lib/ibex/table_artifact/document.rb +39 -0
  223. data/lib/ibex/table_artifact/executor.rb +187 -0
  224. data/lib/ibex/table_artifact/serializer.rb +57 -0
  225. data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
  226. data/lib/ibex/table_artifact/validator/support.rb +86 -0
  227. data/lib/ibex/table_artifact/validator/tables.rb +238 -0
  228. data/lib/ibex/table_artifact/validator.rb +253 -0
  229. data/lib/ibex/table_artifact.rb +88 -0
  230. data/lib/ibex/table_simulation/result.rb +6 -2
  231. data/lib/ibex/table_simulation/step.rb +3 -1
  232. data/lib/ibex/tables.rb +14 -0
  233. data/lib/ibex/verifiable_generation_bundle.rb +86 -0
  234. data/lib/ibex/verification_report/builder.rb +159 -0
  235. data/lib/ibex/verification_report/canonical_ir.rb +123 -0
  236. data/lib/ibex/verification_report/logical_path.rb +68 -0
  237. data/lib/ibex/verification_report/validator.rb +329 -0
  238. data/lib/ibex/verification_report.rb +69 -0
  239. data/lib/ibex/verify/action_correspondence.rb +138 -0
  240. data/lib/ibex/verify/language_witness.rb +295 -0
  241. data/lib/ibex/verify/reference_collection.rb +190 -0
  242. data/lib/ibex/verify/result.rb +73 -0
  243. data/lib/ibex/verify/verifier.rb +598 -0
  244. data/lib/ibex/verify.rb +15 -0
  245. data/lib/ibex/version.rb +1 -1
  246. data/lib/ibex/watch/runner.rb +10 -1
  247. data/lib/ibex/watch/source_snapshot.rb +13 -8
  248. data/lib/ibex.rb +10 -0
  249. data/schema/{automaton-ir-v1.schema.json → automaton-ir-definitions.schema.json} +6 -6
  250. data/schema/{automaton-ir-v2.schema.json → automaton-ir.schema.json} +14 -7
  251. data/schema/bison-import-v1.schema.json +106 -0
  252. data/schema/conflict-explanation-review-v1.schema.json +196 -0
  253. data/schema/conflict-explanation-study-v1.schema.json +528 -0
  254. data/schema/construction-profile-v1.schema.json +779 -0
  255. data/schema/diff-v1.schema.json +41 -0
  256. data/schema/direct-ielr-decision-v1.schema.json +200 -0
  257. data/schema/equiv-v1.schema.json +64 -0
  258. data/schema/error-ux-review-v1.schema.json +609 -0
  259. data/schema/error-ux-round2-review-v1.schema.json +191 -0
  260. data/schema/error-ux-round2-v1.schema.json +519 -0
  261. data/schema/explain-v1.schema.json +63 -1
  262. data/schema/fix-v1.schema.json +64 -0
  263. data/schema/fix-v2.schema.json +66 -0
  264. data/schema/fix-v3.schema.json +101 -0
  265. data/schema/fuzz-regression-v1.schema.json +79 -0
  266. data/schema/fuzz-v1.schema.json +114 -0
  267. data/schema/{grammar-ir-v2.schema.json → grammar-ir-extensions.schema.json} +20 -65
  268. data/schema/{grammar-ir-v1.schema.json → grammar-ir-foundation.schema.json} +3 -3
  269. data/schema/grammar-ir.schema.json +271 -0
  270. data/schema/ielr-benchmark-v1.schema.json +85 -0
  271. data/schema/lexer-profile-v1.schema.json +491 -0
  272. data/schema/metrics-v1.schema.json +60 -0
  273. data/schema/reduce-v1.schema.json +22 -0
  274. data/schema/reduce-v2.schema.json +63 -0
  275. data/schema/table-artifact-v1.schema.json +377 -0
  276. data/schema/verification-report-v1.schema.json +222 -0
  277. data/schema/verify-v1.schema.json +42 -0
  278. data/sig/ibex/analysis/digraph.rbs +19 -0
  279. data/sig/ibex/bison_import/importer.rbs +140 -0
  280. data/sig/ibex/bison_import/tokenizer.rbs +91 -0
  281. data/sig/ibex/bison_import.rbs +95 -0
  282. data/sig/ibex/bounded_subprocess.rbs +76 -0
  283. data/sig/ibex/cli/ambiguity.rbs +6 -0
  284. data/sig/ibex/cli/analysis.rbs +43 -0
  285. data/sig/ibex/cli/bison_import.rbs +32 -0
  286. data/sig/ibex/cli/config.rbs +35 -0
  287. data/sig/ibex/cli/diagnostics.rbs +16 -3
  288. data/sig/ibex/cli/documentation.rbs +5 -1
  289. data/sig/ibex/cli/equiv.rbs +49 -0
  290. data/sig/ibex/cli/error_messages.rbs +6 -0
  291. data/sig/ibex/cli/explain.rbs +6 -0
  292. data/sig/ibex/cli/fix.rbs +53 -0
  293. data/sig/ibex/cli/formatting.rbs +5 -1
  294. data/sig/ibex/cli/fuzz.rbs +47 -0
  295. data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
  296. data/sig/ibex/cli/generation_artifacts.rbs +21 -2
  297. data/sig/ibex/cli/generation_error_messages.rbs +2 -2
  298. data/sig/ibex/cli/grammar_tests.rbs +15 -3
  299. data/sig/ibex/cli/ir_tools.rbs +7 -19
  300. data/sig/ibex/cli/outputs.rbs +9 -3
  301. data/sig/ibex/cli/reduce.rbs +60 -0
  302. data/sig/ibex/cli/reduce_reporting.rbs +27 -0
  303. data/sig/ibex/cli/samples.rbs +8 -0
  304. data/sig/ibex/cli/verify.rbs +28 -0
  305. data/sig/ibex/cli/watch.rbs +2 -2
  306. data/sig/ibex/cli.rbs +79 -5
  307. data/sig/ibex/codegen/action_method_source.rbs +4 -4
  308. data/sig/ibex/codegen/explain.rbs +45 -25
  309. data/sig/ibex/codegen/generated_action_abi.rbs +14 -10
  310. data/sig/ibex/codegen/rbs.rbs +12 -10
  311. data/sig/ibex/codegen/report.rbs +12 -12
  312. data/sig/ibex/codegen/ruby.rbs +18 -15
  313. data/sig/ibex/codegen/ruby_actions.rbs +6 -6
  314. data/sig/ibex/codegen/ruby_syntax.rbs +10 -8
  315. data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
  316. data/sig/ibex/configuration/explanation.rbs +195 -0
  317. data/sig/ibex/configuration/inspector.rbs +53 -0
  318. data/sig/ibex/configuration.rbs +242 -0
  319. data/sig/ibex/coverage/collector.rbs +16 -14
  320. data/sig/ibex/coverage/event_stream.rbs +12 -10
  321. data/sig/ibex/coverage/report.rbs +20 -18
  322. data/sig/ibex/coverage/runtime_event_validator.rbs +38 -36
  323. data/sig/ibex/delta_reducer.rbs +38 -0
  324. data/sig/ibex/diff.rbs +47 -0
  325. data/sig/ibex/equiv/machine.rbs +54 -0
  326. data/sig/ibex/equiv.rbs +129 -0
  327. data/sig/ibex/fix.rbs +138 -0
  328. data/sig/ibex/frontend/ast.rbs +33 -7
  329. data/sig/ibex/frontend/bootstrap_parser.rbs +2 -0
  330. data/sig/ibex/frontend/diagnostic.rbs +2 -2
  331. data/sig/ibex/frontend/formatter.rbs +38 -30
  332. data/sig/ibex/frontend/generated_parser.rbs +87 -77
  333. data/sig/ibex/frontend/generated_parser_base.rbs +4 -2
  334. data/sig/ibex/frontend/parser/declarations.rbs +3 -0
  335. data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
  336. data/sig/ibex/frontend/resolution.rbs +3 -2
  337. data/sig/ibex/frontend/source_cursor.rbs +2 -2
  338. data/sig/ibex/frontend/source_span.rbs +5 -2
  339. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +13 -1
  340. data/sig/ibex/frontend/token_adapter.rbs +6 -0
  341. data/sig/ibex/fuzz.rbs +71 -0
  342. data/sig/ibex/generation_input.rbs +2 -2
  343. data/sig/ibex/generation_manifest.rbs +35 -32
  344. data/sig/ibex/generation_transaction_recovery.rbs +2 -2
  345. data/sig/ibex/generation_transaction_validation.rbs +2 -2
  346. data/sig/ibex/grammar_tests.rbs +2 -2
  347. data/sig/ibex/ir/automaton_ir.rbs +30 -11
  348. data/sig/ibex/ir/grammar_ir.rbs +41 -27
  349. data/sig/ibex/ir/lexer_ir.rbs +8 -8
  350. data/sig/ibex/ir/parser_contract.rbs +69 -0
  351. data/sig/ibex/ir/serialize.rbs +63 -28
  352. data/sig/ibex/ir/validator/automaton.rbs +47 -44
  353. data/sig/ibex/ir/validator/base.rbs +35 -31
  354. data/sig/ibex/ir/validator/grammar.rbs +78 -67
  355. data/sig/ibex/ir/validator/lexer.rbs +4 -4
  356. data/sig/ibex/ir.rbs +9 -3
  357. data/sig/ibex/lalr/build_metrics.rbs +42 -2
  358. data/sig/ibex/lalr/builder.rbs +75 -24
  359. data/sig/ibex/lalr/conflict_search.rbs +5 -2
  360. data/sig/ibex/lalr/counterexample.rbs +17 -14
  361. data/sig/ibex/lalr/direct_lookaheads.rbs +35 -28
  362. data/sig/ibex/lalr/goto_follows.rbs +89 -0
  363. data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
  364. data/sig/ibex/lalr/ielr/bits.rbs +14 -0
  365. data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
  366. data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
  367. data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
  368. data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
  369. data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
  370. data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
  371. data/sig/ibex/lalr/ielr_partition.rbs +17 -5
  372. data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
  373. data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
  374. data/sig/ibex/lalr/lr0_collection.rbs +50 -0
  375. data/sig/ibex/lalr/unreachable_states.rbs +25 -0
  376. data/sig/ibex/lalr.rbs +11 -1
  377. data/sig/ibex/location.rbs +6 -6
  378. data/sig/ibex/lsp/document_handlers.rbs +8 -8
  379. data/sig/ibex/lsp/initialization_handlers.rbs +12 -12
  380. data/sig/ibex/lsp/navigation_handlers.rbs +15 -12
  381. data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
  382. data/sig/ibex/lsp/position_codec.rbs +8 -4
  383. data/sig/ibex/lsp/request_handlers.rbs +4 -4
  384. data/sig/ibex/lsp/request_support.rbs +8 -8
  385. data/sig/ibex/lsp/server.rbs +16 -16
  386. data/sig/ibex/lsp/symbol_index.rbs +20 -21
  387. data/sig/ibex/lsp/symbol_index_builder.rbs +9 -8
  388. data/sig/ibex/lsp/symbol_occurrence.rbs +11 -5
  389. data/sig/ibex/lsp/transport.rbs +18 -6
  390. data/sig/ibex/lsp/workspace.rbs +3 -2
  391. data/sig/ibex/lsp/workspace_analyzer.rbs +1 -1
  392. data/sig/ibex/messages.rbs +26 -0
  393. data/sig/ibex/metrics.rbs +50 -0
  394. data/sig/ibex/normalize/diagnostics.rbs +4 -4
  395. data/sig/ibex/normalize/expander.rbs +2 -2
  396. data/sig/ibex/normalize/expression.rbs +10 -8
  397. data/sig/ibex/normalize/grammar_builder.rbs +11 -0
  398. data/sig/ibex/normalize/inline_expansion.rbs +59 -50
  399. data/sig/ibex/normalize/lexer.rbs +4 -4
  400. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +15 -14
  401. data/sig/ibex/normalize/parameter_lowering.rbs +18 -18
  402. data/sig/ibex/normalize/parameters.rbs +13 -8
  403. data/sig/ibex/normalize/parser_configuration.rbs +23 -0
  404. data/sig/ibex/normalize.rbs +11 -5
  405. data/sig/ibex/racc_migration/report.rbs +8 -6
  406. data/sig/ibex/rake_task.rbs +1 -1
  407. data/sig/ibex/samples.rbs +13 -4
  408. data/sig/ibex/table_artifact/builder.rbs +93 -0
  409. data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
  410. data/sig/ibex/table_artifact/document.rbs +27 -0
  411. data/sig/ibex/table_artifact/executor.rbs +66 -0
  412. data/sig/ibex/table_artifact/serializer.rbs +25 -0
  413. data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
  414. data/sig/ibex/table_artifact/validator/support.rbs +46 -0
  415. data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
  416. data/sig/ibex/table_artifact/validator.rbs +66 -0
  417. data/sig/ibex/table_artifact.rbs +32 -0
  418. data/sig/ibex/table_simulation/result.rbs +8 -4
  419. data/sig/ibex/table_simulation/step.rbs +4 -2
  420. data/sig/ibex/tables.rbs +10 -9
  421. data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
  422. data/sig/ibex/verification_report/builder.rbs +53 -0
  423. data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
  424. data/sig/ibex/verification_report/logical_path.rbs +34 -0
  425. data/sig/ibex/verification_report/validator.rbs +114 -0
  426. data/sig/ibex/verification_report.rbs +44 -0
  427. data/sig/ibex/verify/action_correspondence.rbs +50 -0
  428. data/sig/ibex/verify/language_witness.rbs +112 -0
  429. data/sig/ibex/verify/reference_collection.rbs +63 -0
  430. data/sig/ibex/verify/result.rbs +52 -0
  431. data/sig/ibex/verify/verifier.rbs +170 -0
  432. data/sig/ibex/verify.rbs +6 -0
  433. data/sig/ibex/watch/runner.rbs +12 -2
  434. data/sig/ibex/watch/source_snapshot.rbs +13 -9
  435. metadata +232 -12
  436. data/lib/ibex/ir/migration.rb +0 -120
  437. data/sig/ibex/ir/migration.rbs +0 -34
@@ -0,0 +1,140 @@
1
+ # Generated from lib/ibex/bison_import/importer.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module BisonImport
5
+ # Converts Bison declarations and productions into analysis-only Ibex
6
+ # source without parsing or executing C.
7
+ # rubocop:disable Metrics/ClassLength -- declaration and rule recovery share one positioned directive report.
8
+ class Importer
9
+ type alternative = { items: Array[String], precedence: String? }
10
+
11
+ type rule = { lhs: String, alternatives: Array[alternative] }
12
+
13
+ DEFAULT_MAX_BYTES: Integer
14
+
15
+ DEFAULT_MAX_TOKENS: Integer
16
+
17
+ DEFAULT_MAX_RULES: Integer
18
+
19
+ DEFAULT_MAX_ACTIONS: Integer
20
+
21
+ # @rbs (String source, file: String, ?class_name: String?, ?max_bytes: Integer,
22
+ # ?max_tokens: Integer, ?max_rules: Integer, ?max_actions: Integer) -> void
23
+ def initialize: (String source, file: String, ?class_name: String?, ?max_bytes: Integer, ?max_tokens: Integer, ?max_rules: Integer, ?max_actions: Integer) -> void
24
+
25
+ # @rbs () -> Result
26
+ def run: () -> Result
27
+
28
+ private
29
+
30
+ # @rbs () -> void
31
+ def validate_source: () -> void
32
+
33
+ # @rbs () -> [String, String, Integer]
34
+ def split_sections: () -> [ String, String, Integer ]
35
+
36
+ # @rbs (String source) -> void
37
+ def parse_declarations: (String source) -> void
38
+
39
+ # @rbs (String source) -> Array[{ name: String, detail: String, line: Integer, column: Integer }]
40
+ def declaration_chunks: (String source) -> Array[{ name: String, detail: String, line: Integer, column: Integer }]
41
+
42
+ # @rbs (String detail) -> void
43
+ def parse_token_declaration: (String detail) -> void
44
+
45
+ # @rbs (String association, String detail) -> void
46
+ def parse_precedence: (String association, String detail) -> void
47
+
48
+ # @rbs (String detail) -> void
49
+ def parse_start: (String detail) -> void
50
+
51
+ # @rbs (Array[Tokenizer::Token] tokens) -> Array[rule]
52
+ def parse_rules: (Array[Tokenizer::Token] tokens) -> Array[rule]
53
+
54
+ # @rbs (Array[Tokenizer::Token] tokens) -> void
55
+ def register_nonterminals: (Array[Tokenizer::Token] tokens) -> void
56
+
57
+ # @rbs (Array[Tokenizer::Token] tokens, Integer cursor) -> [Integer, Integer]?
58
+ def next_lhs: (Array[Tokenizer::Token] tokens, Integer cursor) -> [ Integer, Integer ]?
59
+
60
+ # Bison permits a named reference between an LHS and its colon:
61
+ # `expression[result]: ...`.
62
+ # @rbs (Array[Tokenizer::Token] tokens, Integer cursor) -> [Integer, Integer]?
63
+ def lhs_definition_at: (Array[Tokenizer::Token] tokens, Integer cursor) -> [ Integer, Integer ]?
64
+
65
+ # @rbs (Array[Tokenizer::Token] tokens, Integer cursor) -> [Array[alternative], Integer]
66
+ def parse_alternatives: (Array[Tokenizer::Token] tokens, Integer cursor) -> [ Array[alternative], Integer ]
67
+
68
+ # @rbs (Array[Tokenizer::Token] tokens, Integer cursor, alternative alternative) -> Integer
69
+ def consume_rule_directive: (Array[Tokenizer::Token] tokens, Integer cursor, alternative alternative) -> Integer
70
+
71
+ # @rbs (Tokenizer::Token token) -> String
72
+ def render_symbol: (Tokenizer::Token token) -> String
73
+
74
+ # @rbs (Tokenizer::Token token) -> String
75
+ def render_action: (Tokenizer::Token token) -> String
76
+
77
+ # @rbs (String code) -> String
78
+ def transform_action: (String code) -> String
79
+
80
+ # @rbs (Array[rule] rules) -> String
81
+ def render_source: (Array[rule] rules) -> String
82
+
83
+ # @rbs () -> String
84
+ def structural_status: () -> String
85
+
86
+ # @rbs (Array[String] lines) -> void
87
+ def render_precedence: (Array[String] lines) -> void
88
+
89
+ # @rbs (Array[String] lines, rule rule) -> void
90
+ def render_rule: (Array[String] lines, rule rule) -> void
91
+
92
+ # @rbs (String name, Integer line, Integer column, String detail) -> void
93
+ def record_directive: (String name, Integer line, Integer column, String detail) -> void
94
+
95
+ # @rbs (String detail) -> Array[String]
96
+ def declaration_atoms: (String detail) -> Array[String]
97
+
98
+ # @rbs (String source) -> String
99
+ def strip_declaration_comments: (String source) -> String
100
+
101
+ # @rbs (String value) -> bool
102
+ def identifier_atom?: (String value) -> bool
103
+
104
+ # @rbs (String value) -> bool
105
+ def literal_atom?: (String value) -> bool
106
+
107
+ # @rbs (String value) -> String
108
+ def sanitize_symbol: (String value) -> String
109
+
110
+ # @rbs (String value) -> String
111
+ def terminal_name: (String value) -> String
112
+
113
+ # All imported nonterminals receive a lowercase namespace. This avoids
114
+ # Ibex's terminal-by-case convention and declaration keyword collisions.
115
+ # @rbs (String value) -> String
116
+ def nonterminal_name: (String value) -> String
117
+
118
+ # @rbs () -> String
119
+ def resolved_class_name: () -> String
120
+
121
+ # @rbs (String value) -> String
122
+ def sanitize_class_name: (String value) -> String
123
+
124
+ # @rbs (String value) -> Integer?
125
+ def first_integer: (String value) -> Integer?
126
+
127
+ # @rbs (Integer count) -> void
128
+ def check_rule_budget: (Integer count) -> void
129
+
130
+ # @rbs (Integer count, Tokenizer::Token token) -> void
131
+ def check_action_budget: (Integer count, Tokenizer::Token token) -> void
132
+
133
+ # @rbs (Integer value, Symbol name) -> Integer
134
+ def positive_limit: (Integer value, Symbol name) -> Integer
135
+
136
+ # @rbs () -> Hash[Symbol, Integer]
137
+ def bounds: () -> Hash[Symbol, Integer]
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,91 @@
1
+ # Generated from lib/ibex/bison_import/tokenizer.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module BisonImport
5
+ # Iterative scanner for the punctuation needed to recover Bison rules.
6
+ class Tokenizer
7
+ # One structural token with a byte-oriented source position.
8
+ class Token
9
+ attr_reader type: Symbol
10
+
11
+ attr_reader value: String
12
+
13
+ attr_reader line: Integer
14
+
15
+ attr_reader column: Integer
16
+
17
+ # @rbs (type: Symbol, value: String, line: Integer, column: Integer) -> void
18
+ def initialize: (type: Symbol, value: String, line: Integer, column: Integer) -> void
19
+ end
20
+
21
+ IDENTIFIER_START: Regexp
22
+
23
+ IDENTIFIER_CONTINUE: Regexp
24
+
25
+ # @rbs (String source, start_line: Integer, max_tokens: Integer) -> void
26
+ def initialize: (String source, start_line: Integer, max_tokens: Integer) -> void
27
+
28
+ # @rbs () -> Array[Token]
29
+ def tokenize: () -> Array[Token]
30
+
31
+ private
32
+
33
+ # @rbs () -> Token
34
+ def scan_token: () -> Token
35
+
36
+ # @rbs () -> void
37
+ def skip_ignored: () -> void
38
+
39
+ # @rbs () -> String
40
+ def scan_identifier: () -> String
41
+
42
+ # @rbs () -> String
43
+ def scan_directive: () -> String
44
+
45
+ # @rbs (Integer quote) -> String
46
+ def scan_quoted: (Integer quote) -> String
47
+
48
+ # @rbs () -> String
49
+ def scan_action: () -> String
50
+
51
+ # @rbs (Integer? byte) -> bool
52
+ def skip_action_opaque?: (Integer? byte) -> bool
53
+
54
+ # @rbs (Integer opener, Integer closer) -> String
55
+ def scan_delimited: (Integer opener, Integer closer) -> String
56
+
57
+ # @rbs () -> void
58
+ def skip_block_comment: () -> void
59
+
60
+ # @rbs () -> void
61
+ def skip_line: () -> void
62
+
63
+ # @rbs (String value) -> Symbol
64
+ def punctuation_type: (String value) -> Symbol
65
+
66
+ # @rbs (Integer? byte) -> bool
67
+ def identifier_start?: (Integer? byte) -> bool
68
+
69
+ # @rbs (Integer? byte) -> bool
70
+ def identifier_continue?: (Integer? byte) -> bool
71
+
72
+ # @rbs (Integer? byte) -> bool
73
+ def whitespace?: (Integer? byte) -> bool
74
+
75
+ # @rbs (Integer count) -> void
76
+ def check_token_budget: (Integer count) -> void
77
+
78
+ # @rbs () -> Integer?
79
+ def current_byte: () -> Integer?
80
+
81
+ # @rbs () -> Integer?
82
+ def peek_byte: () -> Integer?
83
+
84
+ # @rbs () -> bool
85
+ def eof?: () -> bool
86
+
87
+ # @rbs () -> void
88
+ def advance: () -> void
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,95 @@
1
+ # Generated from lib/ibex/bison_import.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Clean-room, nonexecuting import of Bison grammar structure.
5
+ module BisonImport
6
+ DIRECTIVES: Hash[String, Symbol]
7
+
8
+ FOREIGN_ACTION_SENTINEL: String
9
+
10
+ STRUCTURAL_STATUS_MARKER: String
11
+
12
+ STRUCTURE_NEUTRAL_UNSUPPORTED: Array[String]
13
+
14
+ class BudgetExceeded < Ibex::Error
15
+ attr_reader details: Hash[Symbol, Object?]
16
+
17
+ # @rbs (Hash[Symbol, Object?] details) -> void
18
+ def initialize: (Hash[Symbol, Object?] details) -> void
19
+ end
20
+
21
+ # One directive occurrence and its original source position.
22
+ class Directive
23
+ attr_reader name: String
24
+
25
+ attr_reader status: Symbol
26
+
27
+ attr_reader line: Integer
28
+
29
+ attr_reader column: Integer
30
+
31
+ attr_reader detail: String
32
+
33
+ # @rbs (name: String, status: Symbol, line: Integer, column: Integer, detail: String) -> void
34
+ def initialize: (name: String, status: Symbol, line: Integer, column: Integer, detail: String) -> void
35
+
36
+ # @rbs () -> Hash[Symbol, Object?]
37
+ def to_h: () -> Hash[Symbol, Object?]
38
+ end
39
+
40
+ # One opaque C action and its mechanical reference rewrite.
41
+ class Action
42
+ attr_reader id: Integer
43
+
44
+ attr_reader line: Integer
45
+
46
+ attr_reader column: Integer
47
+
48
+ attr_reader original: String
49
+
50
+ attr_reader transformed: String
51
+
52
+ attr_reader encoded: String
53
+
54
+ # @rbs (id: Integer, line: Integer, column: Integer, original: String, transformed: String,
55
+ # encoded: String) -> void
56
+ def initialize: (id: Integer, line: Integer, column: Integer, original: String, transformed: String, encoded: String) -> void
57
+
58
+ # @rbs () -> Hash[Symbol, Object?]
59
+ def to_h: () -> Hash[Symbol, Object?]
60
+ end
61
+
62
+ # Immutable source artifact and versioned analysis report.
63
+ class Result
64
+ attr_reader source: String
65
+
66
+ attr_reader file: String
67
+
68
+ attr_reader class_name: String
69
+
70
+ attr_reader directives: Array[Directive]
71
+
72
+ attr_reader actions: Array[Action]
73
+
74
+ attr_reader rule_count: Integer
75
+
76
+ attr_reader bounds: Hash[Symbol, Integer]
77
+
78
+ # @rbs (source: String, file: String, class_name: String, directives: Array[Directive],
79
+ # actions: Array[Action], rule_count: Integer, bounds: Hash[Symbol, Integer]) -> void
80
+ def initialize: (source: String, file: String, class_name: String, directives: Array[Directive], actions: Array[Action], rule_count: Integer, bounds: Hash[Symbol, Integer]) -> void
81
+
82
+ # @rbs () -> Hash[Symbol, Object?]
83
+ def to_h: () -> Hash[Symbol, Object?]
84
+
85
+ # @rbs () -> Array[Directive]
86
+ def structural_unsupported: () -> Array[Directive]
87
+
88
+ # @rbs () -> bool
89
+ def structurally_complete?: () -> bool
90
+ end
91
+
92
+ # @rbs (String source) -> bool
93
+ def self?.bison_source?: (String source) -> bool
94
+ end
95
+ end
@@ -0,0 +1,76 @@
1
+ # Generated from lib/ibex/bounded_subprocess.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Captures one shell-free child process under wall-clock and output budgets.
5
+ class BoundedSubprocess
6
+ DEFAULT_TIMEOUT_SECONDS: Integer
7
+
8
+ DEFAULT_MAX_OUTPUT_BYTES: Integer
9
+
10
+ TERMINATION_GRACE_SECONDS: Float
11
+
12
+ POLL_SECONDS: Float
13
+
14
+ # Immutable observation of one bounded child-process execution.
15
+ class Result
16
+ attr_reader stdout: String
17
+
18
+ attr_reader stderr: String
19
+
20
+ attr_reader status: Process::Status
21
+
22
+ attr_reader timed_out: bool
23
+
24
+ attr_reader output_limited: bool
25
+
26
+ # @rbs (stdout: String, stderr: String, status: Process::Status,
27
+ # timed_out: bool, output_limited: bool) -> void
28
+ def initialize: (stdout: String, stderr: String, status: Process::Status, timed_out: bool, output_limited: bool) -> void
29
+ end
30
+
31
+ # @rbs (timeout_seconds: Integer, max_output_bytes: Integer) -> void
32
+ def initialize: (timeout_seconds: Integer, max_output_bytes: Integer) -> void
33
+
34
+ # @rbs (Array[String] command, input: String) -> Result
35
+ def run: (Array[String] command, input: String) -> Result
36
+
37
+ private
38
+
39
+ # @rbs (Array[String] command, String input, File stdin, File stdout, File stderr) -> Result
40
+ def run_with_files: (Array[String] command, String input, File stdin, File stdout, File stderr) -> Result
41
+
42
+ # @rbs (Array[String] command, File stdin, File stdout, File stderr) -> Integer
43
+ def spawn_child: (Array[String] command, File stdin, File stdout, File stderr) -> Integer
44
+
45
+ # @rbs (Integer pid, String stdout_path, String stderr_path) ->
46
+ # [Process::Status, bool, bool]
47
+ def wait: (Integer pid, String stdout_path, String stderr_path) -> [ Process::Status, bool, bool ]
48
+
49
+ # @rbs (Integer pid) -> Process::Status
50
+ def terminate: (Integer pid) -> Process::Status
51
+
52
+ # @rbs (Integer pid) -> void
53
+ def terminate_descendants: (Integer pid) -> void
54
+
55
+ # @rbs (String signal, Integer pid) -> void
56
+ def signal_process_tree: (String signal, Integer pid) -> void
57
+
58
+ # @rbs (Integer pid) -> bool
59
+ def process_group_alive?: (Integer pid) -> bool
60
+
61
+ # @rbs () -> bool
62
+ def process_groups?: () -> bool
63
+
64
+ # @rbs (Integer pid) -> Process::Status
65
+ def process_status: (Integer pid) -> Process::Status
66
+
67
+ # @rbs (String stdout_path, String stderr_path) -> bool
68
+ def output_exceeded?: (String stdout_path, String stderr_path) -> bool
69
+
70
+ # @rbs (String path) -> String
71
+ def read_bounded: (String path) -> String
72
+
73
+ # @rbs () -> Float
74
+ def monotonic_time: () -> Float
75
+ end
76
+ end
@@ -11,6 +11,10 @@ module Ibex
11
11
 
12
12
  private def normalize_grammar_path: (String) -> IR::Grammar
13
13
 
14
+ private def configuration_value: (String) -> untyped
15
+
16
+ private def set_configuration_option: (Symbol, Object?) -> void
17
+
14
18
  private
15
19
 
16
20
  # @rbs (Array[String] arguments) -> Integer
@@ -18,5 +22,7 @@ module Ibex
18
22
 
19
23
  # @rbs () -> OptionParser
20
24
  def ambiguity_option_parser: () -> OptionParser
25
+
26
+ private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
21
27
  end
22
28
  end
@@ -0,0 +1,43 @@
1
+ # Generated from lib/ibex/cli/analysis.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI entry points for deterministic grammar diff and metrics reports.
5
+ module CLIAnalysis
6
+ type analysis_options = Hash[Symbol, untyped]
7
+
8
+ private def normalize_grammar_path: (String) -> IR::Grammar
9
+
10
+ private def set_configuration_option: (Symbol, Object?) -> void
11
+
12
+ private def local_configuration_value: (Hash[Symbol, untyped], String) -> untyped
13
+
14
+ private def set_local_configuration_option: (Hash[Symbol, untyped], Symbol, untyped) -> void
15
+
16
+ private
17
+
18
+ # @rbs (Array[String] arguments) -> Integer
19
+ def run_diff_command: (Array[String] arguments) -> Integer
20
+
21
+ # @rbs (Array[String] arguments) -> Integer
22
+ def run_metrics_command: (Array[String] arguments) -> Integer
23
+
24
+ # @rbs (Array[String] arguments, String command, operands: String) -> Hash[Symbol, untyped]
25
+ def analysis_options: (Array[String] arguments, String command, operands: String) -> Hash[Symbol, untyped]
26
+
27
+ # @rbs (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
28
+ def load_analysis_automaton: (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
29
+
30
+ # @rbs (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
31
+ def build_analysis_automaton: (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
32
+
33
+ # @rbs (Hash[Symbol, untyped] report, String format) -> void
34
+ def write_analysis_report: (Hash[Symbol, untyped] report, String format) -> void
35
+
36
+ # @rbs (Hash[Symbol, untyped] settings) -> bool
37
+ def algo_set?: (Hash[Symbol, untyped] settings) -> bool
38
+
39
+ private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
40
+
41
+ private def configuration_value: (String) -> untyped
42
+ end
43
+ end
@@ -0,0 +1,32 @@
1
+ # Generated from lib/ibex/cli/bison_import.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI boundary for analysis-only Bison grammar import.
5
+ module CLIBisonImport
6
+ type bison_import_options = { format: String, max_bytes: Integer, max_tokens: Integer, max_rules: Integer, max_actions: Integer, ?output: String, ?class_name: String, ?help: bool }
7
+
8
+ private def same_file_target?: (String, String) -> bool
9
+
10
+ private def atomic_write_ir: (String, String) -> void
11
+
12
+ private
13
+
14
+ # @rbs (Array[String] arguments) -> Integer
15
+ def run_bison_import_command: (Array[String] arguments) -> Integer
16
+
17
+ # @rbs () -> bison_import_options
18
+ def default_bison_import_options: () -> bison_import_options
19
+
20
+ # @rbs (bison_import_options settings) -> OptionParser
21
+ def bison_import_option_parser: (bison_import_options settings) -> OptionParser
22
+
23
+ # @rbs (OptionParser options, bison_import_options settings) -> void
24
+ def add_bison_import_budgets: (OptionParser options, bison_import_options settings) -> void
25
+
26
+ # @rbs (String path, bison_import_options settings) -> BisonImport::Result
27
+ def build_bison_import: (String path, bison_import_options settings) -> BisonImport::Result
28
+
29
+ # @rbs (String input, String? output, String source) -> void
30
+ def write_bison_import: (String input, String? output, String source) -> void
31
+ end
32
+ end
@@ -0,0 +1,35 @@
1
+ # Generated from lib/ibex/cli/config.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Static effective-configuration reporting for source grammars and Grammar IR.
5
+ module CLIConfig
6
+ type config_options = { format: String, mode: Symbol, configuration_explicit: Array[Symbol], ?from: String, ?algorithm: Symbol, ?entry_isolation: bool, ?cst_trivia: Symbol, ?superclass: String, ?omit_actions: bool, ?help: String }
7
+
8
+ private def input_path: (Array[String]) -> String
9
+
10
+ private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
11
+
12
+ private
13
+
14
+ # @rbs (Array[String] arguments) -> Integer
15
+ def run_config_command: (Array[String] arguments) -> Integer
16
+
17
+ # @rbs (Array[String] arguments) -> [config_options, Array[String]]
18
+ def config_options: (Array[String] arguments) -> [ config_options, Array[String] ]
19
+
20
+ # @rbs (OptionParser options, config_options settings) -> void
21
+ def add_config_options: (OptionParser options, config_options settings) -> void
22
+
23
+ # @rbs (OptionParser options, config_options settings) -> void
24
+ def add_config_contract_options: (OptionParser options, config_options settings) -> void
25
+
26
+ # @rbs (String path, config_options settings) -> Configuration::Input
27
+ def load_configuration_input: (String path, config_options settings) -> Configuration::Input
28
+
29
+ # @rbs (String path) -> Configuration::Input
30
+ def load_grammar_ir_configuration: (String path) -> Configuration::Input
31
+
32
+ # @rbs (Configuration::Report report, String format) -> void
33
+ def write_configuration_report: (Configuration::Report report, String format) -> void
34
+ end
35
+ end
@@ -7,10 +7,14 @@ module Ibex
7
7
 
8
8
  DEFAULT_MAX_DIAGNOSTICS: Integer
9
9
 
10
- type diagnostic_settings = { format: String, max_diagnostics: Integer, mode: Symbol, ?help: bool }
10
+ type diagnostic_settings = Hash[Symbol, untyped]
11
11
 
12
12
  private def input_path: (Array[String]) -> String
13
13
 
14
+ private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
15
+
16
+ private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
17
+
14
18
  private
15
19
 
16
20
  # @rbs (Array[String] arguments) -> Integer
@@ -32,7 +36,16 @@ module Ibex
32
36
  # @rbs (Frontend::ParseResult result, format: String) -> void
33
37
  def write_diagnostics: (Frontend::ParseResult result, format: String) -> void
34
38
 
35
- # @rbs (Frontend::ParseResult result) -> Hash[String, untyped]
36
- def diagnostics_document: (Frontend::ParseResult result) -> Hash[String, untyped]
39
+ # @rbs (Frontend::ParseResult result) -> Hash[String, Object?]
40
+ def diagnostics_document: (Frontend::ParseResult result) -> Hash[String, Object?]
41
+
42
+ # @rbs (Frontend::Diagnostic diagnostic) -> String
43
+ def localized_diagnostic_text: (Frontend::Diagnostic diagnostic) -> String
44
+
45
+ # @rbs (Frontend::Diagnostic diagnostic) -> Hash[Symbol, Object?]
46
+ def localized_diagnostic_hash: (Frontend::Diagnostic diagnostic) -> Hash[Symbol, Object?]
47
+
48
+ # @rbs (Frontend::Diagnostic diagnostic) -> String
49
+ def localized_diagnostic_message: (Frontend::Diagnostic diagnostic) -> String
37
50
  end
38
51
  end
@@ -3,7 +3,7 @@
3
3
  module Ibex
4
4
  # Generates standalone grammar documentation from the canonical include closure.
5
5
  module CLIDocumentation
6
- type documentation_settings = { format: String, mode: Symbol, ?output: String, ?help: bool }
6
+ type documentation_settings = Hash[Symbol, untyped]
7
7
 
8
8
  private def input_path: (Array[String]) -> String
9
9
 
@@ -11,6 +11,10 @@ module Ibex
11
11
 
12
12
  private def atomic_write_ir: (String path, String source) -> void
13
13
 
14
+ private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
15
+
16
+ private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
17
+
14
18
  private
15
19
 
16
20
  # @rbs (Array[String] arguments) -> Integer
@@ -0,0 +1,49 @@
1
+ # Generated from lib/ibex/cli/equiv.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI entry point for bounded language comparison.
5
+ module CLIEquiv
6
+ type equiv_options = Hash[Symbol, untyped]
7
+
8
+ private def normalize_grammar_path: (String) -> IR::Grammar
9
+
10
+ private def configuration_value: (String) -> untyped
11
+
12
+ private def set_configuration_option: (Symbol, Object?) -> void
13
+
14
+ private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
15
+
16
+ private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
17
+
18
+ private
19
+
20
+ # @rbs (Array[String] arguments) -> Integer
21
+ def run_equiv_command: (Array[String] arguments) -> Integer
22
+
23
+ # @rbs (Array[String] arguments) -> equiv_options
24
+ def equiv_options: (Array[String] arguments) -> equiv_options
25
+
26
+ # @rbs () -> equiv_options
27
+ def default_equiv_options: () -> equiv_options
28
+
29
+ # @rbs (OptionParser options, equiv_options settings) -> void
30
+ def add_equiv_search_options: (OptionParser options, equiv_options settings) -> void
31
+
32
+ # @rbs (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
33
+ def load_equiv_automaton: (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
34
+
35
+ # @rbs (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
36
+ def build_equiv_automaton: (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
37
+
38
+ # @rbs (Hash[Symbol, Object?] report, String format) -> void
39
+ def write_equiv_report: (Hash[Symbol, Object?] report, String format) -> void
40
+
41
+ # @rbs (equiv_options settings) -> bool
42
+ def algorithm_explicit_equiv?: (equiv_options settings) -> bool
43
+
44
+ private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
45
+
46
+ # @rbs (Integer value, String name) -> Integer
47
+ def positive_equiv_option: (Integer value, String name) -> Integer
48
+ end
49
+ end
@@ -25,6 +25,10 @@ module Ibex
25
25
 
26
26
  private def record_generation_input: (String, String) -> GenerationInput
27
27
 
28
+ private def select_configuration_mode: (String) -> void
29
+
30
+ private def set_configuration_option: (Symbol, Object?) -> void
31
+
28
32
  private
29
33
 
30
34
  # @rbs (Array[String] arguments) -> Integer
@@ -53,5 +57,7 @@ module Ibex
53
57
 
54
58
  # @rbs (String path) -> Integer
55
59
  def messages_file_mode: (String path) -> Integer
60
+
61
+ private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
56
62
  end
57
63
  end
@@ -11,6 +11,10 @@ module Ibex
11
11
 
12
12
  private def normalize_grammar_path: (String) -> IR::Grammar
13
13
 
14
+ private def configuration_value: (String) -> untyped
15
+
16
+ private def set_configuration_option: (Symbol, Object?) -> void
17
+
14
18
  private
15
19
 
16
20
  # @rbs (Array[String] arguments) -> Integer
@@ -21,5 +25,7 @@ module Ibex
21
25
 
22
26
  # @rbs (OptionParser options) -> void
23
27
  def add_explain_search_options: (OptionParser options) -> void
28
+
29
+ private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
24
30
  end
25
31
  end