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,28 @@
1
+ # Generated from lib/ibex/cli/verify.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI entry point for bounded, independent Automaton IR verification.
5
+ module CLIVerify
6
+ type verify_options = { paths: Array[String], strict: bool, max_states: Integer, max_items: Integer, ?grammar: String, format: String, ?help: String }
7
+
8
+ private
9
+
10
+ # @rbs (Array[String] arguments) -> Integer
11
+ def run_verify_command: (Array[String] arguments) -> Integer
12
+
13
+ # @rbs (Array[String] arguments) -> verify_options
14
+ def verify_options: (Array[String] arguments) -> verify_options
15
+
16
+ # @rbs (String path) -> IR::Automaton
17
+ def load_verify_automaton: (String path) -> IR::Automaton
18
+
19
+ # @rbs (IR::Automaton automaton, String path) -> void
20
+ def verify_supplied_grammar!: (IR::Automaton automaton, String path) -> void
21
+
22
+ # @rbs (Verify::Result result, String format) -> void
23
+ def write_verify_result: (Verify::Result result, String format) -> void
24
+
25
+ # @rbs (Integer value, String name) -> Integer
26
+ def positive_verify_budget: (Integer value, String name) -> Integer
27
+ end
28
+ end
@@ -0,0 +1,43 @@
1
+ # Generated from lib/ibex/cli/watch.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Long-running CLI generation over stable source snapshots.
5
+ module CLIWatch
6
+ private def process_grammar: (String) -> Integer
7
+
8
+ private def generation_artifacts: () -> ArtifactSet
9
+
10
+ private def report_status: (String) -> void
11
+
12
+ # Rendered watch generation awaiting its stability-guarded publication.
13
+ class Build
14
+ attr_reader artifacts: ArtifactSet
15
+
16
+ attr_reader statuses: Array[String]
17
+
18
+ attr_reader source_paths: Array[String]
19
+
20
+ attr_reader attempted_paths: Array[String]
21
+
22
+ attr_reader source_records: Array[GenerationInput]
23
+
24
+ # rubocop:disable Layout/LineLength
25
+ # @rbs (artifacts: ArtifactSet, statuses: Array[String], source_paths: Array[String], attempted_paths: Array[String], source_records: Array[GenerationInput]) -> void
26
+ def initialize: (artifacts: ArtifactSet, statuses: Array[String], source_paths: Array[String], attempted_paths: Array[String], source_records: Array[GenerationInput]) -> void
27
+ end
28
+
29
+ private
30
+
31
+ # @rbs (String path) -> Integer
32
+ def run_watch: (String path) -> Integer
33
+
34
+ # @rbs (String path) -> Build
35
+ def prepare_watch_generation: (String path) -> Build
36
+
37
+ # @rbs (Watch::_BuildResult build, Watch::SourceSnapshot snapshot, ^() -> bool continue) -> void
38
+ def publish_watch_generation: (Watch::_BuildResult build, Watch::SourceSnapshot snapshot, ^() -> bool continue) -> void
39
+
40
+ # @rbs (String path) -> Array[String]
41
+ def watch_failure_paths: (String path) -> Array[String]
42
+ end
43
+ end
data/sig/ibex/cli.rbs CHANGED
@@ -1,62 +1,188 @@
1
1
  # Generated from lib/ibex/cli.rb with RBS::Inline
2
2
 
3
3
  module Ibex
4
+ CLI_FEATURE_ROOT: String
5
+
4
6
  interface _CLIOutput
5
- def puts: (*untyped) -> untyped
7
+ def puts: (*Object?) -> Object?
6
8
 
7
- def write: (String) -> untyped
9
+ def write: (String) -> Object?
8
10
  end
9
11
 
