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.
- checksums.yaml +4 -4
- data/README.md +247 -104
- data/docs/architecture.md +322 -28
- data/docs/cst-migration.md +107 -0
- data/docs/cst.md +213 -0
- data/docs/development.md +129 -0
- data/docs/editor-setup.md +25 -0
- data/docs/error-ux.md +60 -0
- data/docs/grammar-reference.md +458 -18
- data/docs/lexer-migration.md +51 -0
- data/docs/racc-migration.md +34 -6
- data/docs/release-readiness.md +163 -0
- data/docs/stability.md +124 -0
- data/examples/README.md +60 -0
- data/examples/calculator.y +44 -0
- data/examples/csv.y +32 -0
- data/examples/ini.y +70 -0
- data/examples/json.y +48 -0
- data/examples/tiny_language.y +75 -0
- data/lib/ibex/analysis/sets.rb +5 -4
- data/lib/ibex/artifact_set.rb +63 -0
- data/lib/ibex/cli/ambiguity.rb +66 -0
- data/lib/ibex/cli/counterexample_options.rb +6 -2
- data/lib/ibex/cli/coverage.rb +173 -0
- data/lib/ibex/cli/debug.rb +106 -0
- data/lib/ibex/cli/diagnostics.rb +116 -0
- data/lib/ibex/cli/documentation.rb +67 -0
- data/lib/ibex/cli/error_messages.rb +177 -0
- data/lib/ibex/cli/explain.rb +76 -0
- data/lib/ibex/cli/formatting.rb +386 -0
- data/lib/ibex/cli/generation_artifacts.rb +138 -0
- data/lib/ibex/cli/generation_error_messages.rb +39 -0
- data/lib/ibex/cli/grammar_tests.rb +122 -0
- data/lib/ibex/cli/ir_tools.rb +184 -0
- data/lib/ibex/cli/lsp.rb +33 -0
- data/lib/ibex/cli/outputs.rb +91 -8
- data/lib/ibex/cli/racc_migration.rb +87 -0
- data/lib/ibex/cli/samples.rb +92 -0
- data/lib/ibex/cli/watch.rb +103 -0
- data/lib/ibex/cli.rb +506 -37
- data/lib/ibex/codegen/action_locations.rb +103 -0
- data/lib/ibex/codegen/action_method_source.rb +210 -0
- data/lib/ibex/codegen/action_source.rb +118 -0
- data/lib/ibex/codegen/ambiguity.rb +173 -0
- data/lib/ibex/codegen/cst_metadata.rb +171 -0
- data/lib/ibex/codegen/documentation.rb +170 -0
- data/lib/ibex/codegen/explain.rb +312 -0
- data/lib/ibex/codegen/generated_action_abi.rb +288 -0
- data/lib/ibex/codegen/html.rb +94 -10
- data/lib/ibex/codegen/mermaid.rb +43 -0
- data/lib/ibex/codegen/railroad.rb +197 -0
- data/lib/ibex/codegen/railroad_documentation.rb +59 -0
- data/lib/ibex/codegen/rbs.rb +323 -2
- data/lib/ibex/codegen/report.rb +46 -6
- data/lib/ibex/codegen/ruby.rb +334 -59
- data/lib/ibex/codegen/ruby_actions.rb +143 -0
- data/lib/ibex/codegen/ruby_ast.rb +121 -0
- data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
- data/lib/ibex/codegen/ruby_lexer.rb +83 -0
- data/lib/ibex/codegen/ruby_syntax.rb +90 -0
- data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
- data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
- data/lib/ibex/codegen/symbol_labels.rb +1 -1
- data/lib/ibex/coverage/collector.rb +188 -0
- data/lib/ibex/coverage/event_stream.rb +97 -0
- data/lib/ibex/coverage/report.rb +259 -0
- data/lib/ibex/coverage/runtime_event_validator.rb +160 -0
- data/lib/ibex/coverage.rb +13 -0
- data/lib/ibex/error_messages/parser.rb +159 -0
- data/lib/ibex/error_messages/parser_v2.rb +198 -0
- data/lib/ibex/error_messages/renderer.rb +65 -0
- data/lib/ibex/error_messages/sentence_search.rb +196 -0
- data/lib/ibex/error_messages/update.rb +169 -0
- data/lib/ibex/error_messages.rb +165 -0
- data/lib/ibex/frontend/ast.rb +145 -6
- data/lib/ibex/frontend/bootstrap_parser.rb +47 -4
- data/lib/ibex/frontend/diagnostic.rb +81 -0
- data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
- data/lib/ibex/frontend/dsl.rb +66 -7
- data/lib/ibex/frontend/formatter.rb +407 -0
- data/lib/ibex/frontend/generated_parser.rb +614 -190
- data/lib/ibex/frontend/generated_parser_base.rb +164 -30
- data/lib/ibex/frontend/generated_parser_includes.rb +61 -0
- data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
- data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
- data/lib/ibex/frontend/generation.rb +33 -0
- data/lib/ibex/frontend/lexer.rb +162 -10
- data/lib/ibex/frontend/lexer_recovery.rb +84 -0
- data/lib/ibex/frontend/parser/declarations.rb +247 -11
- data/lib/ibex/frontend/parser/parameters.rb +82 -0
- data/lib/ibex/frontend/parser/rules.rb +43 -6
- data/lib/ibex/frontend/parser.rb +182 -4
- data/lib/ibex/frontend/regenerator.rb +26 -1
- data/lib/ibex/frontend/resolution.rb +69 -0
- data/lib/ibex/frontend/resolver.rb +217 -0
- data/lib/ibex/frontend/rule_documentation.rb +103 -0
- data/lib/ibex/frontend/source_cursor.rb +132 -8
- data/lib/ibex/frontend/source_document.rb +229 -0
- data/lib/ibex/frontend/source_loader.rb +150 -0
- data/lib/ibex/frontend/source_span.rb +81 -0
- data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
- data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +216 -26
- data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
- data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
- data/lib/ibex/frontend/token_adapter.rb +8 -3
- data/lib/ibex/frontend.rb +13 -2
- data/lib/ibex/generation_input.rb +57 -0
- data/lib/ibex/generation_manifest.rb +200 -0
- data/lib/ibex/generation_transaction.rb +261 -0
- data/lib/ibex/generation_transaction_recovery.rb +109 -0
- data/lib/ibex/generation_transaction_validation.rb +196 -0
- data/lib/ibex/grammar_tests.rb +206 -0
- data/lib/ibex/ir/automaton_ir.rb +38 -5
- data/lib/ibex/ir/grammar_ir.rb +137 -24
- data/lib/ibex/ir/lexer_ir.rb +76 -0
- data/lib/ibex/ir/migration.rb +120 -0
- data/lib/ibex/ir/serialize.rb +110 -19
- data/lib/ibex/ir/validator/automaton.rb +345 -0
- data/lib/ibex/ir/validator/base.rb +129 -0
- data/lib/ibex/ir/validator/grammar.rb +604 -0
- data/lib/ibex/ir/validator/lexer.rb +113 -0
- data/lib/ibex/ir/validator.rb +62 -0
- data/lib/ibex/ir.rb +57 -4
- data/lib/ibex/lalr/build_metrics.rb +23 -0
- data/lib/ibex/lalr/builder.rb +379 -52
- data/lib/ibex/lalr/conflict.rb +1 -0
- data/lib/ibex/lalr/conflict_search.rb +11 -5
- data/lib/ibex/lalr/counterexample.rb +20 -5
- data/lib/ibex/lalr/direct_lookaheads.rb +236 -0
- data/lib/ibex/lalr/ielr_partition.rb +152 -0
- data/lib/ibex/lalr/on_error_reductions.rb +74 -0
- data/lib/ibex/lalr.rb +7 -0
- data/lib/ibex/location.rb +129 -0
- data/lib/ibex/lsp/document_handlers.rb +66 -0
- data/lib/ibex/lsp/document_store.rb +264 -0
- data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
- data/lib/ibex/lsp/document_store_validation.rb +61 -0
- data/lib/ibex/lsp/initialization_handlers.rb +78 -0
- data/lib/ibex/lsp/navigation_handlers.rb +56 -0
- data/lib/ibex/lsp/position_codec.rb +109 -0
- data/lib/ibex/lsp/protocol_error.rb +33 -0
- data/lib/ibex/lsp/request_handlers.rb +45 -0
- data/lib/ibex/lsp/request_support.rb +87 -0
- data/lib/ibex/lsp/server.rb +146 -0
- data/lib/ibex/lsp/symbol_index.rb +241 -0
- data/lib/ibex/lsp/symbol_index_builder.rb +267 -0
- data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
- data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
- data/lib/ibex/lsp/symbol_occurrence.rb +17 -0
- data/lib/ibex/lsp/transport.rb +118 -0
- data/lib/ibex/lsp/workspace.rb +127 -0
- data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
- data/lib/ibex/lsp.rb +32 -0
- data/lib/ibex/normalize/declarations.rb +140 -7
- data/lib/ibex/normalize/diagnostics.rb +50 -5
- data/lib/ibex/normalize/expander.rb +59 -55
- data/lib/ibex/normalize/expression.rb +60 -39
- data/lib/ibex/normalize/inline_expansion.rb +414 -0
- data/lib/ibex/normalize/inline_validation.rb +174 -0
- data/lib/ibex/normalize/lexer.rb +131 -0
- data/lib/ibex/normalize/named_references.rb +60 -0
- data/lib/ibex/normalize/nodes.rb +46 -0
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +69 -0
- data/lib/ibex/normalize/parameter_lowering.rb +126 -0
- data/lib/ibex/normalize/parameter_substitution.rb +125 -0
- data/lib/ibex/normalize/parameter_validation.rb +140 -0
- data/lib/ibex/normalize/parameters.rb +199 -0
- data/lib/ibex/normalize/recovery_declarations.rb +84 -0
- data/lib/ibex/normalize.rb +179 -14
- data/lib/ibex/racc_migration/checker.rb +122 -0
- data/lib/ibex/racc_migration/harness.rb +177 -0
- data/lib/ibex/racc_migration/report.rb +94 -0
- data/lib/ibex/racc_migration.rb +12 -0
- data/lib/ibex/rake_task.rb +116 -0
- data/lib/ibex/samples.rb +186 -0
- data/lib/ibex/table_simulation/result.rb +51 -0
- data/lib/ibex/table_simulation/simulator.rb +253 -0
- data/lib/ibex/table_simulation/step.rb +60 -0
- data/lib/ibex/table_simulation/text.rb +31 -0
- data/lib/ibex/table_simulation.rb +13 -0
- data/lib/ibex/tables.rb +9 -70
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex/watch/runner.rb +172 -0
- data/lib/ibex/watch/source_snapshot.rb +93 -0
- data/lib/ibex/watch.rb +11 -0
- data/lib/ibex.rb +25 -1
- data/schema/automaton-ir-v1.schema.json +401 -0
- data/schema/automaton-ir-v2.schema.json +58 -0
- data/schema/benchmark-v1.schema.json +212 -0
- data/schema/benchmark-v2.schema.json +61 -0
- data/schema/cst-v1.json +170 -0
- data/schema/error-ux-v1.schema.json +258 -0
- data/schema/explain-v1.schema.json +433 -0
- data/schema/frontend-diagnostics-v1.schema.json +154 -0
- data/schema/generation-manifest-v1.schema.json +115 -0
- data/schema/grammar-ir-v1.schema.json +426 -0
- data/schema/grammar-ir-v2.schema.json +779 -0
- data/schema/lexer-ir-v1.schema.json +215 -0
- data/schema/migration-check-v1.schema.json +60 -0
- data/schema/performance-comparison-v1.schema.json +395 -0
- data/schema/public-performance-comparison-v1.schema.json +506 -0
- data/schema/public-performance-profile-v1.schema.json +360 -0
- data/schema/runtime-coverage-v1.schema.json +86 -0
- data/schema/runtime-event-v1.schema.json +308 -0
- data/schema/table-simulation-v1.schema.json +70 -0
- data/sig/ibex/artifact_set.rbs +37 -0
- data/sig/ibex/cli/ambiguity.rbs +22 -0
- data/sig/ibex/cli/counterexample_options.rbs +2 -0
- data/sig/ibex/cli/coverage.rbs +53 -0
- data/sig/ibex/cli/debug.rbs +28 -0
- data/sig/ibex/cli/diagnostics.rbs +38 -0
- data/sig/ibex/cli/documentation.rbs +25 -0
- data/sig/ibex/cli/error_messages.rbs +57 -0
- data/sig/ibex/cli/explain.rbs +25 -0
- data/sig/ibex/cli/formatting.rbs +103 -0
- data/sig/ibex/cli/generation_artifacts.rbs +50 -0
- data/sig/ibex/cli/generation_error_messages.rbs +19 -0
- data/sig/ibex/cli/grammar_tests.rbs +36 -0
- data/sig/ibex/cli/ir_tools.rbs +51 -0
- data/sig/ibex/cli/lsp.rbs +14 -0
- data/sig/ibex/cli/outputs.rbs +17 -0
- data/sig/ibex/cli/racc_migration.rbs +30 -0
- data/sig/ibex/cli/samples.rbs +30 -0
- data/sig/ibex/cli/watch.rbs +43 -0
- data/sig/ibex/cli.rbs +104 -5
- data/sig/ibex/codegen/action_locations.rbs +45 -0
- data/sig/ibex/codegen/action_method_source.rbs +65 -0
- data/sig/ibex/codegen/action_source.rbs +50 -0
- data/sig/ibex/codegen/ambiguity.rbs +60 -0
- data/sig/ibex/codegen/cst_metadata.rbs +59 -0
- data/sig/ibex/codegen/documentation.rbs +50 -0
- data/sig/ibex/codegen/explain.rbs +85 -0
- data/sig/ibex/codegen/generated_action_abi.rbs +101 -0
- data/sig/ibex/codegen/html.rbs +18 -2
- data/sig/ibex/codegen/mermaid.rbs +16 -0
- data/sig/ibex/codegen/railroad.rbs +82 -0
- data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
- data/sig/ibex/codegen/rbs.rbs +84 -4
- data/sig/ibex/codegen/report.rbs +8 -0
- data/sig/ibex/codegen/ruby.rbs +97 -23
- data/sig/ibex/codegen/ruby_actions.rbs +54 -0
- data/sig/ibex/codegen/ruby_ast.rbs +34 -0
- data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
- data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
- data/sig/ibex/codegen/ruby_syntax.rbs +25 -0
- data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
- data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
- data/sig/ibex/coverage/collector.rbs +76 -0
- data/sig/ibex/coverage/event_stream.rbs +42 -0
- data/sig/ibex/coverage/report.rbs +100 -0
- data/sig/ibex/coverage/runtime_event_validator.rbs +68 -0
- data/sig/ibex/coverage.rbs +7 -0
- data/sig/ibex/error_messages/parser.rbs +58 -0
- data/sig/ibex/error_messages/parser_v2.rbs +67 -0
- data/sig/ibex/error_messages/renderer.rbs +23 -0
- data/sig/ibex/error_messages/sentence_search.rbs +80 -0
- data/sig/ibex/error_messages/update.rbs +43 -0
- data/sig/ibex/error_messages.rbs +85 -0
- data/sig/ibex/frontend/ast.rbs +208 -19
- data/sig/ibex/frontend/bootstrap_parser.rbs +11 -0
- data/sig/ibex/frontend/diagnostic.rbs +53 -0
- data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
- data/sig/ibex/frontend/dsl.rbs +33 -4
- data/sig/ibex/frontend/formatter.rbs +135 -0
- data/sig/ibex/frontend/generated_parser.rbs +218 -68
- data/sig/ibex/frontend/generated_parser_base.rbs +61 -10
- data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
- data/sig/ibex/frontend/generation.rbs +6 -0
- data/sig/ibex/frontend/lexer.rbs +49 -2
- data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
- data/sig/ibex/frontend/parser/declarations.rbs +54 -0
- data/sig/ibex/frontend/parser/parameters.rbs +28 -0
- data/sig/ibex/frontend/parser/rules.rbs +3 -0
- data/sig/ibex/frontend/parser.rbs +66 -0
- data/sig/ibex/frontend/regenerator.rbs +11 -0
- data/sig/ibex/frontend/resolution.rbs +33 -0
- data/sig/ibex/frontend/resolver.rbs +91 -0
- data/sig/ibex/frontend/rule_documentation.rbs +42 -0
- data/sig/ibex/frontend/source_cursor.rbs +36 -3
- data/sig/ibex/frontend/source_document.rbs +119 -0
- data/sig/ibex/frontend/source_loader.rbs +66 -0
- data/sig/ibex/frontend/source_span.rbs +53 -0
- data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
- data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +73 -5
- data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
- data/sig/ibex/frontend/token_adapter.rbs +5 -2
- data/sig/ibex/frontend.rbs +1 -1
- data/sig/ibex/generation_input.rbs +37 -0
- data/sig/ibex/generation_manifest.rbs +67 -0
- data/sig/ibex/generation_transaction.rbs +82 -0
- data/sig/ibex/generation_transaction_recovery.rbs +36 -0
- data/sig/ibex/generation_transaction_validation.rbs +65 -0
- data/sig/ibex/grammar_tests.rbs +93 -0
- data/sig/ibex/ir/automaton_ir.rbs +8 -2
- data/sig/ibex/ir/grammar_ir.rbs +75 -15
- data/sig/ibex/ir/lexer_ir.rbs +57 -0
- data/sig/ibex/ir/migration.rbs +34 -0
- data/sig/ibex/ir/serialize.rbs +23 -6
- data/sig/ibex/ir/validator/automaton.rbs +109 -0
- data/sig/ibex/ir/validator/base.rbs +65 -0
- data/sig/ibex/ir/validator/grammar.rbs +184 -0
- data/sig/ibex/ir/validator/lexer.rbs +37 -0
- data/sig/ibex/ir/validator.rbs +16 -0
- data/sig/ibex/ir.rbs +38 -4
- data/sig/ibex/lalr/build_metrics.rbs +20 -0
- data/sig/ibex/lalr/builder.rbs +95 -15
- data/sig/ibex/lalr/conflict_search.rbs +7 -3
- data/sig/ibex/lalr/counterexample.rbs +5 -2
- data/sig/ibex/lalr/direct_lookaheads.rbs +86 -0
- data/sig/ibex/lalr/ielr_partition.rbs +59 -0
- data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
- data/sig/ibex/lalr.rbs +6 -0
- data/sig/ibex/location.rbs +67 -0
- data/sig/ibex/lsp/document_handlers.rbs +24 -0
- data/sig/ibex/lsp/document_store.rbs +94 -0
- data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
- data/sig/ibex/lsp/document_store_validation.rbs +26 -0
- data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
- data/sig/ibex/lsp/navigation_handlers.rbs +30 -0
- data/sig/ibex/lsp/position_codec.rbs +40 -0
- data/sig/ibex/lsp/protocol_error.rbs +32 -0
- data/sig/ibex/lsp/request_handlers.rbs +26 -0
- data/sig/ibex/lsp/request_support.rbs +40 -0
- data/sig/ibex/lsp/server.rbs +55 -0
- data/sig/ibex/lsp/symbol_index.rbs +78 -0
- data/sig/ibex/lsp/symbol_index_builder.rbs +87 -0
- data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
- data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
- data/sig/ibex/lsp/symbol_occurrence.rbs +25 -0
- data/sig/ibex/lsp/transport.rbs +35 -0
- data/sig/ibex/lsp/workspace.rbs +41 -0
- data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
- data/sig/ibex/lsp.rbs +7 -0
- data/sig/ibex/normalize/declarations.rbs +31 -0
- data/sig/ibex/normalize/diagnostics.rbs +9 -0
- data/sig/ibex/normalize/expander.rbs +20 -14
- data/sig/ibex/normalize/expression.rbs +10 -10
- data/sig/ibex/normalize/inline_expansion.rbs +120 -0
- data/sig/ibex/normalize/inline_validation.rbs +40 -0
- data/sig/ibex/normalize/lexer.rbs +37 -0
- data/sig/ibex/normalize/named_references.rbs +20 -0
- data/sig/ibex/normalize/nodes.rbs +14 -0
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +32 -0
- data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
- data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
- data/sig/ibex/normalize/parameter_validation.rbs +44 -0
- data/sig/ibex/normalize/parameters.rbs +46 -0
- data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
- data/sig/ibex/normalize.rbs +123 -18
- data/sig/ibex/racc_migration/checker.rbs +36 -0
- data/sig/ibex/racc_migration/harness.rbs +16 -0
- data/sig/ibex/racc_migration/report.rbs +53 -0
- data/sig/ibex/racc_migration.rbs +8 -0
- data/sig/ibex/rake_task.rbs +51 -0
- data/sig/ibex/samples.rbs +51 -0
- data/sig/ibex/table_simulation/result.rbs +32 -0
- data/sig/ibex/table_simulation/simulator.rbs +98 -0
- data/sig/ibex/table_simulation/step.rbs +40 -0
- data/sig/ibex/table_simulation/text.rbs +14 -0
- data/sig/ibex/table_simulation.rbs +7 -0
- data/sig/ibex/tables.rbs +0 -26
- data/sig/ibex/watch/runner.rbs +48 -0
- data/sig/ibex/watch/source_snapshot.rbs +42 -0
- data/sig/ibex/watch.rbs +7 -0
- data/sig/ibex.rbs +2 -0
- metadata +301 -16
- data/.rubocop.yml +0 -43
- data/CHANGELOG.md +0 -30
- data/Rakefile +0 -25
- data/Steepfile +0 -10
- data/docs/compat-notes.md +0 -37
- data/docs/lexer-coverage.md +0 -14
- data/docs/phase10-extensions.md +0 -27
- data/gemfiles/Gemfile +0 -7
- data/gemfiles/Gemfile.lock +0 -98
- data/lib/ibex/frontend/grammar.y +0 -156
- data/lib/ibex/runtime/parser.rb +0 -360
- data/lib/ibex/runtime.rb +0 -8
- data/sig/ibex/runtime/parser.rbs +0 -167
- 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
|
|
@@ -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
|