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,143 @@
1
+ # Generated from lib/ibex/frontend/formatter.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Frontend
5
+ # Deterministically formats grammar trivia and rejects any semantic change.
6
+ # rubocop:disable Metrics/ClassLength -- token layout policy stays together so adjacency rules remain auditable.
7
+ class Formatter
8
+ DECLARATION_STARTS: Array[Symbol]
9
+
10
+ ASSOCIATIONS: Array[Symbol]
11
+
12
+ CALLABLES: Array[Symbol]
13
+
14
+ SUFFIXES: Array[String]
15
+
16
+ CLOSERS: Array[String]
17
+
18
+ ADJACENT_AFTER: Array[String]
19
+
20
+ type formatter_element = { segment: Segment, external: external_token?, role: Symbol?, gap: Array[Segment] }
21
+
22
+ type formatter_state = { section: :declarations | :rules, precedence_closer: external_token?, conversion: bool, conversion_name: bool, parser: bool, parser_key: bool, depth: Integer, rule_colon: bool }
23
+
24
+ # @rbs (String source, ?file: String, ?mode: Symbol) -> String
25
+ def self.format: (String source, ?file: String, ?mode: Symbol) -> String
26
+
27
+ # @rbs (?mode: Symbol) -> void
28
+ def initialize: (?mode: Symbol) -> void
29
+
30
+ # @rbs (String source, ?file: String) -> String
31
+ def format: (String source, ?file: String) -> String
32
+
33
+ private
34
+
35
+ # @rbs (SourceDocument document) -> String
36
+ def render: (SourceDocument document) -> String
37
+
38
+ # @rbs (SourceDocument document) -> Array[formatter_element]
39
+ def build_elements: (SourceDocument document) -> Array[formatter_element]
40
+
41
+ # @rbs (Array[Token] tokens) -> Hash[Integer, external_token]
42
+ def external_types: (Array[Token] tokens) -> Hash[Integer, external_token]
43
+
44
+ # @rbs (Array[formatter_element] elements) -> void
45
+ def annotate_roles: (Array[formatter_element] elements) -> void
46
+
47
+ # @rbs (Array[formatter_element] elements) -> void
48
+ def annotate_comment_indentation: (Array[formatter_element] elements) -> void
49
+
50
+ # @rbs (external_token external, formatter_state state) -> Symbol?
51
+ def token_role: (external_token external, formatter_state state) -> Symbol?
52
+
53
+ # @rbs (external_token external, formatter_state state) -> Symbol?
54
+ def document_token_role: (external_token external, formatter_state state) -> Symbol?
55
+
56
+ # @rbs (external_token external, formatter_state state) -> Symbol?
57
+ def nested_declaration_role: (external_token external, formatter_state state) -> Symbol?
58
+
59
+ # @rbs (formatter_state state) -> Symbol?
60
+ def section_end_role: (formatter_state state) -> Symbol?
61
+
62
+ # @rbs (external_token external, formatter_state state) -> Symbol?
63
+ def rule_token_role: (external_token external, formatter_state state) -> Symbol?
64
+
65
+ # @rbs (external_token external, formatter_state state) -> Symbol
66
+ def precedence_role: (external_token external, formatter_state state) -> Symbol
67
+
68
+ # @rbs (external_token external, Symbol? role, formatter_state state) -> void
69
+ def advance_role_state: (external_token external, Symbol? role, formatter_state state) -> void
70
+
71
+ # @rbs (external_token external, Symbol? role, formatter_state state) -> void
72
+ def advance_parser_state: (external_token external, Symbol? role, formatter_state state) -> void
73
+
74
+ # @rbs (external_token external, Symbol? role, formatter_state state) -> void
75
+ def advance_precedence_state: (external_token external, Symbol? role, formatter_state state) -> void
76
+
77
+ # @rbs (external_token external, Symbol? role, formatter_state state) -> void
78
+ def advance_conversion_state: (external_token external, Symbol? role, formatter_state state) -> void
79
+
80
+ # @rbs (external_token external, Symbol? role, formatter_state state) -> void
81
+ def advance_rule_state: (external_token external, Symbol? role, formatter_state state) -> void
82
+
83
+ # @rbs (formatter_element? previous, formatter_element current) -> String
84
+ def separator: (formatter_element? previous, formatter_element current) -> String
85
+
86
+ # @rbs (formatter_element current, Array[Segment] gap) -> String
87
+ def leading_separator: (formatter_element current, Array[Segment] gap) -> String
88
+
89
+ # @rbs (formatter_element previous, Array[Segment] gap) -> String
90
+ def trailing_separator: (formatter_element previous, Array[Segment] gap) -> String
91
+
92
+ # @rbs (Segment previous, Segment current) -> bool
93
+ def direct_opaque_pair?: (Segment previous, Segment current) -> bool
94
+
95
+ # @rbs (Segment segment) -> bool
96
+ def comment?: (Segment segment) -> bool
97
+
98
+ # @rbs (formatter_element previous, formatter_element current, Array[Segment] gap) -> String
99
+ def comment_separator: (formatter_element previous, formatter_element current, Array[Segment] gap) -> String
100
+
101
+ # @rbs (formatter_element previous, formatter_element current) -> Symbol
102
+ def separator_kind: (formatter_element previous, formatter_element current) -> Symbol
103
+
104
+ # @rbs (external_token? previous_external, external_token? current_external,
105
+ # Symbol? previous_role, Symbol? current_role) -> bool
106
+ def adjacent_tokens?: (external_token? previous_external, external_token? current_external, Symbol? previous_role, Symbol? current_role) -> bool
107
+
108
+ # @rbs (Symbol? previous_role, Symbol? current_role, formatter_element previous,
109
+ # formatter_element current) -> bool
110
+ def line_boundary?: (Symbol? previous_role, Symbol? current_role, formatter_element previous, formatter_element current) -> bool
111
+
112
+ # @rbs (formatter_element element) -> Integer
113
+ def indentation: (formatter_element element) -> Integer
114
+
115
+ # @rbs (Symbol kind, Array[Segment] gap, Integer indentation) -> String
116
+ def render_separator: (Symbol kind, Array[Segment] gap, Integer indentation) -> String
117
+
118
+ # @rbs (Array[Segment] gap) -> bool
119
+ def newline_in?: (Array[Segment] gap) -> bool
120
+
121
+ # @rbs (String text) -> bool
122
+ def text_ends_with_newline?: (String text) -> bool
123
+
124
+ # @rbs (Object? left, Object? right) -> bool
125
+ def same_semantic_projection?: (Object? left, Object? right) -> bool
126
+
127
+ # @rbs (Object? left, Object? right) -> bool
128
+ def comparable_semantic_values?: (Object? left, Object? right) -> bool
129
+
130
+ # @rbs (Hash[Object?, Object?] left, Object? right) -> bool
131
+ def comparable_semantic_hashes?: (Hash[Object?, Object?] left, Object? right) -> bool
132
+
133
+ # @rbs (Array[[Object?, Object?]] pending, Object? left, Object? right) -> void
134
+ def append_semantic_children: (Array[[ Object?, Object? ]] pending, Object? left, Object? right) -> void
135
+
136
+ # @rbs (Struct[Object?] value) -> Array[Symbol]
137
+ def semantic_members: (Struct[Object?] value) -> Array[Symbol]
138
+
139
+ # @rbs (Hash[Object?, Object?] value) -> Array[Object?]
140
+ def semantic_keys: (Hash[Object?, Object?] value) -> Array[Object?]
141
+ end
142
+ end
143
+ end
@@ -5,6 +5,12 @@ module Ibex
5
5
  class GeneratedParser < Ibex::Frontend::GeneratedParserBase