10
- type cli_options = { emit: String, mode: Symbol, table: Symbol, line_convert: bool, ?line_convert_all: bool, counterexample_max_tokens: Integer, counterexample_max_configurations: Integer, ?from: String, ?algorithm: Symbol, ?warnings: Array[Symbol], ?output: String, ?embedded: bool, ?debug: bool, ?verbose: bool, ?rbs: String | true, ?dot: String, ?html: String, ?log_file: String, ?executable: String, ?frozen: bool, ?omit_actions: bool, ?superclass: String, ?check_only: bool, ?status: bool, ?profile: bool, ?debug_flags: String, ?version: bool, ?runtime_version: bool, ?copyright: bool, ?help: bool }
12
+ interface _CLIInput
13
+ def read: () -> String
14
+
15
+ def gets: () -> String?
16
+ end
17
+
18
+ type cli_options = { emit: String, mode: Symbol, table: Symbol, ?cst_trivia: Symbol, line_convert: bool, ?line_convert_all: bool, counterexample_max_tokens: Integer, counterexample_max_configurations: Integer, ?from: String, ?algorithm: Symbol, ?suggest_ielr: bool, ?entry_isolation: bool, ?ielr_strategy: Symbol, ?ielr_report: bool, ?remove_unreachable: bool, ?warnings: Array[Symbol], ?output: String, ?embedded: bool, ?debug: bool, ?verbose: bool, ?rbs: String | true, ?action_source: String | true, ?manifest: String | true, ?watch: bool, ?dot: String, ?mermaid: String, ?html: String, ?railroad: String, ?messages: String, ?messages_update: String | true, ?messages_algorithm_explicit: bool, ?sample_count: Integer, ?sample_seed: Integer, ?sample_max_tokens: Integer, ?sample_max_depth: Integer, ?sample_max_expansions: Integer, ?log_file: String, ?executable: String, ?frozen: bool, ?omit_actions: bool, ?superclass: String, ?verify_output: bool, ?check_only: bool, ?status: bool, ?profile: bool, ?debug_flags: String, ?version: bool, ?runtime_version: bool, ?copyright: bool, ?help: bool, ?explain_state: Integer, ?explain_token: String, ?explain_format: String, ?check_ambiguity: bool, ?check_format: String, ?fuzz_seed: Integer, ?fuzz_count: Integer, ?fuzz_max_tokens: Integer, ?fuzz_max_depth: Integer, ?fuzz_max_expansions: Integer, ?fuzz_max_actions: Integer, ?fuzz_max_stack: Integer, ?fuzz_coverage_guided: bool, ?fuzz_path_length: Integer, ?fuzz_against: String, ?fuzz_against_runtime: String, ?fuzz_against_timeout: Integer, ?fuzz_against_max_output: Integer, ?fuzz_max_reduction_trials: Integer, ?fuzz_regression_dir: String, ?fuzz_save_regression: bool, ?fuzz_format: String, ?reduce_command: String, ?reduce_mode: Symbol, ?reduce_max_trials: Integer, ?reduce_timeout: Integer, ?reduce_max_output_bytes: Integer, ?reduce_max_input_bytes: Integer, ?reduce_format: String }
11
19
 
12
20
  # Command-line pipeline coordinator.
13
21
  # rubocop:disable Metrics/ClassLength -- inline type contracts add lines without adding runtime responsibilities.
14
22
  class CLI
23
+ SUBCOMMAND_HANDLERS: Hash[String, [ Symbol, Symbol ]]
24
+
15
25
  include CLICounterexampleOptions
16
26
 
27
+ include CLIGenerationErrorMessages
28
+
29
+ include CLIGenerationArtifacts
30
+
17
31
  include CLIOutputs
18
32
 
19
- @options: cli_options
33
+ @stdout: _CLIOutput
20
34
 
21
35
  @stderr: _CLIOutput
22
36
 
23
- @stdout: _CLIOutput
37
+ @options: cli_options
38
+
39
+ @language: String
40
+
41
+ @configuration_explicit_options: Hash[Symbol, bool]
24
42
 
