ibex 0.1.0 → 0.2.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 (384) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +247 -104
  3. data/docs/architecture.md +322 -28
  4. data/docs/cst-migration.md +107 -0
  5. data/docs/cst.md +213 -0
  6. data/docs/development.md +129 -0
  7. data/docs/editor-setup.md +25 -0
  8. data/docs/error-ux.md +60 -0
  9. data/docs/grammar-reference.md +458 -18
  10. data/docs/lexer-migration.md +51 -0
  11. data/docs/racc-migration.md +34 -6
  12. data/docs/release-readiness.md +163 -0
  13. data/docs/stability.md +124 -0
  14. data/examples/README.md +60 -0
  15. data/examples/calculator.y +44 -0
  16. data/examples/csv.y +32 -0
  17. data/examples/ini.y +70 -0
  18. data/examples/json.y +48 -0
  19. data/examples/tiny_language.y +75 -0
  20. data/lib/ibex/analysis/sets.rb +5 -4
  21. data/lib/ibex/artifact_set.rb +63 -0
  22. data/lib/ibex/cli/ambiguity.rb +66 -0
  23. data/lib/ibex/cli/counterexample_options.rb +6 -2
  24. data/lib/ibex/cli/coverage.rb +173 -0
  25. data/lib/ibex/cli/debug.rb +106 -0
  26. data/lib/ibex/cli/diagnostics.rb +116 -0
  27. data/lib/ibex/cli/documentation.rb +67 -0
  28. data/lib/ibex/cli/error_messages.rb +177 -0
  29. data/lib/ibex/cli/explain.rb +76 -0
  30. data/lib/ibex/cli/formatting.rb +386 -0
  31. data/lib/ibex/cli/generation_artifacts.rb +138 -0
  32. data/lib/ibex/cli/generation_error_messages.rb +39 -0
  33. data/lib/ibex/cli/grammar_tests.rb +122 -0
  34. data/lib/ibex/cli/ir_tools.rb +184 -0
  35. data/lib/ibex/cli/lsp.rb +33 -0
  36. data/lib/ibex/cli/outputs.rb +91 -8
  37. data/lib/ibex/cli/racc_migration.rb +87 -0
  38. data/lib/ibex/cli/samples.rb +92 -0
  39. data/lib/ibex/cli/watch.rb +103 -0
  40. data/lib/ibex/cli.rb +506 -37
  41. data/lib/ibex/codegen/action_locations.rb +103 -0
  42. data/lib/ibex/codegen/action_method_source.rb +210 -0
  43. data/lib/ibex/codegen/action_source.rb +118 -0
  44. data/lib/ibex/codegen/ambiguity.rb +173 -0
  45. data/lib/ibex/codegen/cst_metadata.rb +171 -0
  46. data/lib/ibex/codegen/documentation.rb +170 -0
  47. data/lib/ibex/codegen/explain.rb +312 -0
  48. data/lib/ibex/codegen/generated_action_abi.rb +288 -0
  49. data/lib/ibex/codegen/html.rb +94 -10
  50. data/lib/ibex/codegen/mermaid.rb +43 -0
  51. data/lib/ibex/codegen/railroad.rb +197 -0
  52. data/lib/ibex/codegen/railroad_documentation.rb +59 -0
  53. data/lib/ibex/codegen/rbs.rb +323 -2
  54. data/lib/ibex/codegen/report.rb +46 -6
  55. data/lib/ibex/codegen/ruby.rb +334 -59
  56. data/lib/ibex/codegen/ruby_actions.rb +143 -0
  57. data/lib/ibex/codegen/ruby_ast.rb +121 -0
  58. data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
  59. data/lib/ibex/codegen/ruby_lexer.rb +83 -0
  60. data/lib/ibex/codegen/ruby_syntax.rb +90 -0
  61. data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
  62. data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
  63. data/lib/ibex/codegen/symbol_labels.rb +1 -1
  64. data/lib/ibex/coverage/collector.rb +188 -0
  65. data/lib/ibex/coverage/event_stream.rb +97 -0
  66. data/lib/ibex/coverage/report.rb +259 -0
  67. data/lib/ibex/coverage/runtime_event_validator.rb +160 -0
  68. data/lib/ibex/coverage.rb +13 -0
  69. data/lib/ibex/error_messages/parser.rb +159 -0
  70. data/lib/ibex/error_messages/parser_v2.rb +198 -0
  71. data/lib/ibex/error_messages/renderer.rb +65 -0
  72. data/lib/ibex/error_messages/sentence_search.rb +196 -0
  73. data/lib/ibex/error_messages/update.rb +169 -0
  74. data/lib/ibex/error_messages.rb +165 -0
  75. data/lib/ibex/frontend/ast.rb +145 -6
  76. data/lib/ibex/frontend/bootstrap_parser.rb +47 -4
  77. data/lib/ibex/frontend/diagnostic.rb +81 -0
  78. data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
  79. data/lib/ibex/frontend/dsl.rb +66 -7
  80. data/lib/ibex/frontend/formatter.rb +407 -0
  81. data/lib/ibex/frontend/generated_parser.rb +614 -190
  82. data/lib/ibex/frontend/generated_parser_base.rb +164 -30
  83. data/lib/ibex/frontend/generated_parser_includes.rb +61 -0
  84. data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
  85. data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
  86. data/lib/ibex/frontend/generation.rb +33 -0
  87. data/lib/ibex/frontend/lexer.rb +162 -10
  88. data/lib/ibex/frontend/lexer_recovery.rb +84 -0
  89. data/lib/ibex/frontend/parser/declarations.rb +247 -11
  90. data/lib/ibex/frontend/parser/parameters.rb +82 -0
  91. data/lib/ibex/frontend/parser/rules.rb +43 -6
  92. data/lib/ibex/frontend/parser.rb +182 -4
  93. data/lib/ibex/frontend/regenerator.rb +26 -1
  94. data/lib/ibex/frontend/resolution.rb +69 -0
  95. data/lib/ibex/frontend/resolver.rb +217 -0
  96. data/lib/ibex/frontend/rule_documentation.rb +103 -0
  97. data/lib/ibex/frontend/source_cursor.rb +132 -8
  98. data/lib/ibex/frontend/source_document.rb +229 -0
  99. data/lib/ibex/frontend/source_loader.rb +150 -0
  100. data/lib/ibex/frontend/source_span.rb +81 -0
  101. data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
  102. data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
  103. data/lib/ibex/frontend/token_adapter/declaration_state.rb +216 -26
  104. data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
  105. data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
  106. data/lib/ibex/frontend/token_adapter.rb +8 -3
  107. data/lib/ibex/frontend.rb +13 -2
  108. data/lib/ibex/generation_input.rb +57 -0
  109. data/lib/ibex/generation_manifest.rb +200 -0
  110. data/lib/ibex/generation_transaction.rb +261 -0
  111. data/lib/ibex/generation_transaction_recovery.rb +109 -0
  112. data/lib/ibex/generation_transaction_validation.rb +196 -0
  113. data/lib/ibex/grammar_tests.rb +206 -0
  114. data/lib/ibex/ir/automaton_ir.rb +38 -5
  115. data/lib/ibex/ir/grammar_ir.rb +137 -24
  116. data/lib/ibex/ir/lexer_ir.rb +76 -0
  117. data/lib/ibex/ir/migration.rb +120 -0
  118. data/lib/ibex/ir/serialize.rb +110 -19
  119. data/lib/ibex/ir/validator/automaton.rb +345 -0
  120. data/lib/ibex/ir/validator/base.rb +129 -0
  121. data/lib/ibex/ir/validator/grammar.rb +604 -0
  122. data/lib/ibex/ir/validator/lexer.rb +113 -0
  123. data/lib/ibex/ir/validator.rb +62 -0
  124. data/lib/ibex/ir.rb +57 -4
  125. data/lib/ibex/lalr/build_metrics.rb +23 -0
  126. data/lib/ibex/lalr/builder.rb +379 -52
  127. data/lib/ibex/lalr/conflict.rb +1 -0
  128. data/lib/ibex/lalr/conflict_search.rb +11 -5
  129. data/lib/ibex/lalr/counterexample.rb +20 -5
  130. data/lib/ibex/lalr/direct_lookaheads.rb +236 -0
  131. data/lib/ibex/lalr/ielr_partition.rb +152 -0
  132. data/lib/ibex/lalr/on_error_reductions.rb +74 -0
  133. data/lib/ibex/lalr.rb +7 -0
  134. data/lib/ibex/location.rb +129 -0
  135. data/lib/ibex/lsp/document_handlers.rb +66 -0
  136. data/lib/ibex/lsp/document_store.rb +264 -0
  137. data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
  138. data/lib/ibex/lsp/document_store_validation.rb +61 -0
  139. data/lib/ibex/lsp/initialization_handlers.rb +78 -0
  140. data/lib/ibex/lsp/navigation_handlers.rb +56 -0
  141. data/lib/ibex/lsp/position_codec.rb +109 -0
  142. data/lib/ibex/lsp/protocol_error.rb +33 -0
  143. data/lib/ibex/lsp/request_handlers.rb +45 -0
  144. data/lib/ibex/lsp/request_support.rb +87 -0
  145. data/lib/ibex/lsp/server.rb +146 -0
  146. data/lib/ibex/lsp/symbol_index.rb +241 -0
  147. data/lib/ibex/lsp/symbol_index_builder.rb +267 -0
  148. data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
  149. data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
  150. data/lib/ibex/lsp/symbol_occurrence.rb +17 -0
  151. data/lib/ibex/lsp/transport.rb +118 -0
  152. data/lib/ibex/lsp/workspace.rb +127 -0
  153. data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
  154. data/lib/ibex/lsp.rb +32 -0
  155. data/lib/ibex/normalize/declarations.rb +140 -7
  156. data/lib/ibex/normalize/diagnostics.rb +50 -5
  157. data/lib/ibex/normalize/expander.rb +59 -55
  158. data/lib/ibex/normalize/expression.rb +60 -39
  159. data/lib/ibex/normalize/inline_expansion.rb +414 -0
  160. data/lib/ibex/normalize/inline_validation.rb +174 -0
  161. data/lib/ibex/normalize/lexer.rb +131 -0
  162. data/lib/ibex/normalize/named_references.rb +60 -0
  163. data/lib/ibex/normalize/nodes.rb +46 -0
  164. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +69 -0
  165. data/lib/ibex/normalize/parameter_lowering.rb +126 -0
  166. data/lib/ibex/normalize/parameter_substitution.rb +125 -0
  167. data/lib/ibex/normalize/parameter_validation.rb +140 -0
  168. data/lib/ibex/normalize/parameters.rb +199 -0
  169. data/lib/ibex/normalize/recovery_declarations.rb +84 -0
  170. data/lib/ibex/normalize.rb +179 -14
  171. data/lib/ibex/racc_migration/checker.rb +122 -0
  172. data/lib/ibex/racc_migration/harness.rb +177 -0
  173. data/lib/ibex/racc_migration/report.rb +94 -0
  174. data/lib/ibex/racc_migration.rb +12 -0
  175. data/lib/ibex/rake_task.rb +116 -0
  176. data/lib/ibex/samples.rb +186 -0
  177. data/lib/ibex/table_simulation/result.rb +51 -0
  178. data/lib/ibex/table_simulation/simulator.rb +253 -0
  179. data/lib/ibex/table_simulation/step.rb +60 -0
  180. data/lib/ibex/table_simulation/text.rb +31 -0
  181. data/lib/ibex/table_simulation.rb +13 -0
  182. data/lib/ibex/tables.rb +9 -70
  183. data/lib/ibex/version.rb +1 -1
  184. data/lib/ibex/watch/runner.rb +172 -0
  185. data/lib/ibex/watch/source_snapshot.rb +93 -0
  186. data/lib/ibex/watch.rb +11 -0
  187. data/lib/ibex.rb +25 -1
  188. data/schema/automaton-ir-v1.schema.json +401 -0
  189. data/schema/automaton-ir-v2.schema.json +58 -0
  190. data/schema/benchmark-v1.schema.json +212 -0
  191. data/schema/benchmark-v2.schema.json +61 -0
  192. data/schema/cst-v1.json +170 -0
  193. data/schema/error-ux-v1.schema.json +258 -0
  194. data/schema/explain-v1.schema.json +433 -0
  195. data/schema/frontend-diagnostics-v1.schema.json +154 -0
  196. data/schema/generation-manifest-v1.schema.json +115 -0
  197. data/schema/grammar-ir-v1.schema.json +426 -0
  198. data/schema/grammar-ir-v2.schema.json +779 -0
  199. data/schema/lexer-ir-v1.schema.json +215 -0
  200. data/schema/migration-check-v1.schema.json +60 -0
  201. data/schema/performance-comparison-v1.schema.json +395 -0
  202. data/schema/public-performance-comparison-v1.schema.json +506 -0
  203. data/schema/public-performance-profile-v1.schema.json +360 -0
  204. data/schema/runtime-coverage-v1.schema.json +86 -0
  205. data/schema/runtime-event-v1.schema.json +308 -0
  206. data/schema/table-simulation-v1.schema.json +70 -0
  207. data/sig/ibex/artifact_set.rbs +37 -0
  208. data/sig/ibex/cli/ambiguity.rbs +22 -0
  209. data/sig/ibex/cli/counterexample_options.rbs +2 -0
  210. data/sig/ibex/cli/coverage.rbs +53 -0
  211. data/sig/ibex/cli/debug.rbs +28 -0
  212. data/sig/ibex/cli/diagnostics.rbs +38 -0
  213. data/sig/ibex/cli/documentation.rbs +25 -0
  214. data/sig/ibex/cli/error_messages.rbs +57 -0
  215. data/sig/ibex/cli/explain.rbs +25 -0
  216. data/sig/ibex/cli/formatting.rbs +103 -0
  217. data/sig/ibex/cli/generation_artifacts.rbs +50 -0
  218. data/sig/ibex/cli/generation_error_messages.rbs +19 -0
  219. data/sig/ibex/cli/grammar_tests.rbs +36 -0
  220. data/sig/ibex/cli/ir_tools.rbs +51 -0
  221. data/sig/ibex/cli/lsp.rbs +14 -0
  222. data/sig/ibex/cli/outputs.rbs +17 -0
  223. data/sig/ibex/cli/racc_migration.rbs +30 -0
  224. data/sig/ibex/cli/samples.rbs +30 -0
  225. data/sig/ibex/cli/watch.rbs +43 -0
  226. data/sig/ibex/cli.rbs +104 -5
  227. data/sig/ibex/codegen/action_locations.rbs +45 -0
  228. data/sig/ibex/codegen/action_method_source.rbs +65 -0
  229. data/sig/ibex/codegen/action_source.rbs +50 -0
  230. data/sig/ibex/codegen/ambiguity.rbs +60 -0
  231. data/sig/ibex/codegen/cst_metadata.rbs +59 -0
  232. data/sig/ibex/codegen/documentation.rbs +50 -0
  233. data/sig/ibex/codegen/explain.rbs +85 -0
  234. data/sig/ibex/codegen/generated_action_abi.rbs +101 -0
  235. data/sig/ibex/codegen/html.rbs +18 -2
  236. data/sig/ibex/codegen/mermaid.rbs +16 -0
  237. data/sig/ibex/codegen/railroad.rbs +82 -0
  238. data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
  239. data/sig/ibex/codegen/rbs.rbs +84 -4
  240. data/sig/ibex/codegen/report.rbs +8 -0
  241. data/sig/ibex/codegen/ruby.rbs +97 -23
  242. data/sig/ibex/codegen/ruby_actions.rbs +54 -0
  243. data/sig/ibex/codegen/ruby_ast.rbs +34 -0
  244. data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
  245. data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
  246. data/sig/ibex/codegen/ruby_syntax.rbs +25 -0
  247. data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
  248. data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
  249. data/sig/ibex/coverage/collector.rbs +76 -0
  250. data/sig/ibex/coverage/event_stream.rbs +42 -0
  251. data/sig/ibex/coverage/report.rbs +100 -0
  252. data/sig/ibex/coverage/runtime_event_validator.rbs +68 -0
  253. data/sig/ibex/coverage.rbs +7 -0
  254. data/sig/ibex/error_messages/parser.rbs +58 -0
  255. data/sig/ibex/error_messages/parser_v2.rbs +67 -0
  256. data/sig/ibex/error_messages/renderer.rbs +23 -0
  257. data/sig/ibex/error_messages/sentence_search.rbs +80 -0
  258. data/sig/ibex/error_messages/update.rbs +43 -0
  259. data/sig/ibex/error_messages.rbs +85 -0
  260. data/sig/ibex/frontend/ast.rbs +208 -19
  261. data/sig/ibex/frontend/bootstrap_parser.rbs +11 -0
  262. data/sig/ibex/frontend/diagnostic.rbs +53 -0
  263. data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
  264. data/sig/ibex/frontend/dsl.rbs +33 -4
  265. data/sig/ibex/frontend/formatter.rbs +135 -0
  266. data/sig/ibex/frontend/generated_parser.rbs +218 -68
  267. data/sig/ibex/frontend/generated_parser_base.rbs +61 -10
  268. data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
  269. data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
  270. data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
  271. data/sig/ibex/frontend/generation.rbs +6 -0
  272. data/sig/ibex/frontend/lexer.rbs +49 -2
  273. data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
  274. data/sig/ibex/frontend/parser/declarations.rbs +54 -0
  275. data/sig/ibex/frontend/parser/parameters.rbs +28 -0
  276. data/sig/ibex/frontend/parser/rules.rbs +3 -0
  277. data/sig/ibex/frontend/parser.rbs +66 -0
  278. data/sig/ibex/frontend/regenerator.rbs +11 -0
  279. data/sig/ibex/frontend/resolution.rbs +33 -0
  280. data/sig/ibex/frontend/resolver.rbs +91 -0
  281. data/sig/ibex/frontend/rule_documentation.rbs +42 -0
  282. data/sig/ibex/frontend/source_cursor.rbs +36 -3
  283. data/sig/ibex/frontend/source_document.rbs +119 -0
  284. data/sig/ibex/frontend/source_loader.rbs +66 -0
  285. data/sig/ibex/frontend/source_span.rbs +53 -0
  286. data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
  287. data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
  288. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +73 -5
  289. data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
  290. data/sig/ibex/frontend/token_adapter.rbs +5 -2
  291. data/sig/ibex/frontend.rbs +1 -1
  292. data/sig/ibex/generation_input.rbs +37 -0
  293. data/sig/ibex/generation_manifest.rbs +67 -0
  294. data/sig/ibex/generation_transaction.rbs +82 -0
  295. data/sig/ibex/generation_transaction_recovery.rbs +36 -0
  296. data/sig/ibex/generation_transaction_validation.rbs +65 -0
  297. data/sig/ibex/grammar_tests.rbs +93 -0
  298. data/sig/ibex/ir/automaton_ir.rbs +8 -2
  299. data/sig/ibex/ir/grammar_ir.rbs +75 -15
  300. data/sig/ibex/ir/lexer_ir.rbs +57 -0
  301. data/sig/ibex/ir/migration.rbs +34 -0
  302. data/sig/ibex/ir/serialize.rbs +23 -6
  303. data/sig/ibex/ir/validator/automaton.rbs +109 -0
  304. data/sig/ibex/ir/validator/base.rbs +65 -0
  305. data/sig/ibex/ir/validator/grammar.rbs +184 -0
  306. data/sig/ibex/ir/validator/lexer.rbs +37 -0
  307. data/sig/ibex/ir/validator.rbs +16 -0
  308. data/sig/ibex/ir.rbs +38 -4
  309. data/sig/ibex/lalr/build_metrics.rbs +20 -0
  310. data/sig/ibex/lalr/builder.rbs +95 -15
  311. data/sig/ibex/lalr/conflict_search.rbs +7 -3
  312. data/sig/ibex/lalr/counterexample.rbs +5 -2
  313. data/sig/ibex/lalr/direct_lookaheads.rbs +86 -0
  314. data/sig/ibex/lalr/ielr_partition.rbs +59 -0
  315. data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
  316. data/sig/ibex/lalr.rbs +6 -0
  317. data/sig/ibex/location.rbs +67 -0
  318. data/sig/ibex/lsp/document_handlers.rbs +24 -0
  319. data/sig/ibex/lsp/document_store.rbs +94 -0
  320. data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
  321. data/sig/ibex/lsp/document_store_validation.rbs +26 -0
  322. data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
  323. data/sig/ibex/lsp/navigation_handlers.rbs +30 -0
  324. data/sig/ibex/lsp/position_codec.rbs +40 -0
  325. data/sig/ibex/lsp/protocol_error.rbs +32 -0
  326. data/sig/ibex/lsp/request_handlers.rbs +26 -0
  327. data/sig/ibex/lsp/request_support.rbs +40 -0
  328. data/sig/ibex/lsp/server.rbs +55 -0
  329. data/sig/ibex/lsp/symbol_index.rbs +78 -0
  330. data/sig/ibex/lsp/symbol_index_builder.rbs +87 -0
  331. data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
  332. data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
  333. data/sig/ibex/lsp/symbol_occurrence.rbs +25 -0
  334. data/sig/ibex/lsp/transport.rbs +35 -0
  335. data/sig/ibex/lsp/workspace.rbs +41 -0
  336. data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
  337. data/sig/ibex/lsp.rbs +7 -0
  338. data/sig/ibex/normalize/declarations.rbs +31 -0
  339. data/sig/ibex/normalize/diagnostics.rbs +9 -0
  340. data/sig/ibex/normalize/expander.rbs +20 -14
  341. data/sig/ibex/normalize/expression.rbs +10 -10
  342. data/sig/ibex/normalize/inline_expansion.rbs +120 -0
  343. data/sig/ibex/normalize/inline_validation.rbs +40 -0
  344. data/sig/ibex/normalize/lexer.rbs +37 -0
  345. data/sig/ibex/normalize/named_references.rbs +20 -0
  346. data/sig/ibex/normalize/nodes.rbs +14 -0
  347. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +32 -0
  348. data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
  349. data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
  350. data/sig/ibex/normalize/parameter_validation.rbs +44 -0
  351. data/sig/ibex/normalize/parameters.rbs +46 -0
  352. data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
  353. data/sig/ibex/normalize.rbs +123 -18
  354. data/sig/ibex/racc_migration/checker.rbs +36 -0
  355. data/sig/ibex/racc_migration/harness.rbs +16 -0
  356. data/sig/ibex/racc_migration/report.rbs +53 -0
  357. data/sig/ibex/racc_migration.rbs +8 -0
  358. data/sig/ibex/rake_task.rbs +51 -0
  359. data/sig/ibex/samples.rbs +51 -0
  360. data/sig/ibex/table_simulation/result.rbs +32 -0
  361. data/sig/ibex/table_simulation/simulator.rbs +98 -0
  362. data/sig/ibex/table_simulation/step.rbs +40 -0
  363. data/sig/ibex/table_simulation/text.rbs +14 -0
  364. data/sig/ibex/table_simulation.rbs +7 -0
  365. data/sig/ibex/tables.rbs +0 -26
  366. data/sig/ibex/watch/runner.rbs +48 -0
  367. data/sig/ibex/watch/source_snapshot.rbs +42 -0
  368. data/sig/ibex/watch.rbs +7 -0
  369. data/sig/ibex.rbs +2 -0
  370. metadata +301 -16
  371. data/.rubocop.yml +0 -43
  372. data/CHANGELOG.md +0 -30
  373. data/Rakefile +0 -25
  374. data/Steepfile +0 -10
  375. data/docs/compat-notes.md +0 -37
  376. data/docs/lexer-coverage.md +0 -14
  377. data/docs/phase10-extensions.md +0 -27
  378. data/gemfiles/Gemfile +0 -7
  379. data/gemfiles/Gemfile.lock +0 -98
  380. data/lib/ibex/frontend/grammar.y +0 -156
  381. data/lib/ibex/runtime/parser.rb +0 -360
  382. data/lib/ibex/runtime.rb +0 -8
  383. data/sig/ibex/runtime/parser.rbs +0 -167
  384. data/sig/ibex/runtime.rbs +0 -6