6
6
  PARSER_TABLE_FORMAT_VERSION: ::Integer
7
7
 
8
+ GRAMMAR_DIGEST: untyped
9
+
10
+ STATE_COUNT: ::Integer
11
+
12
+ PRODUCTION_COUNT: ::Integer
13
+
8
14
  TOKEN_IDS: untyped
9
15
 
10
16
  TOKEN_NAMES: untyped
@@ -15,149 +21,303 @@ module Ibex
15
21
 
16
22
  DEFAULT_ACTIONS: untyped
17
23
 
24
+ # @type var eager_reductions: Hash[Integer, [:reduce, Integer]]
25
+ EAGER_REDUCTIONS: Hash[Integer, [ :reduce, Integer ]]
26
+
18
27
  PRODUCTIONS: untyped
19
28
 
29
+ # @type var error_messages: Hash[Integer, String | { id: String, message: String }]
30
+ ERROR_MESSAGES: Hash[Integer, String | { id: String, message: String }]
31
+
20
32
  PARSER_TABLES: untyped
21
33
 
22
34
  def self.parser_tables: () -> untyped
23
35
 
24
36
  DEBUG_ENABLED: bool
25
37
 
26
- private def _ibex_action_0: (untyped val, untyped _values) -> untyped
38
+ private def _ibex_action_0: (untyped v0) -> untyped
39
+
40
+ private def _ibex_action_1: (untyped v0) -> untyped
41
+
42
+ private def _ibex_action_2: (untyped val) -> untyped
43
+
44
+ private def _ibex_action_3: (untyped val) -> untyped
45
+
46
+ private def _ibex_action_4: (untyped v0, untyped v1) -> untyped
47
+
48
+ private def _ibex_action_5: (untyped val) -> untyped
49
+
50
+ private def _ibex_action_6: () -> untyped
51
+
52
+ private def _ibex_action_7: (untyped v0) -> untyped
53
+
54
+ private def _ibex_action_8: (untyped v0) -> untyped
55
+
56
+ private def _ibex_action_9: (untyped v0, untyped v1, untyped v2) -> untyped
57
+
58
+ private def _ibex_action_10: () -> untyped
59
+
60
+ private def _ibex_action_11: (untyped v0, untyped v1) -> untyped
61
+
62
+ private def _ibex_action_14: () -> untyped
63
+
64
+ private def _ibex_action_15: (untyped v0, untyped v1) -> untyped
65
+
66
+ private def _ibex_action_16: (untyped v0) -> untyped
67
+
68
+ private def _ibex_action_17: (untyped v0) -> untyped
69
+
70
+ private def _ibex_action_18: (untyped v0) -> untyped
71
+
72
+ private def _ibex_action_19: (untyped v0) -> untyped
73
+
74
+ private def _ibex_action_20: (untyped v0) -> untyped
75
+
76
+ private def _ibex_action_21: (untyped v0) -> untyped
77
+
78
+ private def _ibex_action_22: (untyped v0) -> untyped
79
+
80
+ private def _ibex_action_23: (untyped v0) -> untyped
81
+
82
+ private def _ibex_action_24: (untyped v0) -> untyped
83
+
84
+ private def _ibex_action_25: (untyped v0) -> untyped
85
+
86
+ private def _ibex_action_26: (untyped v0) -> untyped
87
+
88
+ private def _ibex_action_27: (untyped v0) -> untyped
89
+
90
+ private def _ibex_action_28: (untyped v0) -> untyped
91
+
92
+ private def _ibex_action_29: (untyped v0) -> untyped
93
+
94
+ private def _ibex_action_30: (untyped v0) -> untyped
95
+
96
+ private def _ibex_action_31: (untyped v0) -> untyped
97
+
98
+ private def _ibex_action_32: (untyped v0) -> untyped
99
+
100
+ private def _ibex_action_33: (untyped v0, untyped v1) -> untyped
101
+
102
+ private def _ibex_action_34: (untyped v0, untyped v1) -> untyped
103
+
104
+ private def _ibex_action_35: (untyped v0, untyped v1) -> untyped
105
+
106
+ private def _ibex_action_36: () -> untyped
107
+
108
+ private def _ibex_action_37: (untyped v0, untyped v1) -> untyped
109
+
110
+ private def _ibex_action_38: (untyped v0) -> untyped
111
+
112
+ private def _ibex_action_39: (untyped v0, untyped v1) -> untyped
113
+
114
+ private def _ibex_action_40: (untyped v0, untyped v1, untyped v2) -> untyped
115
+
116
+ private def _ibex_action_41: (untyped v0, untyped v1, untyped v2) -> untyped
117
+
118
+ private def _ibex_action_42: () -> untyped
119
+
120
+ private def _ibex_action_43: (untyped v0, untyped v1) -> untyped
121
+
122
+ private def _ibex_action_44: (untyped v0, untyped v1) -> untyped
123
+
124
+ private def _ibex_action_45: (untyped v0) -> untyped
125
+
126
+ private def _ibex_action_46: (untyped v0) -> untyped
127
+
128
+ private def _ibex_action_47: (untyped v0) -> untyped
129
+
130
+ private def _ibex_action_48: (untyped v0) -> untyped
131
+
132
+ private def _ibex_action_49: (untyped v0, untyped v1) -> untyped
133
+
134
+ private def _ibex_action_50: (untyped v0, untyped v1) -> untyped
135
+
136
+ private def _ibex_action_51: (untyped v0, untyped v1) -> untyped
137
+
138
+ private def _ibex_action_52: (untyped v0, untyped v1, untyped v2) -> untyped
139
+
140
+ private def _ibex_action_53: (untyped val) -> untyped
141
+
142
+ private def _ibex_action_54: (untyped v0, untyped v1, untyped v2) -> untyped
143
+
144
+ private def _ibex_action_55: (untyped v0, untyped v1, untyped v2) -> untyped
145
+
146
+ private def _ibex_action_56: (untyped v0, untyped v1, untyped v2) -> untyped
147
+
148
+ private def _ibex_action_57: () -> untyped
149
+
150
+ private def _ibex_action_58: (untyped v0, untyped v1) -> untyped
151
+
152
+ private def _ibex_action_59: (untyped v0) -> untyped
153
+
154
+ private def _ibex_action_60: (untyped v0) -> untyped
155
+
156
+ private def _ibex_action_61: (untyped v0, untyped v1, untyped v2) -> untyped
157
+
158
+ private def _ibex_action_62: (untyped v0, untyped v1, untyped v2) -> untyped
159
+
160
+ private def _ibex_action_63: (untyped v0, untyped v1, untyped v2) -> untyped
161
+
162
+ private def _ibex_action_64: (untyped v0) -> untyped
163
+
164
+ private def _ibex_action_65: (untyped v0) -> untyped
165
+
166
+ private def _ibex_action_66: () -> untyped
167
+
168
+ private def _ibex_action_67: (untyped v0) -> untyped
169
+
170
+ private def _ibex_action_68: (untyped val) -> untyped
171
+
172
+ private def _ibex_action_69: (untyped v0, untyped v1, untyped v2) -> untyped
173
+
174
+ private def _ibex_action_70: () -> untyped
175
+
176
+ private def _ibex_action_71: (untyped v0, untyped v1) -> untyped
177
+
178
+ private def _ibex_action_72: (untyped v0, untyped v1) -> untyped
179
+
180
+ private def _ibex_action_73: (untyped v0, untyped v1, untyped v2) -> untyped
181
+
182
+ private def _ibex_action_74: (untyped v0, untyped v1, untyped v2) -> untyped
183
+
184
+ private def _ibex_action_75: (untyped v0, untyped v1, untyped v2) -> untyped
185
+
186
+ private def _ibex_action_76: () -> untyped
27
187
 
