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,51 @@
1
+ # Generated from lib/ibex/rake_task.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Declares grammar-to-parser generation in a Rakefile.
5
+ class RakeTask < Rake::TaskLib
6
+ attr_accessor grammar: String?
7
+
8
+ attr_accessor output: String?
9
+
10
+ attr_accessor options: Array[String]
11
+
12
+ attr_accessor action_source: String | true | nil
13
+
14
+ # @rbs (String | Symbol name) ?{ (RakeTask) -> void } -> void
15
+ def initialize: (String | Symbol name) ?{ (RakeTask) -> void } -> void
16
+
17
+ private
18
+
19
+ # @rbs () -> void
20
+ def define: () -> void
21
+
22
+ # @rbs () -> void
23
+ def reject_watch_option!: () -> void
24
+
25
+ # @rbs (String target) -> String?
26
+ def configured_action_source: (String target) -> String?
27
+
28
+ # @rbs (String target) -> String
29
+ def default_action_source_path: (String target) -> String
30
+
31
+ # @rbs (String source) -> Array[String]
32
+ def grammar_prerequisites: (String source) -> Array[String]
33
+
34
+ # @rbs () -> Symbol
35
+ def configured_mode: () -> Symbol
36
+ end
37
+ end
38
+
39
+ module Rake
40
+ class TaskLib
41
+ def initialize: () -> void
42
+ end
43
+
44
+ class Task
45
+ def self.define_task: (Hash[String | Symbol, String | Array[String]]) -> Task
46
+ | (Hash[String | Symbol, String | Array[String]]) { (Object?, Object?) -> void } -> Task
47
+ end
48
+
49
+ class FileTask < Task
50
+ end
51
+ end
@@ -0,0 +1,60 @@
1
+ # Generated from lib/ibex/samples.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Generates bounded terminal sentences from Grammar IR.
5
+ class Samples
6
+ DEFAULT_MAX_EXPANSIONS: Integer
7
+
8
+ # @rbs (IR::Grammar grammar, ?seed: Integer, ?max_tokens: Integer, ?max_depth: Integer,
9
+ # ?max_expansions: Integer, ?strategy: Symbol | String, ?path_length: Integer) -> void
10
+ def initialize: (IR::Grammar grammar, ?seed: Integer, ?max_tokens: Integer, ?max_depth: Integer, ?max_expansions: Integer, ?strategy: Symbol | String, ?path_length: Integer) -> void
11
+
12
+ # @rbs (?count: Integer) -> Array[Array[String]]
13
+ def generate: (?count: Integer) -> Array[Array[String]]
14
+
15
+ private
16
+
17
+ # @rbs () -> Hash[Integer, Integer?]
18
+ def compute_minimum_costs: () -> Hash[Integer, Integer?]
19
+
20
+ # @rbs () -> Hash[Integer, Integer?]
21
+ def compute_minimum_heights: () -> Hash[Integer, Integer?]
22
+
23
+ # @rbs (Integer terminal_value) { (IR::Production, Hash[Integer, Integer?]) -> Integer? }
24
+ # -> Hash[Integer, Integer?]
25
+ def compute_minimum_values: (Integer terminal_value) { (IR::Production, Hash[Integer, Integer?]) -> Integer? } -> Hash[Integer, Integer?]
26
+
27
+ # @rbs (Hash[Integer, Integer?] values, Integer terminal_value) -> Array[Integer]
28
+ def seed_terminal_values: (Hash[Integer, Integer?] values, Integer terminal_value) -> Array[Integer]
29
+
30
+ # @rbs (Hash[Integer, Integer?] values, Array[Integer] queue, Integer symbol_id, Integer? candidate) -> void
31
+ def update_minimum: (Hash[Integer, Integer?] values, Array[Integer] queue, Integer symbol_id, Integer? candidate) -> void
32
+
33
+ # @rbs (IR::Production production, Hash[Integer, Integer?] values) -> Array[Integer]?
34
+ def resolved_rhs_values: (IR::Production production, Hash[Integer, Integer?] values) -> Array[Integer]?
35
+
36
+ # @rbs (IR::GrammarSymbol start, Integer remaining_expansions) -> [Array[String], Integer]
37
+ def expand: (IR::GrammarSymbol start, Integer remaining_expansions) -> [ Array[String], Integer ]
38
+
39
+ # @rbs (Integer nonterminal_id, Integer budget, Integer depth, Array[Integer] path) -> IR::Production
40
+ def choose_production: (Integer nonterminal_id, Integer budget, Integer depth, Array[Integer] path) -> IR::Production
41
+
42
+ # @rbs (Integer nonterminal_id, Integer budget) -> Array[IR::Production]
43
+ def bounded_productions: (Integer nonterminal_id, Integer budget) -> Array[IR::Production]
44
+
45
+ # @rbs (Array[IR::Production] candidates) -> Array[IR::Production]
46
+ def minimum_height_productions: (Array[IR::Production] candidates) -> Array[IR::Production]
47
+
48
+ # @rbs (Array[Integer] path, IR::Production production) -> Integer
49
+ def path_count: (Array[Integer] path, IR::Production production) -> Integer
50
+
51
+ # @rbs (Integer symbol_id) -> Integer
52
+ def minimum_cost!: (Integer symbol_id) -> Integer
53
+
54
+ # @rbs (IR::Production production) -> Integer?
55
+ def production_cost: (IR::Production production) -> Integer?
56
+
57
+ # @rbs (IR::Production production) -> Integer?
58
+ def production_height: (IR::Production production) -> Integer?
59
+ end
60
+ end
@@ -0,0 +1,93 @@
1
+ # Generated from lib/ibex/table_artifact/builder.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Projects validated Automaton IR into an action-free executable sidecar.
6
+ class Builder
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
8
+
9
+ type json_hash = Hash[String, untyped]
10
+
11
+ type action_rows = Array[Hash[Integer, IR::runtime_action]]
12
+
13
+ type action_table = action_rows | Tables::CompactActions
14
+
15
+ type goto_rows = Array[Hash[Integer, Integer]]
16
+
17
+ type goto_table = goto_rows | Tables::Compact
18
+
19
+ include CSTProjection
20
+
21
+ REPRESENTATIONS: Array[Symbol]
22
+
23
+ # @rbs (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
24
+ # ?omit_action_call: bool?) -> void
25
+ def initialize: (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?) -> void
26
+
27
+ # @rbs () -> Document
28
+ def build: () -> Document
29
+
30
+ private
31
+
32
+ # @rbs (Hash[String, String] source_identity) -> json_hash
33
+ def build_payload: (Hash[String, String] source_identity) -> json_hash
34
+
35
+ # @rbs () -> String
36
+ def automaton_digest: () -> String
37
+
38
+ # @rbs () -> json_hash
39
+ def table_format: () -> json_hash
40
+
41
+ # @rbs () -> Array[json_hash]
42
+ def symbols: () -> Array[json_hash]
43
+
44
+ # @rbs () -> Array[json_hash]
45
+ def tokens: () -> Array[json_hash]
46
+
47
+ # @rbs () -> Array[json_hash]
48
+ def entry_states: () -> Array[json_hash]
49
+
50
+ # @rbs () -> json_hash
51
+ def tables: () -> json_hash
52
+
53
+ # @rbs (action_table table) -> json_hash
54
+ def action_table: (action_table table) -> json_hash
55
+
56
+ # @rbs (Tables::CompactActions table) -> json_hash
57
+ def compact_action_table: (Tables::CompactActions table) -> json_hash
58
+
59
+ # @rbs (goto_table table) -> json_hash
60
+ def goto_table: (goto_table table) -> json_hash
61
+
62
+ # @rbs (Tables::Compact table) -> json_hash
63
+ def compact_goto_table: (Tables::Compact table) -> json_hash
64
+
65
+ # @rbs () -> Array[json_hash]
66
+ def productions: () -> Array[json_hash]
67
+
68
+ # @rbs (IR::Production production) -> bool
69
+ def action_slot?: (IR::Production production) -> bool
70
+
71
+ # @rbs () -> json_hash
72
+ def semantic_actions: () -> json_hash
73
+
74
+ # @rbs () -> json_hash
75
+ def recovery: () -> json_hash
76
+
77
+ # @rbs (json_hash payload) -> json_hash
78
+ def build_cost: (json_hash payload) -> json_hash
79
+
80
+ # @rbs (json_hash table, String values_key) -> Integer
81
+ def occupied_cells: (json_hash table, String values_key) -> Integer
82
+
83
+ # @rbs () -> String
84
+ def lookup_cost: () -> String
85
+
86
+ # @rbs () -> String
87
+ def recognition_cost: () -> String
88
+
89
+ # @rbs (Symbol | String? requested) -> Symbol
90
+ def effective_cst_trivia: (Symbol | String? requested) -> Symbol
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,20 @@
1
+ # Generated from lib/ibex/table_artifact/cst_projection.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Converts code-generation CST metadata into closed JSON records.
6
+ module CSTProjection
7
+ private def cst: () -> Hash[String, Builder::json_value]?
8
+
9
+ private def normalize_cst: (Codegen::CSTMetadata::metadata metadata) -> Hash[String, Builder::json_value]
10
+
11
+ private def normalize_cst_kinds: (Codegen::CSTMetadata::kinds kinds) -> Hash[String, Builder::json_value]
12
+
13
+ private def named_kinds: (Hash[String, Integer] values) -> Array[Hash[String, String | Integer]]
14
+
15
+ private def normalize_cst_slot: (Integer production_id, Codegen::CSTMetadata::slot slot) -> Hash[String, Builder::json_value]
16
+
17
+ private
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,27 @@
1
+ # Generated from lib/ibex/table_artifact/document.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # An immutable, validated table artifact document.
6
+ class Document
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
8
+
9
+ attr_reader data: Hash[String, json_value]
10
+
11
+ # @rbs (Hash[String, json_value] data) -> void
12
+ def initialize: (Hash[String, json_value] data) -> void
13
+
14
+ # @rbs () -> String
15
+ def dump: () -> String
16
+
17
+ # @rbs () -> Hash[String, json_value]
18
+ def payload: () -> Hash[String, json_value]
19
+
20
+ # @rbs () -> Hash[String, String]
21
+ def identity: () -> Hash[String, String]
22
+
23
+ # @rbs () -> Hash[String, json_value]
24
+ def cost: () -> Hash[String, json_value]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,66 @@
1
+ # Generated from lib/ibex/table_artifact/executor.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Recognition-only driver over internal token ids; it never loads wrapper code.
6
+ class Executor
7
+ class Result
8
+ attr_reader status: Symbol
9
+
10
+ attr_reader steps: Integer
11
+
12
+ attr_reader consumed_tokens: Integer
13
+
14
+ attr_reader reason: String?
15
+
16
+ # @rbs (status: Symbol, steps: Integer, consumed_tokens: Integer, reason: String?) -> void
17
+ def initialize: (status: Symbol, steps: Integer, consumed_tokens: Integer, reason: String?) -> void
18
+
19
+ # @rbs () -> bool
20
+ def accepted?: () -> bool
21
+
22
+ # @rbs () -> bool
23
+ def rejected?: () -> bool
24
+
25
+ # @rbs () -> bool
26
+ def exhausted?: () -> bool
27
+ end
28
+
29
+ # @rbs (Document | Hash[String, ValidationSupport::json_value] document) -> void
30
+ def initialize: (Document | Hash[String, ValidationSupport::json_value] document) -> void
31
+
32
+ # @rbs (Array[Integer] token_ids, ?entry: String | Symbol?, ?max_steps: Integer) -> Result
33
+ def recognize: (Array[Integer] token_ids, ?entry: String | Symbol?, ?max_steps: Integer) -> Result
34
+
35
+ private
36
+
37
+ # @rbs (Array[Integer] input, Array[Integer] stack, Integer max_steps) -> Result
38
+ def execute: (Array[Integer] input, Array[Integer] stack, Integer max_steps) -> Result
39
+
40
+ # @rbs (Integer? code, Integer token_id, Integer step, Integer cursor) -> Result?
41
+ def immediate_result: (Integer? code, Integer token_id, Integer step, Integer cursor) -> Result?
42
+
43
+ # @rbs (Array[Integer] token_ids) -> Array[Integer]
44
+ def validate_input: (Array[Integer] token_ids) -> Array[Integer]
45
+
46
+ # @rbs (String | Symbol? requested) -> Integer
47
+ def entry_state: (String | Symbol? requested) -> Integer
48
+
49
+ # @rbs (Integer row, Integer column) -> Integer?
50
+ def action: (Integer row, Integer column) -> Integer?
51
+
52
+ # @rbs (Integer row, Integer column) -> Integer?
53
+ def goto_state: (Integer row, Integer column) -> Integer?
54
+
55
+ # @rbs (Hash[String, ValidationSupport::json_value] table, Integer row, Integer column,
56
+ # String value_key) -> Integer?
57
+ def displacement_lookup: (Hash[String, ValidationSupport::json_value] table, Integer row, Integer column, String value_key) -> Integer?
58
+
59
+ # @rbs (Array[Integer] stack, Integer code) -> String?
60
+ def reduce_stack: (Array[Integer] stack, Integer code) -> String?
61
+
62
+ # @rbs (Symbol status, Integer steps, Integer consumed, String? reason) -> Result
63
+ def result: (Symbol status, Integer steps, Integer consumed, String? reason) -> Result
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,25 @@
1
+ # Generated from lib/ibex/table_artifact/serializer.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Canonical JSON ordering and digest primitives shared by writer and loader.
6
+ module Serializer
7
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[json_value, json_value]
8
+
9
+ # @rbs (json_value value) -> json_value
10
+ def self.canonical: (json_value value) -> json_value
11
+
12
+ # @rbs (json_value value) -> String
13
+ def self.compact: (json_value value) -> String
14
+
15
+ # @rbs (json_value value) -> String
16
+ def self.dump: (json_value value) -> String
17
+
18
+ # @rbs (json_value value) -> String
19
+ def self.digest: (json_value value) -> String
20
+
21
+ # @rbs (json_value value) -> json_value
22
+ def self.deep_freeze: (json_value value) -> json_value
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,52 @@
1
+ # Generated from lib/ibex/table_artifact/validator/metadata.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ class MetadataValidator
6
+ include ValidationSupport
7
+
8
+ # @rbs (Hash[String, ValidationSupport::json_value] payload, symbols: Array[Hash[String, ValidationSupport::json_value]],
9
+ # productions: Array[Hash[String, ValidationSupport::json_value]]) -> void
10
+ def initialize: (Hash[String, ValidationSupport::json_value] payload, symbols: Array[Hash[String, ValidationSupport::json_value]], productions: Array[Hash[String, ValidationSupport::json_value]]) -> void
11
+
12
+ # @rbs () -> void
13
+ def validate!: () -> void
14
+
15
+ private
16
+
17
+ # @rbs (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
18
+ def ids_for_kind: (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
19
+
20
+ # @rbs (ValidationSupport::json_value data) -> void
21
+ def validate_semantic_actions: (ValidationSupport::json_value data) -> void
22
+
23
+ # @rbs (ValidationSupport::json_value data) -> void
24
+ def validate_recovery: (ValidationSupport::json_value data) -> void
25
+
26
+ # @rbs (ValidationSupport::json_value data) -> void
27
+ def validate_cst: (ValidationSupport::json_value data) -> void
28
+
29
+ # @rbs (ValidationSupport::json_value data, String path) -> Integer
30
+ def validate_cst_kinds: (ValidationSupport::json_value data, String path) -> Integer
31
+
32
+ # @rbs (ValidationSupport::json_value data, String path, Integer limit) -> void
33
+ def validate_range: (ValidationSupport::json_value data, String path, Integer limit) -> void
34
+
35
+ # @rbs (ValidationSupport::json_value data, String path, Array[String] names) -> void
36
+ def validate_named_kinds: (ValidationSupport::json_value data, String path, Array[String] names) -> void
37
+
38
+ # @rbs (ValidationSupport::json_value data, String path, Integer kind_count) -> void
39
+ def validate_named_nonterminals: (ValidationSupport::json_value data, String path, Integer kind_count) -> void
40
+
41
+ # @rbs (ValidationSupport::json_value data, String path, Integer kind_count) -> void
42
+ def validate_cst_slots: (ValidationSupport::json_value data, String path, Integer kind_count) -> void
43
+
44
+ # @rbs (ValidationSupport::json_value data, String path,
45
+ # Hash[String, ValidationSupport::json_value] production) -> void
46
+ def validate_fields: (ValidationSupport::json_value data, String path, Hash[String, ValidationSupport::json_value] production) -> void
47
+
48
+ # @rbs (ValidationSupport::json_value data, String path, ?sorted: bool) -> Array[Integer]
49
+ def integer_ids: (ValidationSupport::json_value data, String path, ?sorted: bool) -> Array[Integer]
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,46 @@
1
+ # Generated from lib/ibex/table_artifact/validator/support.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ module ValidationSupport
6
+ type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
7
+
8
+ DIGEST: Regexp
9
+
10
+ private
11
+
12
+ # @rbs (json_value value, String path, Array[String] keys) -> Hash[String, json_value]
13
+ def record: (json_value value, String path, Array[String] keys) -> Hash[String, json_value]
14
+
15
+ # @rbs (json_value value, String path) -> Array[json_value]
16
+ def array: (json_value value, String path) -> Array[json_value]
17
+
18
+ # @rbs (json_value value, String path, ?allow_empty: bool) -> String
19
+ def string: (json_value value, String path, ?allow_empty: bool) -> String
20
+
21
+ # @rbs (json_value value, String path, ?minimum: Integer?) -> Integer
22
+ def integer: (json_value value, String path, ?minimum: Integer?) -> Integer
23
+
24
+ # @rbs (json_value value, String path) -> bool
25
+ def boolean: (json_value value, String path) -> bool
26
+
27
+ # @rbs [T] (T value, String path, Array[T] values) -> T
28
+ def enum: [T] (T value, String path, Array[T] values) -> T
29
+
30
+ # @rbs (json_value value, String path) -> String
31
+ def digest: (json_value value, String path) -> String
32
+
33
+ # @rbs (json_value value, String path) -> String?
34
+ def nullable_string: (json_value value, String path) -> String?
35
+
36
+ # @rbs (json_value value, String path, ?minimum: Integer?) -> Integer?
37
+ def nullable_integer: (json_value value, String path, ?minimum: Integer?) -> Integer?
38
+
39
+ # @rbs (Array[json_value] values, String path) -> void
40
+ def sorted_unique!: (Array[json_value] values, String path) -> void
41
+
42
+ # @rbs (String path, String message) -> bot
43
+ def invalid: (String path, String message) -> bot
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,63 @@
1
+ # Generated from lib/ibex/table_artifact/validator/tables.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ class TableValidator
6
+ include ValidationSupport
7
+
8
+ private def integer_array: (ValidationSupport::json_value value, String path, allow_nil: false, minimum: Integer?) -> Array[Integer]
9
+ | (ValidationSupport::json_value value, String path, allow_nil: true, minimum: Integer?) -> Array[Integer?]
10
+
11
+ # @rbs (Hash[String, ValidationSupport::json_value] data, state_count: Integer, production_count: Integer,
12
+ # terminal_ids: Set[Integer], nonterminal_ids: Set[Integer], representation: String) -> void
13
+ def initialize: (Hash[String, ValidationSupport::json_value] data, state_count: Integer, production_count: Integer, terminal_ids: Set[Integer], nonterminal_ids: Set[Integer], representation: String) -> void
14
+
15
+ # @rbs () -> void
16
+ def validate!: () -> void
17
+
18
+ private
19
+
20
+ # @rbs (ValidationSupport::json_value table) -> void
21
+ def validate_actions: (ValidationSupport::json_value table) -> void
22
+
23
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
24
+ def validate_sparse_actions: (Hash[String, ValidationSupport::json_value] table) -> void
25
+
26
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
27
+ def validate_compact_actions: (Hash[String, ValidationSupport::json_value] table) -> void
28
+
29
+ # @rbs (ValidationSupport::json_value table) -> void
30
+ def validate_gotos: (ValidationSupport::json_value table) -> void
31
+
32
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
33
+ def validate_sparse_gotos: (Hash[String, ValidationSupport::json_value] table) -> void
34
+
35
+ # @rbs (Hash[String, ValidationSupport::json_value] table) -> void
36
+ def validate_compact_gotos: (Hash[String, ValidationSupport::json_value] table) -> void
37
+
38
+ # @rbs (Hash[String, ValidationSupport::json_value] table, String path) -> void
39
+ def validate_row_count: (Hash[String, ValidationSupport::json_value] table, String path) -> void
40
+
41
+ # @rbs (Hash[String, ValidationSupport::json_value] table, value_key: String, path: String)
42
+ # { (Integer, ValidationSupport::json_value, String) -> void } -> Array[Hash[Integer, ValidationSupport::json_value]]
43
+ def validate_displacement: (Hash[String, ValidationSupport::json_value] table, value_key: String, path: String) { (Integer, ValidationSupport::json_value, String) -> void } -> Array[Hash[Integer, ValidationSupport::json_value]]
44
+
45
+ # @rbs (Hash[String, ValidationSupport::json_value] table,
46
+ # Array[Hash[Integer, ValidationSupport::json_value]] rows, value_key: String,
47
+ # width_key: String, width: Integer?, dense: bool, path: String) -> void
48
+ def validate_canonical_displacement: (Hash[String, ValidationSupport::json_value] table, Array[Hash[Integer, ValidationSupport::json_value]] rows, value_key: String, width_key: String, width: Integer?, dense: bool, path: String) -> void
49
+
50
+ # @rbs (ValidationSupport::json_value defaults) -> void
51
+ def validate_defaults: (ValidationSupport::json_value defaults) -> void
52
+
53
+ # @rbs (ValidationSupport::json_value code, Integer token_id, String path) -> void
54
+ def validate_token_action: (ValidationSupport::json_value code, Integer token_id, String path) -> void
55
+
56
+ # @rbs (ValidationSupport::json_value code, String path) -> void
57
+ def validate_action_code: (ValidationSupport::json_value code, String path) -> void
58
+
59
+ # @rbs (ValidationSupport::json_value state, String path) -> void
60
+ def validate_state: (ValidationSupport::json_value state, String path) -> void
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,66 @@
1
+ # Generated from lib/ibex/table_artifact/validator.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableArtifact
5
+ # Closed structural and referential validation for untrusted sidecars.
6
+ class Validator
7
+ include ValidationSupport
8
+
9
+ ROOT_KEYS: Array[String]
10
+
11
+ PAYLOAD_KEYS: Array[String]
12
+
13
+ # @rbs (Hash[String, ValidationSupport::json_value] data) -> true
14
+ def self.validate!: (Hash[String, ValidationSupport::json_value] data) -> true
15
+
16
+ # @rbs (Hash[String, ValidationSupport::json_value] data) -> void
17
+ def initialize: (Hash[String, ValidationSupport::json_value] data) -> void
18
+
19
+ # rubocop:disable Naming/PredicateMethod -- bang denotes fail-fast validation.
20
+ # @rbs () -> true
21
+ def validate!: () -> true
22
+
23
+ private
24
+
25
+ # @rbs () -> void
26
+ def validate_root_identity: () -> void
27
+
28
+ # @rbs (ValidationSupport::json_value data) -> String
29
+ def validate_table_format: (ValidationSupport::json_value data) -> String
30
+
31
+ # @rbs (ValidationSupport::json_value data) -> void
32
+ def validate_source: (ValidationSupport::json_value data) -> void
33
+
34
+ # @rbs (ValidationSupport::json_value data) -> Array[Hash[String, ValidationSupport::json_value]]
35
+ def validate_symbols: (ValidationSupport::json_value data) -> Array[Hash[String, ValidationSupport::json_value]]
36
+
37
+ # @rbs (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> void
38
+ def validate_tokens: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> void
39
+
40
+ # @rbs (ValidationSupport::json_value data,
41
+ # Array[Hash[String, ValidationSupport::json_value]] symbols, Integer state_count) -> void
42
+ def validate_entries: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols, Integer state_count) -> void
43
+
44
+ # @rbs (ValidationSupport::json_value data,
45
+ # Array[Hash[String, ValidationSupport::json_value]] symbols) -> Array[Hash[String, ValidationSupport::json_value]]
46
+ def validate_productions: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> Array[Hash[String, ValidationSupport::json_value]]
47
+
48
+ # @rbs (ValidationSupport::json_value data, Hash[String, ValidationSupport::json_value] payload) -> void
49
+ def validate_cost: (ValidationSupport::json_value data, Hash[String, ValidationSupport::json_value] payload) -> void
50
+
51
+ # @rbs (Hash[String, ValidationSupport::json_value] payload) -> [String, String]
52
+ def expected_costs: (Hash[String, ValidationSupport::json_value] payload) -> [ String, String ]
53
+
54
+ # @rbs (Hash[String, ValidationSupport::json_value] table, String values_key) -> Integer
55
+ def occupied: (Hash[String, ValidationSupport::json_value] table, String values_key) -> Integer
56
+
57
+ # @rbs (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
58
+ def symbol_ids: (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
59
+
60
+ # @rbs (Hash[String, ValidationSupport::json_value] identity,
61
+ # Hash[String, ValidationSupport::json_value] payload, String identity_name,
62
+ # String payload_name) -> void
63
+ def validate_named_digest: (Hash[String, ValidationSupport::json_value] identity, Hash[String, ValidationSupport::json_value] payload, String identity_name, String payload_name) -> void
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,32 @@
1
+ # Generated from lib/ibex/table_artifact.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Experimental data-only authority for executable parser tables.
5
+ module TableArtifact
6
+ interface _Reader
7
+ def read: (Integer length) -> String?
8
+ end
9
+
10
+ ARTIFACT_TYPE: String
11
+
12
+ SCHEMA_VERSION: Integer
13
+
14
+ DEFAULT_MAX_BYTES: Integer
15
+
16
+ class ValidationError < Ibex::Error
17
+ end
18
+
19
+ # @rbs (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
20
+ # ?omit_action_call: bool?) -> Document
21
+ def self.build: (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?) -> Document
22
+
23
+ # @rbs (String | _Reader source, ?max_bytes: Integer) -> Document
24
+ def self.load: (String | _Reader source, ?max_bytes: Integer) -> Document
25
+
26
+ # @rbs (untyped source, Integer max_bytes) -> String
27
+ private def self.read_bounded: (untyped source, Integer max_bytes) -> String
28
+
29
+ # @rbs (_Reader source, Integer max_bytes) -> String
30
+ private def self.read_from: (_Reader source, Integer max_bytes) -> String
31
+ end
32
+ end
@@ -0,0 +1,36 @@
1
+ # Generated from lib/ibex/table_simulation/result.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module TableSimulation
5
+ # Final immutable simulation document.
6
+ class Result
7
+ type step_document = Hash[String, Step::document_value]
8
+
9
+ type document_value = String | Integer | Array[String] | Array[step_document]
10
+
11
+ IDENTIFIER: String
12
+
13
+ SCHEMA_VERSION: Integer
14
+
15
+ attr_reader grammar_digest: String
16
+
17
+ attr_reader algorithm: String
18
+
19
+ attr_reader tokens: Array[String]
20
+
21
+ attr_reader status: Symbol
22
+
23
+ attr_reader steps: Array[Step]
24
+
25
+ # @rbs (grammar_digest: String, algorithm: String, tokens: Array[String], status: Symbol,
26
+ # steps: Array[Step]) -> void
27
+ def initialize: (grammar_digest: String, algorithm: String, tokens: Array[String], status: Symbol, steps: Array[Step]) -> void
28
+
29
+ # @rbs () -> Hash[String, document_value]
30
+ def to_h: () -> Hash[String, document_value]
31
+
32
+ # @rbs (*Object?) -> String
33
+ def to_json: (*Object?) -> String
34
+ end
35
+ end
36
+ end