25
- # @rbs (Array[String] arguments, ?stdout: _CLIOutput, ?stderr: _CLIOutput) -> Integer
26
- def self.start: (Array[String] arguments, ?stdout: _CLIOutput, ?stderr: _CLIOutput) -> Integer
43
+ @generation_grammar: IR::Grammar?
27
44
 
28
- # @rbs (stdout: _CLIOutput, stderr: _CLIOutput) -> void
29
- def initialize: (stdout: _CLIOutput, stderr: _CLIOutput) -> void
45
+ @generation_automaton: IR::Automaton?
46
+
47
+ # rubocop:disable Layout/LineLength
48
+ # @rbs (Array[String] arguments, ?stdin: _CLIInput, ?stdout: _CLIOutput, ?stderr: _CLIOutput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> Integer
49
+ def self.start: (Array[String] arguments, ?stdin: _CLIInput, ?stdout: _CLIOutput, ?stderr: _CLIOutput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> Integer
50
+
51
+ # @rbs (?stdin: _CLIInput, stdout: _CLIOutput, stderr: _CLIOutput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> void
52
+ def initialize: (stdout: _CLIOutput, stderr: _CLIOutput, ?stdin: _CLIInput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> void
30
53
 
31
54
  # @rbs (Array[String] arguments) -> Integer
32
55
  def run: (Array[String] arguments) -> Integer
33
56
 
34
57
  private
35
58
 
59
+ # @rbs (Symbol name) -> void
60
+ def mark_configuration_option: (Symbol name) -> void
61
+
62
+ # OptionParser accepts a heterogeneous set of operation and configuration
63
+ # values. The CLIAdapter is the validation boundary for this dynamic map.
64
+ # @rbs (Symbol name, untyped value) -> void
65
+ def set_configuration_option: (Symbol name, untyped value) -> void
66
+
67
+ # @rbs (String value) -> void
68
+ def select_configuration_mode: (String value) -> void
69
+
70
+ # @rbs () -> Configuration::Resolver
71
+ def effective_configuration: () -> Configuration::Resolver
72
+
73
+ # Resolve a command-local legacy option hash without promoting it into the
74
+ # reusable CLI instance's generation settings.
75
+ # @rbs (Hash[Symbol, untyped] options, explicit_keys: Array[Symbol]) -> Configuration::Resolver
76
+ def resolve_configuration_options: (Hash[Symbol, untyped] options, explicit_keys: Array[Symbol]) -> Configuration::Resolver
77
+
78
+ # @rbs (Hash[Symbol, untyped] options, String name) -> untyped
79
+ def local_configuration_value: (Hash[Symbol, untyped] options, String name) -> untyped
80
+
81
+ # @rbs (Hash[Symbol, untyped] options, Symbol name, untyped value) -> void
82
+ def set_local_configuration_option: (Hash[Symbol, untyped] options, Symbol name, untyped value) -> void
83
+
84
+ # Configuration values have already been validated by Configuration::Resolver;
85
+ # callers narrow the value according to the option they are consuming.
86
+ # @rbs (String name) -> untyped
87
+ def configuration_value: (String name) -> untyped
88
+
89
+ # @rbs (Array[String] arguments) -> Array[String]
90
+ def extract_language: (Array[String] arguments) -> Array[String]
91
+
92
+ # @rbs (Array[String] arguments) -> Integer?
93
+ def dispatch_subcommand: (Array[String] arguments) -> Integer?
94
+
95
+ # @rbs (Symbol feature) -> void
96
+ def activate_cli_feature: (Symbol feature) -> void
97
+
98
+ # @rbs (String path) -> Integer
99
+ def run_watch_feature: (String path) -> Integer
100
+
36
101
  # @rbs () -> OptionParser
37
102
  def option_parser: () -> OptionParser
38
103
 
39
104
  # @rbs (OptionParser options) -> void
105
+ def add_subcommand_help: (OptionParser options) -> void
106
+
107
+ # @rbs (OptionParser options) -> void
108
+ # rubocop:disable Metrics/MethodLength -- pipeline flags share one parser boundary.
40
109
  def add_pipeline_options: (OptionParser options) -> void
41
110
 
42
111
  # @rbs (OptionParser options) -> void
43
112
  def add_output_options: (OptionParser options) -> void
44
113
 
114
+ # @rbs (OptionParser options) -> void
115
+ def add_signature_output_options: (OptionParser options) -> void
116
+
45
117
  # @rbs (OptionParser options) -> void
46
118
  def add_compatibility_options: (OptionParser options) -> void
47
119
 
48
120
  # @rbs (OptionParser options) -> void
49
121
  def add_information_options: (OptionParser options) -> void
50
122
 
123
+ @analysis_configuration: Configuration::Resolver?
124
+
125
+ # @rbs (IR::Grammar grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
126
+ def activate_analysis_grammar: (IR::Grammar grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
127
+
128
+ # @rbs (IR::Grammar grammar, Hash[Symbol, untyped] options, Array[Symbol] explicit_keys) ->
129
+ # [IR::Grammar, Symbol, IR::Automaton]
130
+ def construct_analysis_automaton: (IR::Grammar grammar, Hash[Symbol, untyped] options, Array[Symbol] explicit_keys) -> [ IR::Grammar, Symbol, IR::Automaton ]
131
+
51
132
  # @rbs (OptionParser parser) -> Integer?
52
133
  def informational_result: (OptionParser parser) -> Integer?
53
134
 
54
135
  # @rbs (Array[String] remaining) -> String
55
136
  def input_path: (Array[String] remaining) -> String
56
137
 
138
+ # @rbs () -> void
139
+ def validate_generation_options: () -> void
140
+
141
+ # @rbs () -> void
142
+ def validate_automaton_construction_options: () -> void
143
+
144
+ # @rbs () -> void
145
+ def validate_manifest_generation_options: () -> void
146
+
147
+ # @rbs () -> void
148
+ def validate_action_source_generation_options: () -> void
149
+
150
+ # @rbs () -> void
151
+ def validate_verification_generation_options: () -> void
152
+
153
+ # @rbs () -> void
154
+ def validate_watch_information_options: () -> void
155
+
156
+ # @rbs () -> void
157
+ def validate_watch_generation_options: () -> void
158
+
159
+ # @rbs (String input_path, ?source_paths: Array[String]) -> void
160
+ def validate_generation_paths!: (String input_path, ?source_paths: Array[String]) -> void
161
+
162
+ # @rbs (String left, String right) -> bool
163
+ def same_file_target?: (String left, String right) -> bool
164
+
165
+ # @rbs (String path) -> [String, String]
166
+ def portable_target_key: (String path) -> [ String, String ]
167
+
168
+ # @rbs (String path, ?Hash[String, bool] seen) -> String
169
+ def canonical_target_path: (String path, ?Hash[String, bool] seen) -> String
170
+
171
+ # @rbs (String input_path) -> Hash[Symbol, String?]
172
+ def generation_paths: (String input_path) -> Hash[Symbol, String?]
173
+
57
174
  # @rbs (String path) -> Integer
58
175
  def process_grammar: (String path) -> Integer
59
176
 
177
+ # @rbs (String path) -> Frontend::Resolution
178
+ def resolve_grammar_path: (String path) -> Frontend::Resolution
179
+
180
+ # @rbs (String path) -> IR::Grammar
181
+ def normalize_grammar_path: (String path) -> IR::Grammar
182
+
183
+ # @rbs (String source) -> bool
184
+ def bison_source?: (String source) -> bool
185
+
60
186
  # @rbs (String path) -> Integer
61
187
  def process_ir: (String path) -> Integer
62
188
 
@@ -66,6 +192,15 @@ module Ibex
66
192
  # @rbs (IR::Automaton automaton, String path) -> Integer
67
193
  def dispatch_automaton: (IR::Automaton automaton, String path) -> Integer
68
194
 
195
+ # @rbs (IR::Grammar grammar) -> void
196
+ def activate_generation_grammar: (IR::Grammar grammar) -> void
197
+
198
+ # @rbs (IR::Grammar grammar, Configuration::Resolver configuration) -> IR::Grammar
199
+ def noncanonical_analysis_grammar: (IR::Grammar grammar, Configuration::Resolver configuration) -> IR::Grammar
200
+
201
+ # @rbs (Configuration::Resolver configuration) -> void
202
+ def report_noncanonical_analysis: (Configuration::Resolver configuration) -> void
203
+
69
204
  # @rbs () -> Integer
70
205
  def print_version: () -> Integer
71
206
 
@@ -81,6 +216,12 @@ module Ibex
81
216
  # @rbs (IR::Grammar grammar) -> Integer
82
217
  def emit_grammar: (IR::Grammar grammar) -> Integer
83
218
 
219
+ # @rbs (IR::Grammar grammar) -> Integer
220
+ def emit_lexer: (IR::Grammar grammar) -> Integer
221
+
222
+ # @rbs (IR::Grammar grammar) -> Integer
223
+ def emit_sets: (IR::Grammar grammar) -> Integer
224
+
84
225
  # @rbs (IR::Grammar grammar, String input_path) -> Integer
85
226
  def emit_automaton: (IR::Grammar grammar, String input_path) -> Integer
86
227
 
@@ -90,19 +231,51 @@ module Ibex
90
231
  # @rbs (IR::Automaton automaton, String input_path) -> Integer
91
232
  def generate_ruby: (IR::Automaton automaton, String input_path) -> Integer
92
233
 
234
+ # @rbs (IR::Automaton automaton, String output_path, String source, String? action_source) -> Integer
235
+ def verify_generated_outputs: (IR::Automaton automaton, String output_path, String source, String? action_source) -> Integer
236
+
237
+ # @rbs (String path, String source, String label) -> void
238
+ def verify_file: (String path, String source, String label) -> void
239
+
93
240
  # @rbs (IR::Automaton automaton, String output_path) -> void
94
241
  def write_rbs: (IR::Automaton automaton, String output_path) -> void
95
242
 
243
+ # @rbs (String output_path) -> String
244
+ def rbs_output_path: (String output_path) -> String
245
+
246
+ # @rbs (IR::Automaton automaton) -> String
247
+ def rbs_source: (IR::Automaton automaton) -> String
248
+
249
+ # @rbs (String output_path, String source) -> void
250
+ def write_action_source: (String output_path, String source) -> void
251
+
252
+ # @rbs (String output_path) -> String
253
+ def action_source_output_path: (String output_path) -> String
254
+
255
+ # @rbs (IR::Automaton automaton) -> String
256
+ def action_source_source: (IR::Automaton automaton) -> String
257
+
96
258
  # @rbs (IR::Automaton automaton, String input_path) -> Integer
97
259
  def emit_loaded_automaton: (IR::Automaton automaton, String input_path) -> Integer
98
260
 
99
261
  # @rbs (IR::Grammar grammar, String input_path) -> IR::Automaton
100
262
  def build_automaton: (IR::Grammar grammar, String input_path) -> IR::Automaton
101
263
 
264
+ # @rbs (IR::Grammar grammar, IR::Automaton automaton) -> void
265
+ def write_ielr_report: (IR::Grammar grammar, IR::Automaton automaton) -> void
266
+
102
267
  # @rbs (IR::Automaton automaton, String input_path) -> void
103
268
  def prepare_loaded_automaton: (IR::Automaton automaton, String input_path) -> void
104
269
 
105
270
  # @rbs (IR::Automaton automaton) -> void
106
271
  def write_visualizations: (IR::Automaton automaton) -> void
272
+
273
+ # @rbs (IR::Grammar grammar) -> void
274
+ def write_railroad: (IR::Grammar grammar) -> void
275
+
276
+ # @rbs (String output_path) -> String
277
+ def manifest_output_path_for: (String output_path) -> String
107
278
  end
279
+
280
+ CONFIG_SUBCOMMAND_HELP: String
108
281
  end
@@ -0,0 +1,45 @@
1
+ # Generated from lib/ibex/codegen/action_locations.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Rewrites semantic-location expressions without touching Ruby literals,
6
+ # comments, heredoc bodies, or ordinary instance/class variables.
7
+ class ActionLocations
8
+ SEMANTIC_HELPERS: Array[String]
9
+
10
+ @source: String
11
+
12
+ @maximum: Integer
13
+
14
+ @location: IR::location
15
+
16
+ # @rbs (String source, maximum: Integer, location: IR::location) -> void
17
+ def initialize: (String source, maximum: Integer, location: IR::location) -> void
18
+
19
+ # @rbs () -> String
20
+ def rewrite: () -> String
21
+
22
+ # @rbs () -> bool
23
+ def references?: () -> bool
24
+
25
+ private
26
+
27
+ # @rbs () -> String
28
+ def mutable_binary_source_copy: () -> String
29
+
30
+ # @rbs () -> Array[[Integer, String]]
31
+ def semantic_references: () -> Array[[ Integer, String ]]
32
+
33
+ # Give every Ripper implementation syntactically valid input while
34
+ # preserving byte offsets and lexical string/comment boundaries.
35
+ # @rbs () -> String
36
+ def lexable_source: () -> String
37
+
38
+ # @rbs () -> Array[Integer]
39
+ def line_offsets: () -> Array[Integer]
40
+
41
+ # @rbs (String spelling) -> String
42
+ def replacement_for: (String spelling) -> String
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,65 @@
1
+ # Generated from lib/ibex/codegen/action_method_source.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Builds semantic method source shared by runtime and static shadow output.
6
+ class ActionMethodSource
7
+ @generated_action_abi: GeneratedActionABI::Cache
8
+
9
+ @grammar: IR::Grammar
10
+
11
+ # @rbs (IR::Grammar grammar, ?generated_action_abi: GeneratedActionABI::Cache?) -> void
12
+ def initialize: (IR::Grammar grammar, ?generated_action_abi: GeneratedActionABI::Cache?) -> void
13
+
14
+ # @rbs (IR::Production production, IR::action_composition_step step, Integer index) -> String
15
+ def composed_fragment_method_source: (IR::Production production, IR::action_composition_step step, Integer index) -> String
16
+
17
+ # @rbs (IR::Production production, Integer index) -> String
18
+ def composed_fragment_name: (IR::Production production, Integer index) -> String
19
+
20
+ # @rbs (IR::Production production) -> String
21
+ def compiled_action_method_source: (IR::Production production) -> String
22
+
23
+ # @rbs (IR::Production production) -> String
24
+ def direct_action_method_source: (IR::Production production) -> String
25
+
26
+ # @rbs (Integer symbol_id, IR::value_printer printer) -> String
27
+ def value_printer_method_source: (Integer symbol_id, IR::value_printer printer) -> String
28
+
29
+ # @rbs (String source) -> bool
30
+ def column_sensitive?: (String source) -> bool
31
+
32
+ private
33
+
34
+ # @rbs (IR::Production production) -> String
35
+ def action_parameters: (IR::Production production) -> String
36
+
37
+ # @rbs (IR::Production production, Integer index) -> String
38
+ def value_expression: (IR::Production production, Integer index) -> String
39
+
40
+ # @rbs (String source, ?production: IR::Production?) -> void
41
+ def append_parameter_values: (String source, ?production: IR::Production?) -> void
42
+
43
+ # @rbs (Array[String] lines, production: IR::Production) -> void
44
+ def append_direct_parameter_values: (Array[String] lines, production: IR::Production) -> void
45
+
46
+ # @rbs (IR::action_composition_step step) -> String
47
+ def composed_semantic_code: (IR::action_composition_step step) -> String
48
+
49
+ # @rbs (String source, Array[IR::named_ref] named_refs) -> void
50
+ def append_named_values: (String source, Array[IR::named_ref] named_refs) -> void
51
+
52
+ # @rbs (String source, IR::Production production, IR::Action action) -> void
53
+ def append_action_body: (String source, IR::Production production, IR::Action action) -> void
54
+
55
+ # @rbs (Array[String] lines, IR::Production production, IR::Action? action) -> void
56
+ def append_direct_action_body: (Array[String] lines, IR::Production production, IR::Action? action) -> void
57
+
58
+ # @rbs (IR::Production production, IR::Action action) -> String
59
+ def semantic_action_code: (IR::Production production, IR::Action action) -> String
60
+
61
+ # @rbs (IR::Production production) -> String
62
+ def default_value_expression: (IR::Production production) -> String
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,50 @@
1
+ # Generated from lib/ibex/codegen/action_source.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Generates static-check-only Ruby containing semantic action methods.
6
+ class ActionSource
7
+ include RubyAST
8
+
9
+ @automaton: IR::Automaton
10
+
11
+ @grammar: IR::Grammar
12
+
13
+ @omit_action_call: bool
14
+
15
+ @method_source: ActionMethodSource
16
+
17
+ # @rbs (IR::Automaton automaton, ?omit_action_call: bool?) -> void
18
+ def initialize: (IR::Automaton automaton, ?omit_action_call: bool?) -> void
19
+
20
+ # @rbs () -> String
21
+ def generate: () -> String
22
+
23
+ private
24
+
25
+ # @rbs (Array[String] lines) -> void
26
+ def append_value_printers: (Array[String] lines) -> void
27
+
28
+ # @rbs (Array[String] lines) -> void
29
+ def append_actions: (Array[String] lines) -> void
30
+
31
+ # @rbs (Array[String] lines, IR::Production production) -> void
32
+ def append_composed_actions: (Array[String] lines, IR::Production production) -> void
33
+
34
+ # @rbs (Array[String] lines, IR::Production production) -> void
35
+ def append_action: (Array[String] lines, IR::Production production) -> void
36
+
37
+ # @rbs (Array[String] lines, IR::location location, String source) -> void
38
+ def append_method: (Array[String] lines, IR::location location, String source) -> void
39
+
40
+ # @rbs (IR::Production production) -> bool
41
+ def composed_action?: (IR::Production production) -> bool
42
+
43
+ # @rbs () -> [Array[String], String]
44
+ def class_parts: () -> [ Array[String], String ]
45
+
46
+ # @rbs () -> String
47
+ def grammar_digest_comment: () -> String
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,60 @@
1
+ # Generated from lib/ibex/codegen/ambiguity.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ type ambiguity_search = { max_tokens: Integer, max_configurations: Integer }
6
+
7
+ type ambiguity_summary = { conflicts: Integer, ambiguous: Integer, not_found: Integer, configuration_budget_exhausted: Integer }
8
+
9
+ type ambiguity_check = { state: Integer, type: String, token: String, result: String, sentence: Array[String], lookahead_index: Integer?, interpretations: Array[IR::interpretation], explored_configurations: Integer, configuration_budget_exhausted: bool }
10
+
11
+ type ambiguity_document = { ibex_check: String, schema_version: Integer, algorithm: String, search: ambiguity_search, status: String, summary: ambiguity_summary, conflicts: Array[ambiguity_check] }
12
+
13
+ # Renders a bounded ambiguity search over every parser conflict.
14
+ class Ambiguity
15
+ SCHEMA_VERSION: Integer
16
+
17
+ @checks: Array[ambiguity_check]
18
+
19
+ @max_configurations: Integer
20
+
21
+ @max_tokens: Integer
22
+
23
+ @grammar: IR::Grammar
24
+
25
+ @automaton: IR::Automaton
26
+
27
+ # @rbs (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> void
28
+ def initialize: (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> void
29
+
30
+ # @rbs () -> Integer
31
+ def exit_status: () -> Integer
32
+
33
+ # @rbs () -> ambiguity_document
34
+ def to_h: () -> ambiguity_document
35
+
36
+ # @rbs () -> String
37
+ def render_text: () -> String
38
+
39
+ private
40
+
41
+ # @rbs () -> String
42
+ def status: () -> String
43
+
44
+ # @rbs () -> ambiguity_summary
45
+ def summary: () -> ambiguity_summary
46
+
47
+ # @rbs () -> Array[ambiguity_check]
48
+ def check_conflicts: () -> Array[ambiguity_check]
49
+
50
+ # @rbs (IR::AutomatonState state, IR::conflict conflict) -> ambiguity_check
51
+ def check_conflict: (IR::AutomatonState state, IR::conflict conflict) -> ambiguity_check
52
+
53
+ # @rbs (Array[Integer] ids) -> Array[String]
54
+ def symbol_names: (Array[Integer] ids) -> Array[String]
55
+
56
+ # @rbs (Array[String] lines, ambiguity_check check, Integer number) -> void
57
+ def append_check: (Array[String] lines, ambiguity_check check, Integer number) -> void
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,59 @@
1
+ # Generated from lib/ibex/codegen/cst_metadata.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Codegen
5
+ # Builds the deterministic kind space embedded in CST-aware parser tables.
6
+ class CSTMetadata
7
+ type kind_map = Hash[String, Integer]
8
+
9
+ type kinds = { names: Array[String], terminal_range: Array[Integer], nonterminal_range: Array[Integer], named: kind_map, named_nonterminals: Hash[Integer, Integer], trivia: kind_map, synthetic: kind_map }
10
+
11
+ type field_slot = Integer | { index: Integer, extraction: Symbol }
12
+
13
+ type slot = { node_kind: Integer, node_name: String, fields: Hash[String, field_slot] }
14
+
15
+ type metadata = { version: Integer, trivia_policy: Symbol, kinds: kinds, slots: Hash[Integer, slot] }
16
+
17
+ TRIVIA_KINDS: Array[String]
18
+
19
+ SYNTHETIC_KINDS: Array[String]
20
+
21
+ @grammar: IR::Grammar
22
+
23
+ @trivia_policy: Symbol
24
+
25
+ # @rbs (IR::Grammar grammar, ?trivia_policy: Symbol | String) -> void
26
+ def initialize: (IR::Grammar grammar, ?trivia_policy: Symbol | String) -> void
27
+
28
+ # Return table-ready CST metadata with stable insertion order.
29
+ # @rbs () -> metadata
30
+ def build: () -> metadata
31
+
32
+ private
33
+
34
+ # @rbs (Symbol | String policy) -> Symbol
35
+ def normalize_trivia_policy: (Symbol | String policy) -> Symbol
36
+
37
+ # @rbs (Array[String] names) -> Hash[String, Integer]
38
+ def append_named_kinds: (Array[String] names) -> Hash[String, Integer]
39
+
40
+ # @rbs (Array[String] names, Array[String] additions) -> Hash[String, Integer]
41
+ def append_kinds: (Array[String] names, Array[String] additions) -> Hash[String, Integer]
42
+
43
+ # @rbs (Array[Integer] ids) -> Array[Integer]
44
+ def half_open_range: (Array[Integer] ids) -> Array[Integer]
45
+
46
+ # @rbs (Hash[String, Integer] named) -> Hash[Integer, Integer]
47
+ def named_nonterminals: (Hash[String, Integer] named) -> Hash[Integer, Integer]
48
+
49
+ # @rbs (Hash[String, Integer] named) -> Hash[Integer, slot]
50
+ def slot_metadata: (Hash[String, Integer] named) -> Hash[Integer, slot]
51
+
52
+ # @rbs (Integer index, Integer symbol_id) -> field_slot
53
+ def field_slot: (Integer index, Integer symbol_id) -> field_slot
54
+
55
+ # @rbs (Integer symbol_id) -> Symbol?
56
+ def repetition_extraction: (Integer symbol_id) -> Symbol?
57
+ end
58
+ end
59
+ end