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,308 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/ydah/ibex/main/schema/runtime-event-v1.schema.json",
4
+ "title": "Ibex runtime event v1",
5
+ "type": "object",
6
+ "required": [
7
+ "ibex_runtime_event",
8
+ "schema_version",
9
+ "sequence",
10
+ "event",
11
+ "data"
12
+ ],
13
+ "properties": {
14
+ "ibex_runtime_event": { "const": "runtime-event" },
15
+ "schema_version": { "const": 1 },
16
+ "sequence": { "type": "integer", "minimum": 1 },
17
+ "event": {
18
+ "enum": [
19
+ "start",
20
+ "shift",
21
+ "reduce",
22
+ "error",
23
+ "recover",
24
+ "discard",
25
+ "accept",
26
+ "reject",
27
+ "cst_built",
28
+ "cst_fallback",
29
+ "cst_reuse"
30
+ ]
31
+ },
32
+ "data": { "type": "object", "maxProperties": 16 }
33
+ },
34
+ "additionalProperties": false,
35
+ "oneOf": [
36
+ {
37
+ "properties": {
38
+ "event": { "const": "start" },
39
+ "data": { "$ref": "#/$defs/start" }
40
+ }
41
+ },
42
+ {
43
+ "properties": {
44
+ "event": { "const": "shift" },
45
+ "data": { "$ref": "#/$defs/shift" }
46
+ }
47
+ },
48
+ {
49
+ "properties": {
50
+ "event": { "const": "reduce" },
51
+ "data": { "$ref": "#/$defs/reduce" }
52
+ }
53
+ },
54
+ {
55
+ "properties": {
56
+ "event": { "const": "error" },
57
+ "data": { "$ref": "#/$defs/error" }
58
+ }
59
+ },
60
+ {
61
+ "properties": {
62
+ "event": { "const": "recover" },
63
+ "data": { "$ref": "#/$defs/recover" }
64
+ }
65
+ },
66
+ {
67
+ "properties": {
68
+ "event": { "const": "discard" },
69
+ "data": { "$ref": "#/$defs/discard" }
70
+ }
71
+ },
72
+ {
73
+ "properties": {
74
+ "event": { "const": "accept" },
75
+ "data": { "$ref": "#/$defs/accept" }
76
+ }
77
+ },
78
+ {
79
+ "properties": {
80
+ "event": { "const": "reject" },
81
+ "data": { "$ref": "#/$defs/reject" }
82
+ }
83
+ },
84
+ {
85
+ "properties": {
86
+ "event": { "const": "cst_built" },
87
+ "data": { "$ref": "#/$defs/cst_built" }
88
+ }
89
+ },
90
+ {
91
+ "properties": {
92
+ "event": { "const": "cst_fallback" },
93
+ "data": { "$ref": "#/$defs/cst_fallback" }
94
+ }
95
+ },
96
+ {
97
+ "properties": {
98
+ "event": { "const": "cst_reuse" },
99
+ "data": { "$ref": "#/$defs/cst_reuse" }
100
+ }
101
+ }
102
+ ],
103
+ "$defs": {
104
+ "summary": {
105
+ "oneOf": [
106
+ { "type": "null" },
107
+ { "type": "boolean" },
108
+ { "type": "number" },
109
+ { "type": "string", "maxLength": 256 },
110
+ {
111
+ "type": "array",
112
+ "maxItems": 17,
113
+ "items": { "$ref": "#/$defs/summary" }
114
+ },
115
+ {
116
+ "type": "object",
117
+ "maxProperties": 17,
118
+ "additionalProperties": { "$ref": "#/$defs/summary" }
119
+ }
120
+ ]
121
+ },
122
+ "location": {
123
+ "oneOf": [
124
+ { "type": "null" },
125
+ {
126
+ "type": "object",
127
+ "properties": {
128
+ "file": { "$ref": "#/$defs/summary" },
129
+ "line": { "$ref": "#/$defs/summary" },
130
+ "column": { "$ref": "#/$defs/summary" },
131
+ "end_line": { "$ref": "#/$defs/summary" },
132
+ "end_column": { "$ref": "#/$defs/summary" }
133
+ },
134
+ "additionalProperties": false
135
+ },
136
+ {
137
+ "type": "object",
138
+ "required": ["unavailable"],
139
+ "properties": {
140
+ "unavailable": { "type": "string" }
141
+ },
142
+ "additionalProperties": false
143
+ }
144
+ ]
145
+ },
146
+ "token_fields": {
147
+ "type": "object",
148
+ "required": ["state", "token_id", "token", "value", "location"],
149
+ "properties": {
150
+ "state": { "type": "integer" },
151
+ "token_id": { "type": ["integer", "null"] },
152
+ "token": { "$ref": "#/$defs/summary" },
153
+ "value": { "$ref": "#/$defs/summary" },
154
+ "location": { "$ref": "#/$defs/location" }
155
+ }
156
+ },
157
+ "start": {
158
+ "type": "object",
159
+ "required": [
160
+ "driver",
161
+ "initial_state",
162
+ "table_format_version",
163
+ "grammar_digest",
164
+ "state_count",
165
+ "production_count"
166
+ ],
167
+ "properties": {
168
+ "driver": { "enum": ["pull", "push"] },
169
+ "initial_state": { "type": "integer" },
170
+ "table_format_version": { "type": "integer" },
171
+ "grammar_digest": { "type": ["string", "null"] },
172
+ "state_count": { "type": ["integer", "null"] },
173
+ "production_count": { "type": ["integer", "null"] }
174
+ },
175
+ "additionalProperties": false
176
+ },
177
+ "shift": {
178
+ "allOf": [
179
+ { "$ref": "#/$defs/token_fields" },
180
+ {
181
+ "required": ["from_state"],
182
+ "properties": {
183
+ "from_state": { "type": "integer" }
184
+ }
185
+ }
186
+ ],
187
+ "unevaluatedProperties": false
188
+ },
189
+ "reduce": {
190
+ "type": "object",
191
+ "required": [
192
+ "production_id",
193
+ "lhs",
194
+ "rhs_length",
195
+ "pre_state",
196
+ "post_state",
197
+ "goto_state",
198
+ "result",
199
+ "location"
200
+ ],
201
+ "properties": {
202
+ "production_id": { "type": "integer" },
203
+ "lhs": { "type": "integer" },
204
+ "rhs_length": { "type": "integer", "minimum": 0 },
205
+ "pre_state": { "type": "integer" },
206
+ "post_state": { "type": "integer" },
207
+ "goto_state": { "type": "integer" },
208
+ "result": { "$ref": "#/$defs/summary" },
209
+ "location": { "$ref": "#/$defs/location" }
210
+ },
211
+ "additionalProperties": false
212
+ },
213
+ "error": {
214
+ "allOf": [
215
+ { "$ref": "#/$defs/token_fields" },
216
+ {
217
+ "required": ["reason"],
218
+ "properties": {
219
+ "reason": { "enum": ["syntax", "semantic"] }
220
+ }
221
+ }
222
+ ],
223
+ "unevaluatedProperties": false
224
+ },
225
+ "recover": {
226
+ "allOf": [
227
+ { "$ref": "#/$defs/token_fields" },
228
+ {
229
+ "required": ["from_state", "reason"],
230
+ "properties": {
231
+ "from_state": { "type": "integer" },
232
+ "reason": { "enum": ["syntax", "semantic"] }
233
+ }
234
+ }
235
+ ],
236
+ "unevaluatedProperties": false
237
+ },
238
+ "discard": {
239
+ "allOf": [
240
+ { "$ref": "#/$defs/token_fields" },
241
+ {
242
+ "required": ["reason"],
243
+ "properties": {
244
+ "reason": { "const": "recovery" }
245
+ }
246
+ }
247
+ ],
248
+ "unevaluatedProperties": false
249
+ },
250
+ "accept": {
251
+ "type": "object",
252
+ "required": ["state", "result", "reason"],
253
+ "properties": {
254
+ "state": { "type": "integer" },
255
+ "result": { "$ref": "#/$defs/summary" },
256
+ "reason": { "enum": ["table", "semantic"] }
257
+ },
258
+ "additionalProperties": false
259
+ },
260
+ "reject": {
261
+ "allOf": [
262
+ { "$ref": "#/$defs/token_fields" },
263
+ {
264
+ "required": ["reason"],
265
+ "properties": {
266
+ "reason": {
267
+ "enum": ["eof_during_recovery", "no_recovery_state"]
268
+ }
269
+ }
270
+ }
271
+ ],
272
+ "unevaluatedProperties": false
273
+ },
274
+ "cst_built": {
275
+ "type": "object",
276
+ "required": ["descendant_count", "full_width", "contains_error"],
277
+ "properties": {
278
+ "descendant_count": { "type": "integer", "minimum": 1 },
279
+ "full_width": { "type": "integer", "minimum": 0 },
280
+ "contains_error": { "type": "boolean" }
281
+ },
282
+ "additionalProperties": false
283
+ },
284
+ "cst_fallback": {
285
+ "type": "object",
286
+ "required": ["reason", "limit", "observed"],
287
+ "properties": {
288
+ "reason": {
289
+ "enum": ["memo_budget", "decomposition_budget", "memo_mismatch", "lexical_error"]
290
+ },
291
+ "limit": { "type": "integer", "minimum": 0 },
292
+ "observed": { "type": "integer", "minimum": 0 }
293
+ },
294
+ "additionalProperties": false
295
+ },
296
+ "cst_reuse": {
297
+ "type": "object",
298
+ "required": ["stage", "reused_tokens", "token_count", "reused_ratio"],
299
+ "properties": {
300
+ "stage": { "enum": ["lexical", "subtree"] },
301
+ "reused_tokens": { "type": "integer", "minimum": 0 },
302
+ "token_count": { "type": "integer", "minimum": 0 },
303
+ "reused_ratio": { "type": "number", "minimum": 0, "maximum": 1 }
304
+ },
305
+ "additionalProperties": false
306
+ }
307
+ }
308
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/ydah/ibex/main/schema/table-simulation-v1.schema.json",
4
+ "title": "Ibex table simulation v1",
5
+ "type": "object",
6
+ "required": [
7
+ "ibex_table_simulation",
8
+ "schema_version",
9
+ "grammar_digest",
10
+ "algorithm",
11
+ "tokens",
12
+ "status",
13
+ "steps"
14
+ ],
15
+ "properties": {
16
+ "ibex_table_simulation": { "const": "table-simulation" },
17
+ "schema_version": { "const": 1 },
18
+ "grammar_digest": {
19
+ "type": "string",
20
+ "pattern": "^sha256:[0-9a-f]{64}$"
21
+ },
22
+ "algorithm": { "enum": ["slr", "lalr1", "ielr1", "lr1"] },
23
+ "tokens": {
24
+ "type": "array",
25
+ "items": { "type": "string" },
26
+ "maxItems": 100000
27
+ },
28
+ "status": { "enum": ["accepted", "error"] },
29
+ "steps": {
30
+ "type": "array",
31
+ "maxItems": 100000,
32
+ "items": { "$ref": "#/$defs/step" }
33
+ }
34
+ },
35
+ "additionalProperties": false,
36
+ "$defs": {
37
+ "step": {
38
+ "type": "object",
39
+ "required": [
40
+ "sequence",
41
+ "state",
42
+ "token_id",
43
+ "token",
44
+ "action",
45
+ "action_source",
46
+ "production_id",
47
+ "lhs",
48
+ "rhs_length",
49
+ "target_state",
50
+ "stack_depth_before",
51
+ "stack_depth_after"
52
+ ],
53
+ "properties": {
54
+ "sequence": { "type": "integer", "minimum": 1 },
55
+ "state": { "type": "integer", "minimum": 0 },
56
+ "token_id": { "type": "integer", "minimum": 0 },
57
+ "token": { "type": "string" },
58
+ "action": { "enum": ["shift", "reduce", "accept", "error"] },
59
+ "action_source": { "enum": ["explicit", "default", "implicit"] },
60
+ "production_id": { "type": ["integer", "null"], "minimum": 0 },
61
+ "lhs": { "type": ["string", "null"] },
62
+ "rhs_length": { "type": ["integer", "null"], "minimum": 0 },
63
+ "target_state": { "type": ["integer", "null"], "minimum": 0 },
64
+ "stack_depth_before": { "type": "integer", "minimum": 1 },
65
+ "stack_depth_after": { "type": "integer", "minimum": 1 }
66
+ },
67
+ "additionalProperties": false
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,37 @@
1
+ # Generated from lib/ibex/artifact_set.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # One fully rendered file in a parser generation.
5
+ class Artifact
6
+ attr_reader kind: Symbol
7
+
8
+ attr_reader path: String
9
+
10
+ attr_reader content: String
11
+
12
+ attr_reader mode: Integer?
13
+
14
+ # @rbs (kind: Symbol, path: String, content: String, ?mode: Integer?) -> void
15
+ def initialize: (kind: Symbol, path: String, content: String, ?mode: Integer?) -> void
16
+ end
17
+
18
+ # A generation's rendered outputs before any target is changed.
19
+ class ArtifactSet
20
+ include Enumerable[Artifact]
21
+
22
+ # @rbs () -> void
23
+ def initialize: () -> void
24
+
25
+ # @rbs (kind: Symbol, path: String, content: String, ?mode: Integer?) -> Artifact
26
+ def add: (kind: Symbol, path: String, content: String, ?mode: Integer?) -> Artifact
27
+
28
+ def each: () -> Enumerator[Artifact, ArtifactSet]
29
+ | () { (Artifact) -> void } -> ArtifactSet
30
+
31
+ # @rbs () -> Array[Artifact]
32
+ def to_a: () -> Array[Artifact]
33
+
34
+ # @rbs () -> bool
35
+ def empty?: () -> bool
36
+ end
37
+ end
@@ -0,0 +1,22 @@
1
+ # Generated from lib/ibex/cli/ambiguity.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Bounded grammar ambiguity checking for CI and human inspection.
5
+ module CLIAmbiguity
6
+ private def print_help: (OptionParser) -> Integer
7
+
8
+ private def input_path: (Array[String]) -> String
9
+
10
+ private def positive_counterexample_limit: (Integer, String) -> Integer
11
+
12
+ private def normalize_grammar_path: (String) -> IR::Grammar
13
+
14
+ private
15
+
16
+ # @rbs (Array[String] arguments) -> Integer
17
+ def run_check_command: (Array[String] arguments) -> Integer
18
+
19
+ # @rbs () -> OptionParser
20
+ def ambiguity_option_parser: () -> OptionParser
21
+ end
22
+ end
@@ -3,6 +3,8 @@
3
3
  module Ibex
4
4
  # Counterexample report limits and their command-line validation.
5
5
  module CLICounterexampleOptions
6
+ @options: cli_options
7
+
6
8
  DEFAULTS: Hash[Symbol, Integer]
7
9
 
8
10
  private
@@ -0,0 +1,53 @@
1
+ # Generated from lib/ibex/cli/coverage.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI collection, merge, and threshold checks for runtime coverage.
5
+ module CLICoverage
6
+ private def same_file_target?: (String left, String right) -> bool
7
+
8
+ type coverage_output_options = { paths: Array[String], ?output: String }
9
+
10
+ type coverage_check_options = { paths: Array[String], min_states: Float, min_productions: Float }
11
+
12
+ private
13
+
14
+ # @rbs (Array[String] arguments) -> Integer
15
+ def run_coverage_command: (Array[String] arguments) -> Integer
16
+
17
+ # @rbs (Array[String] arguments) -> Integer
18
+ def run_coverage_collect: (Array[String] arguments) -> Integer
19
+
20
+ # @rbs (Array[String] arguments) -> Integer
21
+ def run_coverage_merge: (Array[String] arguments) -> Integer
22
+
23
+ # @rbs (Array[String] arguments) -> Integer
24
+ def run_coverage_check: (Array[String] arguments) -> Integer
25
+
26
+ # @rbs (Array[String] arguments, String command, String operands) -> coverage_output_options
27
+ def coverage_output_options: (Array[String] arguments, String command, String operands) -> coverage_output_options
28
+
29
+ # @rbs (Array[String] arguments) -> coverage_check_options
30
+ def coverage_check_options: (Array[String] arguments) -> coverage_check_options
31
+
32
+ # @rbs (Float value, String name) -> Float
33
+ def coverage_threshold: (Float value, String name) -> Float
34
+
35
+ # @rbs (Integer covered, Integer total) -> Float
36
+ def coverage_percentage: (Integer covered, Integer total) -> Float
37
+
38
+ # @rbs (Array[String] arguments, String command) -> String
39
+ def single_coverage_path: (Array[String] arguments, String command) -> String
40
+
41
+ # @rbs (Array[String] inputs, String? output) -> void
42
+ def reject_coverage_output_collision: (Array[String] inputs, String? output) -> void
43
+
44
+ # @rbs (Coverage::Report report, String? output) -> void
45
+ def write_coverage_report: (Coverage::Report report, String? output) -> void
46
+
47
+ # @rbs (String path, String source) -> void
48
+ def atomic_write_coverage: (String path, String source) -> void
49
+
50
+ # @rbs (String path) -> Integer
51
+ def coverage_file_mode: (String path) -> Integer
52
+ end
53
+ end
@@ -0,0 +1,28 @@
1
+ # Generated from lib/ibex/cli/debug.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Safe parser-table simulation subcommand.
5
+ module CLIDebug
6
+ type debug_options = { paths: Array[String], format: String, max_steps: Integer, max_stack: Integer }
7
+
8
+ private
9
+
10
+ # @rbs (Array[String] arguments) -> Integer
11
+ def run_debug_command: (Array[String] arguments) -> Integer
12
+
13
+ # @rbs (Array[String] arguments) -> debug_options
14
+ def debug_options: (Array[String] arguments) -> debug_options
15
+
16
+ # @rbs (Integer value, String name) -> Integer
17
+ def positive_debug_budget: (Integer value, String name) -> Integer
18
+
19
+ # @rbs (TableSimulation::Simulator simulator, String format) -> TableSimulation::Result
20
+ def simulate_debug_input: (TableSimulation::Simulator simulator, String format) -> TableSimulation::Result
21
+
22
+ # @rbs (TableSimulation::Result result, String format, steps_written: bool) -> void
23
+ def write_debug_result: (TableSimulation::Result result, String format, steps_written: bool) -> void
24
+
25
+ # @rbs (Array[TableSimulation::Step] steps) -> void
26
+ def write_debug_steps: (Array[TableSimulation::Step] steps) -> void
27
+ end
28
+ end
@@ -0,0 +1,38 @@
1
+ # Generated from lib/ibex/cli/diagnostics.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Batch frontend diagnostics subcommand.
5
+ module CLIDiagnostics
6
+ DIAGNOSTICS_SCHEMA_VERSION: Integer
7
+
8
+ DEFAULT_MAX_DIAGNOSTICS: Integer
9
+
10
+ type diagnostic_settings = { format: String, max_diagnostics: Integer, mode: Symbol, ?help: bool }
11
+
12
+ private def input_path: (Array[String]) -> String
13
+
14
+ private
15
+
16
+ # @rbs (Array[String] arguments) -> Integer
17
+ def run_diagnose_command: (Array[String] arguments) -> Integer
18
+
19
+ # Cross-file recovery is deliberately bounded to the first resolver error.
20
+ # @rbs (Frontend::ParseResult result, String path, Symbol mode) -> Frontend::ParseResult
21
+ def resolve_diagnostic_result: (Frontend::ParseResult result, String path, Symbol mode) -> Frontend::ParseResult
22
+
23
+ # @rbs (Ibex::Error error, String fallback_file) -> Frontend::Diagnostic
24
+ def resolution_diagnostic: (Ibex::Error error, String fallback_file) -> Frontend::Diagnostic
25
+
26
+ # @rbs (diagnostic_settings settings) -> OptionParser
27
+ def diagnostics_option_parser: (diagnostic_settings settings) -> OptionParser
28
+
29
+ # @rbs (String value) -> Integer
30
+ def positive_diagnostic_limit: (String value) -> Integer
31
+
32
+ # @rbs (Frontend::ParseResult result, format: String) -> void
33
+ def write_diagnostics: (Frontend::ParseResult result, format: String) -> void
34
+
35
+ # @rbs (Frontend::ParseResult result) -> Hash[String, untyped]
36
+ def diagnostics_document: (Frontend::ParseResult result) -> Hash[String, untyped]
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ # Generated from lib/ibex/cli/documentation.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Generates standalone grammar documentation from the canonical include closure.
5
+ module CLIDocumentation
6
+ type documentation_settings = { format: String, mode: Symbol, ?output: String, ?help: bool }
7
+
8
+ private def input_path: (Array[String]) -> String
9
+
10
+ private def same_file_target?: (String left, String right) -> bool
11
+
12
+ private def atomic_write_ir: (String path, String source) -> void
13
+
14
+ private
15
+
16
+ # @rbs (Array[String] arguments) -> Integer
17
+ def run_documentation_command: (Array[String] arguments) -> Integer
18
+
19
+ # @rbs (String output, Array[String] grammar_files) -> void
20
+ def reject_documentation_output_collision: (String output, Array[String] grammar_files) -> void
21
+
22
+ # @rbs (documentation_settings settings) -> OptionParser
23
+ def documentation_option_parser: (documentation_settings settings) -> OptionParser
24
+ end
25
+ end
@@ -0,0 +1,57 @@
1
+ # Generated from lib/ibex/cli/error_messages.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # CLI subcommand and generation-file handling for example-keyed errors.
5
+ module CLIErrorMessages
6
+ private def print_help: (OptionParser) -> Integer
7
+
8
+ private def input_path: (Array[String]) -> String
9
+
10
+ private def warning_categories: (String) -> Array[Symbol]
11
+
12
+ private def report_status: (String) -> void
13
+
14
+ private def handle_grammar_warnings: (IR::Grammar, String) -> void
15
+
16
+ private def build_automaton: (IR::Grammar, String) -> IR::Automaton
17
+
18
+ private def prepare_loaded_automaton: (IR::Automaton, String) -> void
19
+
20
+ private def default_output_path: (String, String) -> String
21
+
22
+ private def same_file_target?: (String, String) -> bool
23
+
24
+ private def normalize_grammar_path: (String) -> IR::Grammar
25
+
26
+ private def record_generation_input: (String, String) -> GenerationInput
27
+
28
+ private
29
+
30
+ # @rbs (Array[String] arguments) -> Integer
31
+ def run_error_messages_command: (Array[String] arguments) -> Integer
32
+
33
+ # @rbs () -> OptionParser
34
+ def error_messages_option_parser: () -> OptionParser
35
+
36
+ # @rbs (String input_path) -> IR::Automaton
37
+ def automaton_for_error_messages: (String input_path) -> IR::Automaton
38
+
39
+ # @rbs (String input_path) -> IR::Automaton
40
+ def automaton_from_ir_for_messages: (String input_path) -> IR::Automaton
41
+
42
+ # @rbs (IR::Automaton automaton, String input_path) -> void
43
+ def write_error_messages: (IR::Automaton automaton, String input_path) -> void
44
+
45
+ # @rbs () -> { max_tokens: Integer, max_configurations: Integer }
46
+ def error_message_search_limits: () -> { max_tokens: Integer, max_configurations: Integer }
47
+
48
+ # @rbs (Integer value, String option) -> Integer
49
+ def positive_messages_limit: (Integer value, String option) -> Integer
50
+
51
+ # @rbs (ErrorMessages::Update update) -> void
52
+ def write_error_message_update_report: (ErrorMessages::Update update) -> void
53
+
54
+ # @rbs (String path) -> Integer
55
+ def messages_file_mode: (String path) -> Integer
56
+ end
57
+ end
@@ -0,0 +1,25 @@
1
+ # Generated from lib/ibex/cli/explain.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Dedicated command-line view for selected parser conflicts.
5
+ module CLIExplain
6
+ private def print_help: (OptionParser) -> Integer
7
+
8
+ private def input_path: (Array[String]) -> String
9
+
10
+ private def positive_counterexample_limit: (Integer, String) -> Integer
11
+
12
+ private def normalize_grammar_path: (String) -> IR::Grammar
13
+
14
+ private
15
+
16
+ # @rbs (Array[String] arguments) -> Integer
17
+ def run_explain_command: (Array[String] arguments) -> Integer
18
+
19
+ # @rbs () -> OptionParser
20
+ def explain_option_parser: () -> OptionParser
21
+
22
+ # @rbs (OptionParser options) -> void
23
+ def add_explain_search_options: (OptionParser options) -> void
24
+ end
25
+ end