28
- private def _ibex_action_1: (untyped val, untyped _values) -> untyped
188
+ private def _ibex_action_77: (untyped v0) -> untyped
29
189
 
30
- private def _ibex_action_2: (untyped val, untyped _values) -> untyped
190
+ private def _ibex_action_78: (untyped v0, untyped v1, untyped v2) -> untyped
31
191
 
32
- private def _ibex_action_3: (untyped val, untyped _values) -> untyped
192
+ private def _ibex_action_79: (untyped v0, untyped v1, untyped v2) -> untyped
33
193
 
34
- private def _ibex_action_4: (untyped val, untyped _values) -> untyped
194
+ private def _ibex_action_80: () -> untyped
35
195
 
36
- private def _ibex_action_7: (untyped val, untyped _values) -> untyped
196
+ private def _ibex_action_81: (untyped v0, untyped v1) -> untyped
37
197
 
38
- private def _ibex_action_8: (untyped val, untyped _values) -> untyped
198
+ private def _ibex_action_82: (untyped v0, untyped v1) -> untyped
39
199
 
40
- private def _ibex_action_9: (untyped val, untyped _values) -> untyped
200
+ private def _ibex_action_83: () -> untyped
41
201
 
42
- private def _ibex_action_10: (untyped val, untyped _values) -> untyped
202
+ private def _ibex_action_84: (untyped v0, untyped v1) -> untyped
43
203
 