@@ -0,0 +1,100 @@
1
+ # Generated from lib/ibex/coverage/report.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Coverage
5
+ # Versioned, mergeable runtime coverage result.
6
+ class Report
7
+ IDENTIFIER: String
8
+
9
+ SCHEMA_VERSION: Integer
10
+
11
+ MAX_DOCUMENT_BYTES: Integer
12
+
13
+ MAX_TOTAL: Integer
14
+
15
+ MAX_COUNT: Integer
16
+
17
+ ROOT_KEYS: Array[String]
18
+
19
+ TOTAL_KEYS: Array[String]
20
+
21
+ HIT_KEYS: Array[String]
22
+
23
+ attr_reader grammar_digest: String
24
+
25
+ attr_reader table_format_version: Integer
26
+
27
+ attr_reader state_count: Integer
28
+
29
+ attr_reader production_count: Integer
30
+
31
+ attr_reader sessions: Integer
32
+
33
+ attr_reader event_count: Integer
34
+
35
+ attr_reader state_hits: Hash[Integer, Integer]
36
+
37
+ attr_reader production_hits: Hash[Integer, Integer]
38
+
39
+ # rubocop:disable Layout/LineLength
40
+ # @rbs (grammar_digest: String, table_format_version: Integer, state_count: Integer, production_count: Integer, sessions: Integer, event_count: Integer, state_hits: Hash[Integer, Integer], production_hits: Hash[Integer, Integer]) -> void
41
+ def initialize: (grammar_digest: String, table_format_version: Integer, state_count: Integer, production_count: Integer, sessions: Integer, event_count: Integer, state_hits: Hash[Integer, Integer], production_hits: Hash[Integer, Integer]) -> void
42
+
43
+ # @rbs () -> Hash[String, untyped]
44
+ def to_h: () -> Hash[String, untyped]
45
+
46
+ # @rbs (*untyped) -> String
47
+ def to_json: (*untyped) -> String
48
+
49
+ # @rbs (String path) -> Report
50
+ def self.load_file: (String path) -> Report
51
+
52
+ # @rbs (untyped value, source: String) -> Report
53
+ def self.from_h: (untyped value, source: String) -> Report
54
+
55
+ # @rbs (Array[Report] reports) -> Report
56
+ def self.merge: (Array[Report] reports) -> Report
57
+
58
+ private
59
+
60
+ # @rbs (untyped input) -> String
61
+ def validate_digest: (untyped input) -> String
62
+
63
+ # @rbs (untyped input, String name) -> Integer
64
+ def positive_integer: (untyped input, String name) -> Integer
65
+
66
+ # @rbs (untyped input, String name, minimum: Integer) -> Integer
67
+ def total_integer: (untyped input, String name, minimum: Integer) -> Integer
68
+
69
+ # @rbs (Hash[Integer, Integer] input, Integer total, String kind) -> Hash[Integer, Integer]
70
+ def validate_hits: (Hash[Integer, Integer] input, Integer total, String kind) -> Hash[Integer, Integer]
71
+
72
+ # @rbs (Hash[Integer, Integer] hits) -> Array[Hash[String, Integer]]
73
+ def hit_documents: (Hash[Integer, Integer] hits) -> Array[Hash[String, Integer]]
74
+
75
+ # @rbs () -> void
76
+ def validate_event_bounds: () -> void
77
+
78
+ # @rbs (untyped value, String source, String name) -> Hash[String, untyped]
79
+ private def self.string_hash: (untyped value, String source, String name) -> Hash[String, untyped]
80
+
81
+ # @rbs (untyped value, untyped total, String source, String kind) -> Hash[Integer, Integer]
82
+ private def self.parse_hits: (untyped value, untyped total, String source, String kind) -> Hash[Integer, Integer]
83
+
84
+ # @rbs (untyped entry, untyped total, Integer previous, String source, String kind) -> [Integer, Integer]
85
+ private def self.parse_hit: (untyped entry, untyped total, Integer previous, String source, String kind) -> [ Integer, Integer ]
86
+
87
+ # @rbs (Report expected, Report actual) -> void
88
+ private def self.ensure_compatible: (Report expected, Report actual) -> void
89
+
90
+ # @rbs (Array[Integer] values, String name) -> Integer
91
+ private def self.checked_sum: (Array[Integer] values, String name) -> Integer
92
+
93
+ # @rbs (Array[Hash[Integer, Integer]] collections, String kind) -> Hash[Integer, Integer]
94
+ private def self.merge_hits: (Array[Hash[Integer, Integer]] collections, String kind) -> Hash[Integer, Integer]
95
+
96
+ # @rbs (String source, String message) -> bot
97
+ private def self.invalid: (String source, String message) -> bot
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,68 @@
1
+ # Generated from lib/ibex/coverage/runtime_event_validator.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Coverage
5
+ # Dependency-free structural validation for runtime-event schema version 1.
6
+ module RuntimeEventValidator
7
+ TOKEN_KEYS: Array[String]
8
+
9
+ LOCATION_KEYS: Array[String]
10
+
11
+ VALIDATORS: Hash[String, Symbol]
12
+
13
+ # @rbs (Hash[String, untyped] document) -> bool
14
+ def self.valid?: (Hash[String, untyped] document) -> bool
15
+
16
+ # @rbs (Hash[String, untyped] data) -> bool
17
+ private def self.valid_start?: (Hash[String, untyped] data) -> bool
18
+
19
+ # @rbs (Hash[String, untyped] data) -> bool
20
+ private def self.valid_shift?: (Hash[String, untyped] data) -> bool
21
+
22
+ # @rbs (Hash[String, untyped] data) -> bool
23
+ private def self.valid_reduce?: (Hash[String, untyped] data) -> bool
24
+
25
+ # @rbs (Hash[String, untyped] data, reasons: Array[String]) -> bool
26
+ private def self.valid_token_event?: (Hash[String, untyped] data, reasons: Array[String]) -> bool
27
+
28
+ # @rbs (Hash[String, untyped] data) -> bool
29
+ private def self.valid_error?: (Hash[String, untyped] data) -> bool
30
+
31
+ # @rbs (Hash[String, untyped] data) -> bool
32
+ private def self.valid_discard?: (Hash[String, untyped] data) -> bool
33
+
34
+ # @rbs (Hash[String, untyped] data) -> bool
35
+ private def self.valid_reject?: (Hash[String, untyped] data) -> bool
36
+
37
+ # @rbs (Hash[String, untyped] data) -> bool
38
+ private def self.valid_recover?: (Hash[String, untyped] data) -> bool
39
+
40
+ # @rbs (Hash[String, untyped] data) -> bool
41
+ private def self.valid_accept?: (Hash[String, untyped] data) -> bool
42
+
43
+ # @rbs (Hash[String, untyped] data) -> bool
44
+ private def self.valid_token_fields?: (Hash[String, untyped] data) -> bool
45
+
46
+ # @rbs (untyped value) -> bool
47
+ private def self.summary?: (untyped value) -> bool
48
+
49
+ # @rbs (untyped value) -> bool
50
+ private def self.composite_summary?: (untyped value) -> bool
51
+
52
+ # @rbs (untyped value) -> bool
53
+ private def self.location?: (untyped value) -> bool
54
+
55
+ # @rbs (Hash[String, untyped] data, Array[String] keys) -> bool
56
+ private def self.exact_keys?: (Hash[String, untyped] data, Array[String] keys) -> bool
57
+
58
+ # @rbs (untyped value) -> bool
59
+ private def self.integer?: (untyped value) -> bool
60
+
61
+ # @rbs (untyped value) -> bool
62
+ private def self.optional_integer?: (untyped value) -> bool
63
+
64
+ # @rbs (untyped value) -> bool
65
+ private def self.optional_string?: (untyped value) -> bool
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,7 @@
1
+ # Generated from lib/ibex/coverage.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Deterministic state and production coverage derived from runtime event streams.
5
+ module Coverage
6
+ end
7
+ end
@@ -0,0 +1,58 @@
1
+ # Generated from lib/ibex/error_messages/parser.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module ErrorMessages
5
+ # Strict line-oriented parser for the ibex-messages v1 and v2 formats.
6
+ class Parser
7
+ include ParserV2
8
+
9
+ ESCAPES: untyped
10
+
11
+ @lines: Array[String]
12
+
13
+ @file: String
14
+
15
+ # @rbs (String source, file: String) -> void
16
+ def initialize: (String source, file: String) -> void
17
+
18
+ # @rbs () -> Document
19
+ def parse: () -> Document
20
+
21
+ private
22
+
23
+ # @rbs () -> Document
24
+ def parse_v1: () -> Document
25
+
26
+ # @rbs () -> Integer
27
+ def validate_header: () -> Integer
28
+
29
+ # @rbs (Hash[Integer, Integer] declarations, Integer state, Integer index, String line) -> void
30
+ def reject_duplicate: (Hash[Integer, Integer] declarations, Integer state, Integer index, String line) -> void
31
+
32
+ # @rbs (Integer opening_index, Integer state, :active | :removed status) -> [Entry, Integer]
33
+ def parse_entry: (Integer opening_index, Integer state, :active | :removed status) -> [ Entry, Integer ]
34
+
35
+ # @rbs (Array[String] message_lines, Integer opening_index, Integer index, Integer state,
36
+ # :active | :removed status) -> [Entry, Integer]
37
+ def close_entry: (Array[String] message_lines, Integer opening_index, Integer index, Integer state, :active | :removed status) -> [ Entry, Integer ]
38
+
39
+ # @rbs (Array[String] message_lines, String line, Integer index) -> void
40
+ def read_entry_line: (Array[String] message_lines, String line, Integer index) -> void
41
+
42
+ # @rbs (String content, Integer line, Integer content_column) -> String
43
+ def decode_line: (String content, Integer line, Integer content_column) -> String
44
+
45
+ # @rbs (String line) -> bool
46
+ def ignorable?: (String line) -> bool
47
+
48
+ # @rbs () -> String
49
+ def top_level_expectation: () -> String
50
+
51
+ # @rbs (String line) -> Integer
52
+ def column: (String line) -> Integer
53
+
54
+ # @rbs (Integer line, Integer column, String message) -> bot
55
+ def fail_at: (Integer line, Integer column, String message) -> bot
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,67 @@
1
+ # Generated from lib/ibex/error_messages/parser_v2.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module ErrorMessages
5
+ # Sentence-keyed ibex-messages v2 parsing, mixed into Parser so both
6
+ # versions share UTF-8, escape, and positioned-diagnostic helpers.
7
+ module ParserV2
8
+ private def ignorable?: (String) -> bool
9
+
10
+ private def column: (String) -> Integer
11
+
12
+ private def fail_at: (Integer, Integer, String) -> bot
13
+
14
+ private def decode_line: (String, Integer, Integer) -> String
15
+
16
+ private
17
+
18
+ # @rbs () -> Document
19
+ def parse_v2: () -> Document
20
+
21
+ # @rbs (Entry entry, Array[Entry] entries, Hash[String, Integer] identifiers,
22
+ # Hash[String, Integer] keys) -> void
23
+ def record_v2_entry: (Entry entry, Array[Entry] entries, Hash[String, Integer] identifiers, Hash[String, Integer] keys) -> void
24
+
25
+ # @rbs (Integer opening_index) -> [Entry, Integer]
26
+ def parse_v2_entry: (Integer opening_index) -> [ Entry, Integer ]
27
+
28
+ # @rbs (Integer opening_index) ->
29
+ # [:active | :unreachable | :removed, Array[String]?, Integer?]
30
+ def parse_v2_opening: (Integer opening_index) -> [ :active | :unreachable | :removed, Array[String]?, Integer? ]
31
+
32
+ # @rbs (Integer opening_index, :active | :unreachable | :removed status, Array[String]? sentence,
33
+ # Integer? state) -> [Entry, Integer]
34
+ def read_v2_entry_body: (Integer opening_index, :active | :unreachable | :removed status, Array[String]? sentence, Integer? state) -> [ Entry, Integer ]
35
+
36
+ # @rbs (Integer opening_index, Integer index, :active | :unreachable | :removed status,
37
+ # Array[String]? sentence, Integer? state, String? error_id, String? entry_name,
38
+ # Array[String] message_lines) -> [Entry, Integer]
39
+ def close_v2_entry: (Integer opening_index, Integer index, :active | :unreachable | :removed status, Array[String]? sentence, Integer? state, String? error_id, String? entry_name, Array[String] message_lines) -> [ Entry, Integer ]
40
+
41
+ # @rbs (String line, Integer index, String? error_id, Integer? state, String? entry_name,
42
+ # Array[String] message_lines) -> [String?, Integer?, String?]
43
+ def read_v2_metadata: (String line, Integer index, String? error_id, Integer? state, String? entry_name, Array[String] message_lines) -> [ String?, Integer?, String? ]
44
+
45
+ # @rbs (Array[String] message_lines, String line, Integer index) -> void
46
+ def append_v2_message_line: (Array[String] message_lines, String line, Integer index) -> void
47
+
48
+ # @rbs (String source, Integer line) -> Array[String]
49
+ def parse_sentence: (String source, Integer line) -> Array[String]
50
+
51
+ # @rbs (String source, Integer index) -> Integer
52
+ def skip_sentence_space: (String source, Integer index) -> Integer
53
+
54
+ # @rbs (String source, Integer index, Integer line) -> [String, Integer]
55
+ def read_sentence_token: (String source, Integer index, Integer line) -> [ String, Integer ]
56
+
57
+ # @rbs (String source, Integer index, String quote, Integer line) -> Integer
58
+ def quoted_token_end: (String source, Integer index, String quote, Integer line) -> Integer
59
+
60
+ # @rbs (String source, Integer index, String quote, Integer line) -> Integer
61
+ def scan_quoted_token: (String source, Integer index, String quote, Integer line) -> Integer
62
+
63
+ # @rbs (Hash[String, Integer] declarations, String key, Integer line, String label) -> void
64
+ def reject_v2_duplicate: (Hash[String, Integer] declarations, String key, Integer line, String label) -> void
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/ibex/error_messages/renderer.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module ErrorMessages
5
+ # @rbs (IR::Automaton automaton, Array[Entry] entries) -> String
6
+ def self?.render_entries: (IR::Automaton automaton, Array[Entry] entries) -> String
7
+
8
+ # @rbs (Array[String] lines, IR::Automaton automaton, Entry entry) -> void
9
+ def append_entry: (Array[String] lines, IR::Automaton automaton, Entry entry) -> void
10
+
11
+ # @rbs (Entry entry) -> String
12
+ def entry_heading: (Entry entry) -> String
13
+
14
+ # @rbs (Array[String] lines, IR::Automaton automaton, Entry entry) -> void
15
+ def append_expected_tokens: (Array[String] lines, IR::Automaton automaton, Entry entry) -> void
16
+
17
+ # @rbs (String line) -> String
18
+ def encode_line: (String line) -> String
19
+
20
+ # @rbs (IR::Automaton automaton, IR::AutomatonState state) -> Array[String]
21
+ def expected_tokens: (IR::Automaton automaton, IR::AutomatonState state) -> Array[String]
22
+ end
23
+ end
@@ -0,0 +1,80 @@
1
+ # Generated from lib/ibex/error_messages/sentence_search.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module ErrorMessages
5
+ # Finds deterministic shortest token sentences that reach each syntax
6
+ # error state without running semantic actions.
7
+ class SentenceSearch
8
+ DEFAULT_MAX_TOKENS: Integer
9
+
10
+ DEFAULT_MAX_CONFIGURATIONS: Integer
11
+
12
+ class Witness < Struct[String | Array[String] | Integer]
13
+ attr_accessor entry(): String
14
+
15
+ attr_accessor tokens(): Array[String]
16
+
17
+ attr_accessor state(): Integer
18
+
19
+ def self.new: (?entry: String, ?tokens: Array[String], ?state: Integer) -> instance
20
+ | ({ ?entry: String, ?tokens: Array[String], ?state: Integer }) -> instance
21
+ end
22
+
23
+ @explored: Integer
24
+
25
+ @input_candidates: Array[IR::GrammarSymbol]
26
+
27
+ @candidates: Array[IR::GrammarSymbol]
28
+
29
+ @max_configurations: Integer
30
+
31
+ @max_tokens: Integer
32
+
33
+ @grammar: IR::Grammar
34
+
35
+ @automaton: IR::Automaton
36
+
37
+ # @rbs (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> void
38
+ def initialize: (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> void
39
+
40
+ # @rbs () -> Hash[Integer, Witness]
41
+ def all: () -> Hash[Integer, Witness]
42
+
43
+ # @rbs (Array[String] tokens, ?entry: String?) -> Integer?
44
+ def state_for: (Array[String] tokens, ?entry: String?) -> Integer?
45
+
46
+ private
47
+
48
+ # @rbs (Array[Integer] states, String name, bool final) ->
49
+ # [Symbol, Array[Integer] | Integer | nil]
50
+ def consume_sentence_token: (Array[Integer] states, String name, bool final) -> [ Symbol, Array[Integer] | Integer | nil ]
51
+
52
+ # @rbs (String name, bool final) -> IR::GrammarSymbol?
53
+ def sentence_symbol: (String name, bool final) -> IR::GrammarSymbol?
54
+
55
+ # @rbs () -> Array[IR::GrammarSymbol]
56
+ def grammar_terminals: () -> Array[IR::GrammarSymbol]
57
+
58
+ # @rbs (String entry, Integer initial_state, Hash[Integer, bool] targets,
59
+ # Hash[Integer, Witness] witnesses) -> void
60
+ def search_entry: (String entry, Integer initial_state, Hash[Integer, bool] targets, Hash[Integer, Witness] witnesses) -> void
61
+
62
+ # @rbs (String entry, Array[Integer] states, Array[String] prefix, Hash[Integer, bool] targets,
63
+ # Hash[Integer, Witness] witnesses) -> void
64
+ def collect_errors: (String entry, Array[Integer] states, Array[String] prefix, Hash[Integer, bool] targets, Hash[Integer, Witness] witnesses) -> void
65
+
66
+ # @rbs (Array[[Array[Integer], Array[String]]] queue, Hash[Array[Integer], bool] visited,
67
+ # Array[Integer] states, Array[String] prefix) -> void
68
+ def enqueue_shifts: (Array[[ Array[Integer], Array[String] ]] queue, Hash[Array[Integer], bool] visited, Array[Integer] states, Array[String] prefix) -> void
69
+
70
+ # @rbs (Array[Integer] initial, Integer token_id) -> [Symbol, Array[Integer] | Integer | nil]
71
+ def advance: (Array[Integer] initial, Integer token_id) -> [ Symbol, Array[Integer] | Integer | nil ]
72
+
73
+ # @rbs (Array[Integer] states, Integer production_id) -> Array[Integer]?
74
+ def reduce_stack: (Array[Integer] states, Integer production_id) -> Array[Integer]?
75
+
76
+ # @rbs () -> void
77
+ def count_configuration!: () -> void
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,43 @@
1
+ # Generated from lib/ibex/error_messages/update.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module ErrorMessages
5
+ # @rbs (IR::Automaton automaton, ?existing: Document?, ?max_tokens: Integer,
6
+ # ?max_configurations: Integer) -> String
7
+ def self?.render: (IR::Automaton automaton, ?existing: Document?, ?max_tokens: Integer, ?max_configurations: Integer) -> String
8
+
9
+ # @rbs (IR::Automaton automaton, ?existing: Document?, ?max_tokens: Integer,
10
+ # ?max_configurations: Integer) -> Update
11
+ def self?.update: (IR::Automaton automaton, ?existing: Document?, ?max_tokens: Integer, ?max_configurations: Integer) -> Update
12
+
13
+ # @rbs (Array[Entry] entries, Hash[Integer, bool] covered,
14
+ # Hash[Integer, SentenceSearch::Witness] witnesses, Array[String] uncovered, Integer next_id) -> void
15
+ def self?.add_uncovered_entries: (Array[Entry] entries, Hash[Integer, bool] covered, Hash[Integer, SentenceSearch::Witness] witnesses, Array[String] uncovered, Integer next_id) -> void
16
+
17
+ # @rbs (Document document, SentenceSearch search, Hash[Integer, SentenceSearch::Witness] witnesses,
18
+ # Hash[Symbol, Array[String]] classifications, Integer next_id) ->
19
+ # [Array[Entry], Hash[Integer, bool], Integer]
20
+ def update_existing_entries: (Document document, SentenceSearch search, Hash[Integer, SentenceSearch::Witness] witnesses, Hash[Symbol, Array[String]] classifications, Integer next_id) -> [ Array[Entry], Hash[Integer, bool], Integer ]
21
+
22
+ # @rbs (Entry entry, SentenceSearch search, Array[Entry] entries, Hash[Integer, bool] covered,
23
+ # Hash[Symbol, Array[String]] classifications, Integer next_id) -> Integer
24
+ def update_sentence_entry: (Entry entry, SentenceSearch search, Array[Entry] entries, Hash[Integer, bool] covered, Hash[Symbol, Array[String]] classifications, Integer next_id) -> Integer
25
+
26
+ # @rbs (Document document, Hash[Integer, SentenceSearch::Witness] witnesses,
27
+ # Hash[Symbol, Array[String]] classifications, Integer next_id) ->
28
+ # [Array[Entry], Hash[Integer, bool], Integer]
29
+ def migrate_legacy_entries: (Document document, Hash[Integer, SentenceSearch::Witness] witnesses, Hash[Symbol, Array[String]] classifications, Integer next_id) -> [ Array[Entry], Hash[Integer, bool], Integer ]
30
+
31
+ # @rbs (Entry entry, Integer next_id) -> Entry
32
+ def with_error_id: (Entry entry, Integer next_id) -> Entry
33
+
34
+ # @rbs (Document document) -> Integer
35
+ def next_error_id: (Document document) -> Integer
36
+
37
+ # @rbs (Integer number) -> String
38
+ def format_error_id: (Integer number) -> String
39
+
40
+ # @rbs (Entry entry) -> [Integer, Integer, String]
41
+ def entry_sort_key: (Entry entry) -> [ Integer, Integer, String ]
42
+ end
43
+ end
@@ -0,0 +1,85 @@
1
+ # Generated from lib/ibex/error_messages.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Parses, validates, and deterministically updates example-keyed syntax
5
+ # error messages.
6
+ module ErrorMessages
7
+ HEADER_V1: ::String
8
+
9
+ HEADER: ::String
10
+
11
+ # One active or archived error-sentence entry with its source line.
12
+ class Entry
13
+ attr_reader state: Integer?
14
+
15
+ attr_reader status: :active | :unreachable | :removed
16
+
17
+ attr_reader message: String?
18
+
19
+ attr_reader line: Integer
20
+
21
+ attr_reader sentence: Array[String]?
22
+
23
+ attr_reader error_id: String?
24
+
25
+ attr_reader entry: String?
26
+
27
+ # @rbs (state: Integer?, status: :active | :unreachable | :removed, message: String?, line: Integer,
28
+ # ?sentence: Array[String]?, ?error_id: String?, ?entry: String?) -> void
29
+ def initialize: (state: Integer?, status: :active | :unreachable | :removed, message: String?, line: Integer, ?sentence: Array[String]?, ?error_id: String?, ?entry: String?) -> void
30
+ end
31
+
32
+ # Immutable parsed messages document.
33
+ class Document
34
+ attr_reader version: Integer
35
+
36
+ attr_reader entries: Array[Entry]
37
+
38
+ # @rbs (entries: Array[Entry], ?version: Integer) -> void
39
+ def initialize: (entries: Array[Entry], ?version: Integer) -> void
40
+ end
41
+
42
+ # Deterministic update output and review classifications.
43
+ class Update
44
+ attr_reader source: String
45
+
46
+ attr_reader uncovered: Array[String]
47
+
48
+ attr_reader unreachable: Array[String]
49
+
50
+ attr_reader moved: Array[String]
51
+
52
+ # @rbs (source: String, uncovered: Array[String], unreachable: Array[String], moved: Array[String]) -> void
53
+ def initialize: (source: String, uncovered: Array[String], unreachable: Array[String], moved: Array[String]) -> void
54
+ end
55
+
56
+ # @rbs (String source, file: String) -> Document
57
+ def self?.parse: (String source, file: String) -> Document
58
+
59
+ # @rbs (String path) -> Document
60
+ def self?.load: (String path) -> Document
61
+
62
+ # @rbs (IR::Automaton automaton) -> Array[IR::AutomatonState]
63
+ def self?.error_states: (IR::Automaton automaton) -> Array[IR::AutomatonState]
64
+
65
+ # @rbs (Document document, IR::Automaton automaton, file: String) -> Hash[Integer, String]
66
+ def self?.messages_for: (Document document, IR::Automaton automaton, file: String) -> Hash[Integer, String]
67
+
68
+ # @rbs (Document document, IR::Automaton automaton, file: String) ->
69
+ # Hash[Integer, { id: String, message: String }]
70
+ def self?.records_for: (Document document, IR::Automaton automaton, file: String) -> Hash[Integer, { id: String, message: String }]
71
+
72
+ # @rbs (Document document, IR::Automaton automaton, file: String) ->
73
+ # Hash[Integer, { id: String, message: String }]
74
+ def self?.legacy_records_for: (Document document, IR::Automaton automaton, file: String) -> Hash[Integer, { id: String, message: String }]
75
+
76
+ # @rbs (IR::Automaton automaton) -> Array[IR::GrammarSymbol]
77
+ def ordinary_terminals: (IR::Automaton automaton) -> Array[IR::GrammarSymbol]
78
+
79
+ # @rbs (IR::parser_action? action) -> bool
80
+ def error_action?: (IR::parser_action? action) -> bool
81
+
82
+ # @rbs (String file, Integer line, Integer column, String message) -> bot
83
+ def fail_at: (String file, Integer line, Integer column, String message) -> bot
84
+ end
85
+ end