44
- private def _ibex_action_11: (untyped val, untyped _values) -> untyped
204
+ private def _ibex_action_85: () -> untyped
45
205
 
46
- private def _ibex_action_12: (untyped val, untyped _values) -> untyped
206
+ private def _ibex_action_86: (untyped v0, untyped v1) -> untyped
47
207
 
48
- private def _ibex_action_13: (untyped val, untyped _values) -> untyped
208
+ private def _ibex_action_87: (untyped v0) -> untyped
49
209
 
50
- private def _ibex_action_14: (untyped val, untyped _values) -> untyped
210
+ private def _ibex_action_88: (untyped v0) -> untyped
51
211
 
52
- private def _ibex_action_15: (untyped val, untyped _values) -> untyped
212
+ private def _ibex_action_89: (untyped v0) -> untyped
53
213
 
54
- private def _ibex_action_16: (untyped val, untyped _values) -> untyped
214
+ private def _ibex_action_90: (untyped v0, untyped v1) -> untyped
55
215
 
56
- private def _ibex_action_17: (untyped val, untyped _values) -> untyped
216
+ private def _ibex_action_91: (untyped val) -> untyped
57
217
 
58
- private def _ibex_action_18: (untyped val, untyped _values) -> untyped
218
+ private def _ibex_action_92: () -> untyped
59
219
 
60
- private def _ibex_action_19: (untyped val, untyped _values) -> untyped
220
+ private def _ibex_action_93: (untyped v0) -> untyped
61
221
 
62
- private def _ibex_action_20: (untyped val, untyped _values) -> untyped
222
+ private def _ibex_action_94: () -> untyped
63
223
 
64
- private def _ibex_action_21: (untyped val, untyped _values) -> untyped
224
+ private def _ibex_action_95: (untyped v0, untyped v1, untyped v2) -> untyped
65
225
 
66
- private def _ibex_action_22: (untyped val, untyped _values) -> untyped
226
+ private def _ibex_action_96: (untyped v0) -> untyped
67
227
 
68
- private def _ibex_action_23: (untyped val, untyped _values) -> untyped
228
+ private def _ibex_action_97: (untyped v0, untyped v1, untyped v2) -> untyped
69
229
 
70
- private def _ibex_action_24: (untyped val, untyped _values) -> untyped
230
+ private def _ibex_action_100: (untyped v0) -> untyped
71
231
 
72
- private def _ibex_action_25: (untyped val, untyped _values) -> untyped
232
+ private def _ibex_action_101: (untyped v0, untyped v1, untyped v2) -> untyped
73
233
 
74
- private def _ibex_action_26: (untyped val, untyped _values) -> untyped
234
+ private def _ibex_action_102: (untyped v0, untyped v1, untyped v2) -> untyped
75
235
 
76
- private def _ibex_action_27: (untyped val, untyped _values) -> untyped
236
+ private def _ibex_action_103: () -> untyped
77
237
 
78
- private def _ibex_action_28: (untyped val, untyped _values) -> untyped
238
+ private def _ibex_action_104: (untyped val) -> untyped
79
239
 
80
- private def _ibex_action_29: (untyped val, untyped _values) -> untyped
240
+ private def _ibex_action_105: () -> untyped
81
241
 
82
- private def _ibex_action_30: (untyped val, untyped _values) -> untyped
242
+ private def _ibex_action_106: (untyped v0) -> untyped
83
243
 
84
- private def _ibex_action_31: (untyped val, untyped _values) -> untyped
244
+ private def _ibex_action_107: () -> untyped
85
245
 
86
- private def _ibex_action_32: (untyped val, untyped _values) -> untyped
246
+ private def _ibex_action_108: (untyped v0, untyped v1) -> untyped
87
247
 
88
- private def _ibex_action_33: (untyped val, untyped _values) -> untyped
248
+ private def _ibex_action_109: () -> untyped
89
249
 
90
- private def _ibex_action_34: (untyped val, untyped _values) -> untyped
250
+ private def _ibex_action_110: (untyped v0, untyped v1) -> untyped
91
251
 
92
- private def _ibex_action_35: (untyped val, untyped _values) -> untyped
252
+ private def _ibex_action_111: (untyped v0) -> untyped
93
253
 
94
- private def _ibex_action_36: (untyped val, untyped _values) -> untyped
254
+ private def _ibex_action_112: (untyped v0) -> untyped
95
255
 
96
- private def _ibex_action_37: (untyped val, untyped _values) -> untyped
256
+ private def _ibex_action_113: (untyped v0) -> untyped
97
257
 
98
- private def _ibex_action_38: (untyped val, untyped _values) -> untyped
258
+ private def _ibex_action_114: (untyped v0) -> untyped
99
259
 
100
- private def _ibex_action_39: (untyped val, untyped _values) -> untyped
260
+ private def _ibex_action_115: (untyped v0) -> untyped
101
261
 
102
- private def _ibex_action_42: (untyped val, untyped _values) -> untyped
262
+ private def _ibex_action_116: (untyped v0) -> untyped
103
263
 
104
- private def _ibex_action_43: (untyped val, untyped _values) -> untyped
264
+ private def _ibex_action_117: (untyped v0, untyped v1, untyped v2) -> untyped
105
265
 
106
- private def _ibex_action_44: (untyped val, untyped _values) -> untyped
266
+ private def _ibex_action_118: (untyped val) -> untyped
107
267
 
108
- private def _ibex_action_45: (untyped val, untyped _values) -> untyped
268
+ private def _ibex_action_119: () -> untyped
109
269
 
110
- private def _ibex_action_46: (untyped val, untyped _values) -> untyped
270
+ private def _ibex_action_120: (untyped v0) -> untyped
111
271
 
112
- private def _ibex_action_47: (untyped val, untyped _values) -> untyped
272
+ private def _ibex_action_121: (untyped v0) -> untyped
113
273
 
114
- private def _ibex_action_48: (untyped val, untyped _values) -> untyped
274
+ private def _ibex_action_122: (untyped v0, untyped v1, untyped v2) -> untyped
115
275
 
116
- private def _ibex_action_49: (untyped val, untyped _values) -> untyped
276
+ private def _ibex_action_123: (untyped v0) -> untyped
117
277
 
118
- private def _ibex_action_50: (untyped val, untyped _values) -> untyped
278
+ private def _ibex_action_124: (untyped v0) -> untyped
119
279
 
120
- private def _ibex_action_51: (untyped val, untyped _values) -> untyped
280
+ private def _ibex_action_125: (untyped v0) -> untyped
121
281
 
122
- private def _ibex_action_52: (untyped val, untyped _values) -> untyped
282
+ private def _ibex_action_126: (untyped v0) -> untyped
123
283
 
124
- private def _ibex_action_53: (untyped val, untyped _values) -> untyped
284
+ private def _ibex_action_127: () -> untyped
125
285
 
126
- private def _ibex_action_54: (untyped val, untyped _values) -> untyped
286
+ private def _ibex_action_128: (untyped v0, untyped v1) -> untyped
127
287
 
128
- private def _ibex_action_55: (untyped val, untyped _values) -> untyped
288
+ private def _ibex_action_129: () -> untyped
129
289
 
130
- private def _ibex_action_56: (untyped val, untyped _values) -> untyped
290
+ private def _ibex_action_130: (untyped v0, untyped v1) -> untyped
131
291
 
132
- private def _ibex_action_57: (untyped val, untyped _values) -> untyped
292
+ private def _ibex_action_131: (untyped v0, untyped v1) -> untyped
133
293
 
134
- private def _ibex_action_58: (untyped val, untyped _values) -> untyped
294
+ private def _ibex_action_132: (untyped v0, untyped v1) -> untyped
135
295
 
136
- private def _ibex_action_59: (untyped val, untyped _values) -> untyped
296
+ private def _ibex_action_133: (untyped v0, untyped v1, untyped v2, untyped v3) -> untyped
137
297
 
138
- private def _ibex_action_60: (untyped val, untyped _values) -> untyped
298
+ private def _ibex_action_134: (untyped v0) -> untyped
139
299
 
140
- private def _ibex_action_61: (untyped val, untyped _values) -> untyped
300
+ private def _ibex_action_135: (untyped v0, untyped v1, untyped v2) -> untyped
141
301
 
142
- private def _ibex_action_62: (untyped val, untyped _values) -> untyped
302
+ private def _ibex_action_136: () -> untyped
143
303
 
144
- private def _ibex_action_63: (untyped val, untyped _values) -> untyped
304
+ private def _ibex_action_137: (untyped v0, untyped v1) -> untyped
145
305
 
146
- private def _ibex_action_64: (untyped val, untyped _values) -> untyped
306
+ private def _ibex_action_138: (untyped v0) -> untyped
147
307
 
148
- private def _ibex_action_65: (untyped val, untyped _values) -> untyped
308
+ private def _ibex_action_139: (untyped v0) -> untyped
149
309
 
150
- private def _ibex_action_66: (untyped val, untyped _values) -> untyped
310
+ private def _ibex_action_140: (untyped v0) -> untyped
151
311
 
152
- private def _ibex_action_67: (untyped val, untyped _values) -> untyped
312
+ private def _ibex_action_141: (untyped v0) -> untyped
153
313
 
154
- private def _ibex_action_68: (untyped val, untyped _values) -> untyped
314
+ private def _ibex_action_142: (untyped val) -> untyped
155
315
 
156
- private def _ibex_action_69: (untyped val, untyped _values) -> untyped
316
+ private def _ibex_action_143: (untyped val) -> untyped
157
317
 
158
- private def _ibex_action_70: (untyped val, untyped _values) -> untyped
318
+ private def _ibex_action_144: () -> untyped
159
319
 
160
- private def _ibex_action_71: (untyped val, untyped _values) -> untyped
320
+ private def _ibex_action_145: (untyped v0, untyped v1) -> untyped
161
321
  end
162
322
  end
163
323
  end
@@ -3,7 +3,18 @@
3
3
  module Ibex
4
4
  module Frontend
5
5
  # Semantic support and token delivery for the generated grammar parser.
6
+ # rubocop:disable Metrics/ClassLength -- generated grammar semantics share one parser support surface.
6
7
  class GeneratedParserBase < Runtime::Parser
8
+ include GeneratedParserMetadata
9
+
10
+ include GeneratedParserIncludes
11
+
12
+ include GeneratedParserParameters
13
+
14
+ include ParserConfigurationSupport
15
+
16
+ attr_reader diagnostic_token: Token?
17
+
7
18
  @mode: Symbol
8
19
 
9
20
  @adapter: TokenAdapter
@@ -11,14 +22,14 @@ module Ibex
11
22
  # @rbs (Array[Token] tokens, ?mode: Symbol) -> void
12
23
  def initialize: (Array[Token] tokens, ?mode: Symbol) -> void
13
24
 
14
- # @rbs () -> AST::Root
15
- def parse: () -> AST::Root
25
+ # @rbs () -> (AST::Root | AST::Fragment)
26
+ def parse: () -> (AST::Root | AST::Fragment)
16
27
 
17
28
  # @rbs () -> ([external_token, Token] | false)
18
29
  def next_token: () -> ([ external_token, Token ] | false)
19
30
 
20
- # @rbs (Integer? _token_id, Token? value, Array[untyped] _value_stack) -> bot
21
- def on_error: (Integer? _token_id, Token? value, Array[untyped] _value_stack) -> bot
31
+ # @rbs (Integer? _token_id, Token? value, Array[Object?] _value_stack) -> bot
32
+ def on_error: (Integer? _token_id, Token? value, Array[Object?] _value_stack) -> bot
22
33
 
23
34
  private
24
35
 
@@ -41,8 +52,14 @@ module Ibex
41
52
  # Array[AST::declaration] declarations, Array[AST::Rule] rules, AST::user_code user_code) -> AST::Root
42
53
  def build_root: (Token class_token, Array[String] class_parts, Array[String]? superclass, Array[AST::declaration] declarations, Array[AST::Rule] rules, AST::user_code user_code) -> AST::Root
43
54
 
44
- # @rbs (Token keyword, Array[String] names) -> AST::Tokens
45
- def build_tokens: (Token keyword, Array[String] names) -> AST::Tokens
55
+ # @rbs (Token keyword, Array[[String, String?]] entries) -> AST::Tokens
56
+ def build_tokens: (Token keyword, Array[[ String, String? ]] entries) -> AST::Tokens
57
+
58
+ # @rbs (Token token) -> [String, nil]
59
+ def build_token_entry: (Token token) -> [ String, nil ]
60
+
61
+ # @rbs (Token name, Token value) -> [String, String]
62
+ def build_token_alias: (Token name, Token value) -> [ String, String ]
46
63
 
47
64
  # @rbs (Token keyword, Symbol direction, Array[AST::PrecedenceLevel] levels) -> AST::Precedence
48
65
  def build_precedence: (Token keyword, Symbol direction, Array[AST::PrecedenceLevel] levels) -> AST::Precedence
@@ -56,8 +73,35 @@ module Ibex
56
73
  # @rbs (Token keyword, Token integer) -> AST::Expect
57
74
  def build_expect: (Token keyword, Token integer) -> AST::Expect
58
75
 
59
- # @rbs (Token keyword, String name) -> AST::Start
60
- def build_start: (Token keyword, String name) -> AST::Start
76
+ # @rbs (Token keyword, Token integer) -> AST::ExpectRR
77
+ def build_expect_rr: (Token keyword, Token integer) -> AST::ExpectRR
78
+
79
+ # @rbs (Token keyword, Token name, Token? type) -> AST::Parameter
80
+ def build_parameter: (Token keyword, Token name, Token? type) -> AST::Parameter
81
+
82
+ # @rbs (Token keyword, Token symbol, Token action) -> AST::Printer
83
+ def build_printer: (Token keyword, Token symbol, Token action) -> AST::Printer
84
+
85
+ # @rbs (Token keyword, Array[String] names) -> AST::Start
86
+ def build_start: (Token keyword, Array[String] names) -> AST::Start
87
+
88
+ # @rbs (Token keyword, Token kind, Array[String] sync_tokens) -> AST::Recovery
89
+ def build_recovery: (Token keyword, Token kind, Array[String] sync_tokens) -> AST::Recovery
90
+
91
+ # @rbs (Token keyword, Array[String] names) -> AST::OnErrorReduce
92
+ def build_on_error_reduce: (Token keyword, Array[String] names) -> AST::OnErrorReduce
93
+
94
+ # @rbs (Token keyword, Token expectation, Token source) -> AST::GrammarTest
95
+ def build_grammar_test: (Token keyword, Token expectation, Token source) -> AST::GrammarTest
96
+
97
+ # @rbs (Token keyword, Array[AST::lexer_entry] entries) -> AST::Lexer
98
+ def build_lexer: (Token keyword, Array[AST::lexer_entry] entries) -> AST::Lexer
99
+
100
+ # @rbs (Symbol kind, Token? name, Token pattern, Token? action, Token marker) -> AST::LexerRule
101
+ def build_lexer_rule: (Symbol kind, Token? name, Token pattern, Token? action, Token marker) -> AST::LexerRule
102
+
103
+ # @rbs (Token marker, Token name, Array[AST::lexer_entry] entries) -> AST::LexerState
104
+ def build_lexer_state: (Token marker, Token name, Array[AST::lexer_entry] entries) -> AST::LexerState
61
105
 
62
106
  # @rbs (Token keyword, Array[AST::Conversion] pairs) -> AST::Convert
63
107
  def build_convert: (Token keyword, Array[AST::Conversion] pairs) -> AST::Convert
@@ -65,11 +109,14 @@ module Ibex
65
109
  # @rbs (Token name_token, Token literal_token) -> AST::Conversion
66
110
  def build_conversion: (Token name_token, Token literal_token) -> AST::Conversion
67
111
 
68
- # @rbs (Token lhs, Array[AST::Alternative] alternatives) -> AST::Rule
69
- def build_rule: (Token lhs, Array[AST::Alternative] alternatives) -> AST::Rule
112
+ # @rbs (Array[AST::item] items, Token? precedence, AST::NodeAnnotation? node_annotation) -> AST::Alternative
113
+ def build_alternative: (Array[AST::item] items, Token? precedence, AST::NodeAnnotation? node_annotation) -> AST::Alternative
114
+
115
+ # @rbs (Token marker, Token name, Array[Token] fields) -> AST::NodeAnnotation
116
+ def build_node_annotation: (Token marker, Token name, Array[Token] fields) -> AST::NodeAnnotation
70
117
 
71
- # @rbs (Array[AST::item] items, Token? precedence) -> AST::Alternative
72
- def build_alternative: (Array[AST::item] items, Token? precedence) -> AST::Alternative
118
+ # @rbs (Token token) -> AST::Empty
119
+ def build_empty: (Token token) -> AST::Empty
73
120
 
74
121
  # @rbs (AST::item? item) -> Location?
75
122
  def item_start_location: (AST::item? item) -> Location?
@@ -77,6 +124,9 @@ module Ibex
77
124
  # @rbs (Token token, [Token, Token]? named_reference, Array[Token] suffixes) -> AST::item
78
125
  def build_symbol_reference: (Token token, [ Token, Token ]? named_reference, Array[Token] suffixes) -> AST::item
79
126
 
127
+ # @rbs ([Token, Token]? named_reference) -> String?
128
+ def named_reference_value: ([ Token, Token ]? named_reference) -> String?
129
+
80
130
  # @rbs (Token token) -> AST::InlineAction
81
131
  def build_action: (Token token) -> AST::InlineAction
82
132
 
@@ -92,6 +142,9 @@ module Ibex
92
142
  # @rbs (AST::user_code blocks, Token token) -> AST::user_code
93
143
  def append_user_code: (AST::user_code blocks, Token token) -> AST::user_code
94
144
 
145
+ # @rbs (Token token, AST::user_code blocks) -> AST::user_code
146
+ def prepend_user_code: (Token token, AST::user_code blocks) -> AST::user_code
147
+
95
148
  # @rbs () -> AST::user_code
96
149
  def empty_user_code: () -> AST::user_code
97
150