ibex 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +95 -272
- data/docs/architecture.md +187 -35
- data/docs/bison-import.md +103 -0
- data/docs/comparison-policy.md +127 -0
- data/docs/configuration-model.md +59 -0
- data/docs/configuration-report.md +28 -0
- data/docs/conflict-explanation-reviews/v1/records/README.md +28 -0
- data/docs/conflict-explanation-study.md +62 -0
- data/docs/construction-profiling.md +157 -0
- data/docs/cst-migration.md +3 -4
- data/docs/cst.md +24 -0
- data/docs/decisions/0000-template.md +24 -0
- data/docs/decisions/0001-separate-ir-pipeline.md +34 -0
- data/docs/decisions/0002-opaque-user-code-boundary.md +32 -0
- data/docs/decisions/0003-self-hosted-grammar-frontend.md +32 -0
- data/docs/decisions/0004-shared-semantic-and-lossless-source-model.md +33 -0
- data/docs/decisions/0005-contained-grammar-composition.md +34 -0
- data/docs/decisions/0006-bounded-structural-grammar-lowering.md +32 -0
- data/docs/decisions/0007-shared-parser-construction-pipeline.md +33 -0
- data/docs/decisions/0008-versioned-runtime-package-boundary.md +36 -0
- data/docs/decisions/0009-isolated-parser-sessions.md +34 -0
- data/docs/decisions/0010-committed-runtime-observation.md +34 -0
- data/docs/decisions/0011-versioned-semantic-action-boundary.md +37 -0
- data/docs/decisions/0012-bounded-nonexecuting-analysis.md +37 -0
- data/docs/decisions/0013-transactional-generation-publication.md +37 -0
- data/docs/decisions/0014-versioned-generated-lexer.md +35 -0
- data/docs/decisions/0015-worker-isolated-browser-analysis.md +32 -0
- data/docs/decisions/0016-red-green-concrete-syntax.md +34 -0
- data/docs/decisions/0017-persistent-syntax-artifacts.md +35 -0
- data/docs/decisions/0018-conservative-incremental-syntax-reuse.md +38 -0
- data/docs/decisions/0019-runtime-syntax-session-boundary.md +51 -0
- data/docs/decisions/0020-grammar-ir-parser-contract.md +65 -0
- data/docs/decisions/0021-data-only-parser-table-sidecar.md +50 -0
- data/docs/decisions/0022-manifest-bound-verification-report.md +77 -0
- data/docs/decisions/0023-syntax-only-repair-results.md +48 -0
- data/docs/decisions/0024-direct-ielr-construction.md +42 -0
- data/docs/decisions/README.md +74 -0
- data/docs/declarative-configuration.md +262 -0
- data/docs/development.md +179 -2
- data/docs/direct-ielr-decision.md +120 -0
- data/docs/direct-multi-entry-decision.md +82 -0
- data/docs/editor-setup.md +2 -1
- data/docs/error-ux-review-rubric-v1.md +117 -0
- data/docs/error-ux-reviews/v1/records/README.md +22 -0
- data/docs/error-ux-round2-review-status-v1.json +27 -0
- data/docs/error-ux-round2-reviews/v1/records/README.md +30 -0
- data/docs/error-ux-round2-v1.json +1581 -0
- data/docs/error-ux-round2.md +111 -0
- data/docs/error-ux.md +54 -0
- data/docs/getting-started.md +80 -0
- data/docs/grammar-reference.md +184 -13
- data/docs/ielr-design.md +43 -0
- data/docs/ielr.md +92 -0
- data/docs/ja/bison-import.md +51 -0
- data/docs/ja/stable-api.md +53 -0
- data/docs/lexer-construction-profile.md +109 -0
- data/docs/lexer-migration.md +5 -0
- data/docs/maturity.md +128 -0
- data/docs/project-site-strategy.md +54 -0
- data/docs/racc-migration-evidence.md +45 -0
- data/docs/racc-migration.md +11 -0
- data/docs/release-readiness.md +126 -68
- data/docs/repair-semantics.md +123 -0
- data/docs/runtime-abi-evolution.md +307 -0
- data/docs/stability.md +144 -34
- data/docs/status.md +43 -0
- data/docs/syntax-sessions.md +183 -0
- data/docs/table-artifact.md +125 -0
- data/docs/test-interactions.md +219 -0
- data/docs/verification-report.md +137 -0
- data/docs/verifier-trust-boundary.md +199 -0
- data/docs/workloads.md +132 -0
- data/lib/ibex/analysis/digraph.rb +128 -0
- data/lib/ibex/analysis.rb +1 -0
- data/lib/ibex/bison_import/importer.rb +516 -0
- data/lib/ibex/bison_import/tokenizer.rb +260 -0
- data/lib/ibex/bison_import.rb +200 -0
- data/lib/ibex/bounded_subprocess.rb +171 -0
- data/lib/ibex/cli/ambiguity.rb +14 -5
- data/lib/ibex/cli/analysis.rb +134 -0
- data/lib/ibex/cli/bison_import.rb +121 -0
- data/lib/ibex/cli/config.rb +128 -0
- data/lib/ibex/cli/diagnostics.rb +31 -11
- data/lib/ibex/cli/documentation.rb +11 -8
- data/lib/ibex/cli/equiv.rb +169 -0
- data/lib/ibex/cli/error_messages.rb +11 -4
- data/lib/ibex/cli/explain.rb +14 -5
- data/lib/ibex/cli/fix.rb +203 -0
- data/lib/ibex/cli/formatting.rb +11 -10
- data/lib/ibex/cli/fuzz.rb +200 -0
- data/lib/ibex/cli/fuzz_regressions.rb +145 -0
- data/lib/ibex/cli/generation_artifacts.rb +53 -2
- data/lib/ibex/cli/generation_error_messages.rb +1 -1
- data/lib/ibex/cli/grammar_tests.rb +32 -14
- data/lib/ibex/cli/ir_tools.rb +5 -61
- data/lib/ibex/cli/outputs.rb +60 -33
- data/lib/ibex/cli/reduce.rb +202 -0
- data/lib/ibex/cli/reduce_reporting.rb +71 -0
- data/lib/ibex/cli/samples.rb +49 -23
- data/lib/ibex/cli/verify.rb +116 -0
- data/lib/ibex/cli/watch.rb +6 -5
- data/lib/ibex/cli.rb +357 -56
- data/lib/ibex/codegen/action_locations.rb +1 -1
- data/lib/ibex/codegen/action_method_source.rb +5 -6
- data/lib/ibex/codegen/action_source.rb +3 -2
- data/lib/ibex/codegen/ambiguity.rb +5 -4
- data/lib/ibex/codegen/explain.rb +123 -55
- data/lib/ibex/codegen/generated_action_abi.rb +10 -5
- data/lib/ibex/codegen/rbs.rb +15 -7
- data/lib/ibex/codegen/report.rb +25 -13
- data/lib/ibex/codegen/ruby.rb +28 -64
- data/lib/ibex/codegen/ruby_actions.rb +9 -6
- data/lib/ibex/codegen/ruby_syntax.rb +15 -9
- data/lib/ibex/configuration/analysis_grammar.rb +35 -0
- data/lib/ibex/configuration/explanation.rb +421 -0
- data/lib/ibex/configuration/inspector.rb +232 -0
- data/lib/ibex/configuration.rb +580 -0
- data/lib/ibex/coverage/collector.rb +21 -11
- data/lib/ibex/coverage/event_stream.rb +13 -7
- data/lib/ibex/coverage/report.rb +26 -18
- data/lib/ibex/coverage/runtime_event_validator.rb +30 -21
- data/lib/ibex/delta_reducer.rb +99 -0
- data/lib/ibex/diff.rb +140 -0
- data/lib/ibex/equiv/machine.rb +135 -0
- data/lib/ibex/equiv.rb +373 -0
- data/lib/ibex/fix.rb +557 -0
- data/lib/ibex/frontend/ast.rb +22 -2
- data/lib/ibex/frontend/bootstrap_parser.rb +6 -13
- data/lib/ibex/frontend/diagnostic.rb +1 -1
- data/lib/ibex/frontend/formatter.rb +72 -26
- data/lib/ibex/frontend/generated_parser.rb +147 -117
- data/lib/ibex/frontend/generated_parser_base.rb +7 -3
- data/lib/ibex/frontend/generated_parser_includes.rb +1 -11
- data/lib/ibex/frontend/generation.rb +1 -1
- data/lib/ibex/frontend/parser/declarations.rb +17 -2
- data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
- data/lib/ibex/frontend/regenerator.rb +1 -0
- data/lib/ibex/frontend/resolution.rb +2 -1
- data/lib/ibex/frontend/resolver.rb +1 -1
- data/lib/ibex/frontend/rule_documentation.rb +2 -1
- data/lib/ibex/frontend/source_cursor.rb +2 -2
- data/lib/ibex/frontend/source_span.rb +9 -1
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +38 -6
- data/lib/ibex/frontend/token_adapter.rb +10 -0
- data/lib/ibex/frontend.rb +1 -0
- data/lib/ibex/fuzz.rb +219 -0
- data/lib/ibex/generation_input.rb +1 -1
- data/lib/ibex/generation_manifest.rb +36 -25
- data/lib/ibex/generation_transaction.rb +1 -1
- data/lib/ibex/generation_transaction_recovery.rb +4 -4
- data/lib/ibex/generation_transaction_validation.rb +2 -2
- data/lib/ibex/grammar_tests.rb +1 -1
- data/lib/ibex/ir/automaton_ir.rb +61 -19
- data/lib/ibex/ir/grammar_ir.rb +76 -45
- data/lib/ibex/ir/lexer_ir.rb +5 -5
- data/lib/ibex/ir/parser_contract.rb +135 -0
- data/lib/ibex/ir/serialize.rb +203 -76
- data/lib/ibex/ir/validator/automaton.rb +64 -34
- data/lib/ibex/ir/validator/base.rb +51 -33
- data/lib/ibex/ir/validator/grammar.rb +113 -83
- data/lib/ibex/ir/validator/lexer.rb +2 -2
- data/lib/ibex/ir/validator.rb +2 -1
- data/lib/ibex/ir.rb +16 -3
- data/lib/ibex/lalr/build_metrics.rb +50 -2
- data/lib/ibex/lalr/builder.rb +191 -56
- data/lib/ibex/lalr/conflict_search.rb +15 -4
- data/lib/ibex/lalr/counterexample.rb +19 -14
- data/lib/ibex/lalr/direct_lookaheads.rb +110 -57
- data/lib/ibex/lalr/goto_follows.rb +229 -0
- data/lib/ibex/lalr/ielr/annotator.rb +214 -0
- data/lib/ibex/lalr/ielr/bits.rb +28 -0
- data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
- data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
- data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
- data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
- data/lib/ibex/lalr/ielr/split_state.rb +20 -0
- data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
- data/lib/ibex/lalr/ielr_partition.rb +22 -8
- data/lib/ibex/lalr/inadequacy_report.rb +50 -0
- data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
- data/lib/ibex/lalr/lr0_collection.rb +121 -0
- data/lib/ibex/lalr/unreachable_states.rb +80 -0
- data/lib/ibex/lalr.rb +52 -1
- data/lib/ibex/location.rb +3 -3
- data/lib/ibex/lsp/document_handlers.rb +9 -7
- data/lib/ibex/lsp/initialization_handlers.rb +9 -7
- data/lib/ibex/lsp/navigation_handlers.rb +25 -11
- data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
- data/lib/ibex/lsp/position_codec.rb +6 -2
- data/lib/ibex/lsp/request_handlers.rb +3 -2
- data/lib/ibex/lsp/request_support.rb +14 -7
- data/lib/ibex/lsp/server.rb +13 -11
- data/lib/ibex/lsp/symbol_index.rb +13 -13
- data/lib/ibex/lsp/symbol_index_builder.rb +30 -20
- data/lib/ibex/lsp/symbol_occurrence.rb +8 -2
- data/lib/ibex/lsp/transport.rb +13 -3
- data/lib/ibex/lsp/workspace.rb +5 -4
- data/lib/ibex/lsp/workspace_analyzer.rb +1 -1
- data/lib/ibex/lsp.rb +1 -0
- data/lib/ibex/messages/en.yml +28 -0
- data/lib/ibex/messages/ja.yml +28 -0
- data/lib/ibex/messages.rb +68 -0
- data/lib/ibex/metrics.rb +175 -0
- data/lib/ibex/normalize/declarations.rb +2 -0
- data/lib/ibex/normalize/diagnostics.rb +63 -38
- data/lib/ibex/normalize/expander.rb +5 -4
- data/lib/ibex/normalize/expression.rb +8 -6
- data/lib/ibex/normalize/grammar_builder.rb +26 -0
- data/lib/ibex/normalize/inline_expansion.rb +100 -49
- data/lib/ibex/normalize/lexer.rb +3 -3
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +11 -10
- data/lib/ibex/normalize/parameter_lowering.rb +40 -23
- data/lib/ibex/normalize/parameters.rb +31 -4
- data/lib/ibex/normalize/parser_configuration.rb +70 -0
- data/lib/ibex/normalize.rb +10 -20
- data/lib/ibex/racc_migration/report.rb +6 -3
- data/lib/ibex/rake_task.rb +1 -1
- data/lib/ibex/samples.rb +43 -13
- data/lib/ibex/table_artifact/builder.rb +266 -0
- data/lib/ibex/table_artifact/cst_projection.rb +70 -0
- data/lib/ibex/table_artifact/document.rb +39 -0
- data/lib/ibex/table_artifact/executor.rb +187 -0
- data/lib/ibex/table_artifact/serializer.rb +57 -0
- data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
- data/lib/ibex/table_artifact/validator/support.rb +86 -0
- data/lib/ibex/table_artifact/validator/tables.rb +238 -0
- data/lib/ibex/table_artifact/validator.rb +253 -0
- data/lib/ibex/table_artifact.rb +88 -0
- data/lib/ibex/table_simulation/result.rb +6 -2
- data/lib/ibex/table_simulation/step.rb +3 -1
- data/lib/ibex/tables.rb +14 -0
- data/lib/ibex/verifiable_generation_bundle.rb +86 -0
- data/lib/ibex/verification_report/builder.rb +159 -0
- data/lib/ibex/verification_report/canonical_ir.rb +123 -0
- data/lib/ibex/verification_report/logical_path.rb +68 -0
- data/lib/ibex/verification_report/validator.rb +329 -0
- data/lib/ibex/verification_report.rb +69 -0
- data/lib/ibex/verify/action_correspondence.rb +138 -0
- data/lib/ibex/verify/language_witness.rb +295 -0
- data/lib/ibex/verify/reference_collection.rb +190 -0
- data/lib/ibex/verify/result.rb +73 -0
- data/lib/ibex/verify/verifier.rb +598 -0
- data/lib/ibex/verify.rb +15 -0
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex/watch/runner.rb +10 -1
- data/lib/ibex/watch/source_snapshot.rb +13 -8
- data/lib/ibex.rb +10 -0
- data/schema/{automaton-ir-v1.schema.json → automaton-ir-definitions.schema.json} +6 -6
- data/schema/{automaton-ir-v2.schema.json → automaton-ir.schema.json} +14 -7
- data/schema/bison-import-v1.schema.json +106 -0
- data/schema/conflict-explanation-review-v1.schema.json +196 -0
- data/schema/conflict-explanation-study-v1.schema.json +528 -0
- data/schema/construction-profile-v1.schema.json +779 -0
- data/schema/diff-v1.schema.json +41 -0
- data/schema/direct-ielr-decision-v1.schema.json +200 -0
- data/schema/equiv-v1.schema.json +64 -0
- data/schema/error-ux-review-v1.schema.json +609 -0
- data/schema/error-ux-round2-review-v1.schema.json +191 -0
- data/schema/error-ux-round2-v1.schema.json +519 -0
- data/schema/explain-v1.schema.json +63 -1
- data/schema/fix-v1.schema.json +64 -0
- data/schema/fix-v2.schema.json +66 -0
- data/schema/fix-v3.schema.json +101 -0
- data/schema/fuzz-regression-v1.schema.json +79 -0
- data/schema/fuzz-v1.schema.json +114 -0
- data/schema/{grammar-ir-v2.schema.json → grammar-ir-extensions.schema.json} +20 -65
- data/schema/{grammar-ir-v1.schema.json → grammar-ir-foundation.schema.json} +3 -3
- data/schema/grammar-ir.schema.json +271 -0
- data/schema/ielr-benchmark-v1.schema.json +85 -0
- data/schema/lexer-profile-v1.schema.json +491 -0
- data/schema/metrics-v1.schema.json +60 -0
- data/schema/reduce-v1.schema.json +22 -0
- data/schema/reduce-v2.schema.json +63 -0
- data/schema/table-artifact-v1.schema.json +377 -0
- data/schema/verification-report-v1.schema.json +222 -0
- data/schema/verify-v1.schema.json +42 -0
- data/sig/ibex/analysis/digraph.rbs +19 -0
- data/sig/ibex/bison_import/importer.rbs +140 -0
- data/sig/ibex/bison_import/tokenizer.rbs +91 -0
- data/sig/ibex/bison_import.rbs +95 -0
- data/sig/ibex/bounded_subprocess.rbs +76 -0
- data/sig/ibex/cli/ambiguity.rbs +6 -0
- data/sig/ibex/cli/analysis.rbs +43 -0
- data/sig/ibex/cli/bison_import.rbs +32 -0
- data/sig/ibex/cli/config.rbs +35 -0
- data/sig/ibex/cli/diagnostics.rbs +16 -3
- data/sig/ibex/cli/documentation.rbs +5 -1
- data/sig/ibex/cli/equiv.rbs +49 -0
- data/sig/ibex/cli/error_messages.rbs +6 -0
- data/sig/ibex/cli/explain.rbs +6 -0
- data/sig/ibex/cli/fix.rbs +53 -0
- data/sig/ibex/cli/formatting.rbs +5 -1
- data/sig/ibex/cli/fuzz.rbs +47 -0
- data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
- data/sig/ibex/cli/generation_artifacts.rbs +21 -2
- data/sig/ibex/cli/generation_error_messages.rbs +2 -2
- data/sig/ibex/cli/grammar_tests.rbs +15 -3
- data/sig/ibex/cli/ir_tools.rbs +7 -19
- data/sig/ibex/cli/outputs.rbs +9 -3
- data/sig/ibex/cli/reduce.rbs +60 -0
- data/sig/ibex/cli/reduce_reporting.rbs +27 -0
- data/sig/ibex/cli/samples.rbs +8 -0
- data/sig/ibex/cli/verify.rbs +28 -0
- data/sig/ibex/cli/watch.rbs +2 -2
- data/sig/ibex/cli.rbs +79 -5
- data/sig/ibex/codegen/action_method_source.rbs +4 -4
- data/sig/ibex/codegen/explain.rbs +45 -25
- data/sig/ibex/codegen/generated_action_abi.rbs +14 -10
- data/sig/ibex/codegen/rbs.rbs +12 -10
- data/sig/ibex/codegen/report.rbs +12 -12
- data/sig/ibex/codegen/ruby.rbs +18 -15
- data/sig/ibex/codegen/ruby_actions.rbs +6 -6
- data/sig/ibex/codegen/ruby_syntax.rbs +10 -8
- data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
- data/sig/ibex/configuration/explanation.rbs +195 -0
- data/sig/ibex/configuration/inspector.rbs +53 -0
- data/sig/ibex/configuration.rbs +242 -0
- data/sig/ibex/coverage/collector.rbs +16 -14
- data/sig/ibex/coverage/event_stream.rbs +12 -10
- data/sig/ibex/coverage/report.rbs +20 -18
- data/sig/ibex/coverage/runtime_event_validator.rbs +38 -36
- data/sig/ibex/delta_reducer.rbs +38 -0
- data/sig/ibex/diff.rbs +47 -0
- data/sig/ibex/equiv/machine.rbs +54 -0
- data/sig/ibex/equiv.rbs +129 -0
- data/sig/ibex/fix.rbs +138 -0
- data/sig/ibex/frontend/ast.rbs +33 -7
- data/sig/ibex/frontend/bootstrap_parser.rbs +2 -0
- data/sig/ibex/frontend/diagnostic.rbs +2 -2
- data/sig/ibex/frontend/formatter.rbs +38 -30
- data/sig/ibex/frontend/generated_parser.rbs +87 -77
- data/sig/ibex/frontend/generated_parser_base.rbs +4 -2
- data/sig/ibex/frontend/parser/declarations.rbs +3 -0
- data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
- data/sig/ibex/frontend/resolution.rbs +3 -2
- data/sig/ibex/frontend/source_cursor.rbs +2 -2
- data/sig/ibex/frontend/source_span.rbs +5 -2
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +13 -1
- data/sig/ibex/frontend/token_adapter.rbs +6 -0
- data/sig/ibex/fuzz.rbs +71 -0
- data/sig/ibex/generation_input.rbs +2 -2
- data/sig/ibex/generation_manifest.rbs +35 -32
- data/sig/ibex/generation_transaction_recovery.rbs +2 -2
- data/sig/ibex/generation_transaction_validation.rbs +2 -2
- data/sig/ibex/grammar_tests.rbs +2 -2
- data/sig/ibex/ir/automaton_ir.rbs +30 -11
- data/sig/ibex/ir/grammar_ir.rbs +41 -27
- data/sig/ibex/ir/lexer_ir.rbs +8 -8
- data/sig/ibex/ir/parser_contract.rbs +69 -0
- data/sig/ibex/ir/serialize.rbs +63 -28
- data/sig/ibex/ir/validator/automaton.rbs +47 -44
- data/sig/ibex/ir/validator/base.rbs +35 -31
- data/sig/ibex/ir/validator/grammar.rbs +78 -67
- data/sig/ibex/ir/validator/lexer.rbs +4 -4
- data/sig/ibex/ir.rbs +9 -3
- data/sig/ibex/lalr/build_metrics.rbs +42 -2
- data/sig/ibex/lalr/builder.rbs +75 -24
- data/sig/ibex/lalr/conflict_search.rbs +5 -2
- data/sig/ibex/lalr/counterexample.rbs +17 -14
- data/sig/ibex/lalr/direct_lookaheads.rbs +35 -28
- data/sig/ibex/lalr/goto_follows.rbs +89 -0
- data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
- data/sig/ibex/lalr/ielr/bits.rbs +14 -0
- data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
- data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
- data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
- data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
- data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
- data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
- data/sig/ibex/lalr/ielr_partition.rbs +17 -5
- data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
- data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
- data/sig/ibex/lalr/lr0_collection.rbs +50 -0
- data/sig/ibex/lalr/unreachable_states.rbs +25 -0
- data/sig/ibex/lalr.rbs +11 -1
- data/sig/ibex/location.rbs +6 -6
- data/sig/ibex/lsp/document_handlers.rbs +8 -8
- data/sig/ibex/lsp/initialization_handlers.rbs +12 -12
- data/sig/ibex/lsp/navigation_handlers.rbs +15 -12
- data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
- data/sig/ibex/lsp/position_codec.rbs +8 -4
- data/sig/ibex/lsp/request_handlers.rbs +4 -4
- data/sig/ibex/lsp/request_support.rbs +8 -8
- data/sig/ibex/lsp/server.rbs +16 -16
- data/sig/ibex/lsp/symbol_index.rbs +20 -21
- data/sig/ibex/lsp/symbol_index_builder.rbs +9 -8
- data/sig/ibex/lsp/symbol_occurrence.rbs +11 -5
- data/sig/ibex/lsp/transport.rbs +18 -6
- data/sig/ibex/lsp/workspace.rbs +3 -2
- data/sig/ibex/lsp/workspace_analyzer.rbs +1 -1
- data/sig/ibex/messages.rbs +26 -0
- data/sig/ibex/metrics.rbs +50 -0
- data/sig/ibex/normalize/diagnostics.rbs +4 -4
- data/sig/ibex/normalize/expander.rbs +2 -2
- data/sig/ibex/normalize/expression.rbs +10 -8
- data/sig/ibex/normalize/grammar_builder.rbs +11 -0
- data/sig/ibex/normalize/inline_expansion.rbs +59 -50
- data/sig/ibex/normalize/lexer.rbs +4 -4
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +15 -14
- data/sig/ibex/normalize/parameter_lowering.rbs +18 -18
- data/sig/ibex/normalize/parameters.rbs +13 -8
- data/sig/ibex/normalize/parser_configuration.rbs +23 -0
- data/sig/ibex/normalize.rbs +11 -5
- data/sig/ibex/racc_migration/report.rbs +8 -6
- data/sig/ibex/rake_task.rbs +1 -1
- data/sig/ibex/samples.rbs +13 -4
- data/sig/ibex/table_artifact/builder.rbs +93 -0
- data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
- data/sig/ibex/table_artifact/document.rbs +27 -0
- data/sig/ibex/table_artifact/executor.rbs +66 -0
- data/sig/ibex/table_artifact/serializer.rbs +25 -0
- data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
- data/sig/ibex/table_artifact/validator/support.rbs +46 -0
- data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
- data/sig/ibex/table_artifact/validator.rbs +66 -0
- data/sig/ibex/table_artifact.rbs +32 -0
- data/sig/ibex/table_simulation/result.rbs +8 -4
- data/sig/ibex/table_simulation/step.rbs +4 -2
- data/sig/ibex/tables.rbs +10 -9
- data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
- data/sig/ibex/verification_report/builder.rbs +53 -0
- data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
- data/sig/ibex/verification_report/logical_path.rbs +34 -0
- data/sig/ibex/verification_report/validator.rbs +114 -0
- data/sig/ibex/verification_report.rbs +44 -0
- data/sig/ibex/verify/action_correspondence.rbs +50 -0
- data/sig/ibex/verify/language_witness.rbs +112 -0
- data/sig/ibex/verify/reference_collection.rbs +63 -0
- data/sig/ibex/verify/result.rbs +52 -0
- data/sig/ibex/verify/verifier.rbs +170 -0
- data/sig/ibex/verify.rbs +6 -0
- data/sig/ibex/watch/runner.rbs +12 -2
- data/sig/ibex/watch/source_snapshot.rbs +13 -9
- metadata +232 -12
- data/lib/ibex/ir/migration.rb +0 -120
- data/sig/ibex/ir/migration.rbs +0 -34
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/fix.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI entry point for bounded conflict-repair proposals.
|
|
5
|
+
# rubocop:disable Metrics/ModuleLength -- CLI option wiring and output projections share one closed contract.
|
|
6
|
+
module CLIFix
|
|
7
|
+
type fix_options = Hash[Symbol, untyped]
|
|
8
|
+
|
|
9
|
+
private def normalize_grammar_path: (String) -> IR::Grammar
|
|
10
|
+
|
|
11
|
+
private def activate_cli_feature: (Symbol) -> void
|
|
12
|
+
|
|
13
|
+
private def configuration_value: (String) -> untyped
|
|
14
|
+
|
|
15
|
+
private def set_configuration_option: (Symbol, Object?) -> void
|
|
16
|
+
|
|
17
|
+
private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
|
|
18
|
+
|
|
19
|
+
private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
24
|
+
def run_fix_command: (Array[String] arguments) -> Integer
|
|
25
|
+
|
|
26
|
+
# @rbs (String path, Hash[Symbol, untyped] settings) -> [String, Fix]
|
|
27
|
+
def prepare_fixer: (String path, Hash[Symbol, untyped] settings) -> [ String, Fix ]
|
|
28
|
+
|
|
29
|
+
# Keep command-local construction settings separate from reusable CLI state.
|
|
30
|
+
# @rbs (Array[String] arguments) -> Hash[Symbol, untyped]
|
|
31
|
+
def fix_options: (Array[String] arguments) -> Hash[Symbol, untyped]
|
|
32
|
+
|
|
33
|
+
# @rbs (OptionParser options, Hash[Symbol, untyped] settings) -> void
|
|
34
|
+
def add_fix_target_options: (OptionParser options, Hash[Symbol, untyped] settings) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs (OptionParser options, Hash[Symbol, untyped] settings) -> void
|
|
37
|
+
def add_fix_budget_options: (OptionParser options, Hash[Symbol, untyped] settings) -> void
|
|
38
|
+
|
|
39
|
+
# @rbs (IR::Grammar grammar, Hash[Symbol, untyped] settings) -> [IR::Grammar, Symbol, IR::Automaton]
|
|
40
|
+
def fixer_construction: (IR::Grammar grammar, Hash[Symbol, untyped] settings) -> [ IR::Grammar, Symbol, IR::Automaton ]
|
|
41
|
+
|
|
42
|
+
private def construct_analysis_automaton: (IR::Grammar, Hash[Symbol, Object?], Array[Symbol]) -> [ IR::Grammar, Symbol, IR::Automaton ]
|
|
43
|
+
|
|
44
|
+
# @rbs (String path, String original, Hash[Symbol, untyped] report, Fix fixer, String | true selector) -> void
|
|
45
|
+
def apply_fix!: (String path, String original, Hash[Symbol, untyped] report, Fix fixer, String | true selector) -> void
|
|
46
|
+
|
|
47
|
+
# @rbs (Array[Hash[Symbol, untyped]] proposals, String | true selector) -> Hash[Symbol, untyped]
|
|
48
|
+
def selected_fix_proposal: (Array[Hash[Symbol, untyped]] proposals, String | true selector) -> Hash[Symbol, untyped]
|
|
49
|
+
|
|
50
|
+
# @rbs (Hash[Symbol, untyped] report, String format) -> void
|
|
51
|
+
def write_fix_report: (Hash[Symbol, untyped] report, String format) -> void
|
|
52
|
+
end
|
|
53
|
+
end
|
data/sig/ibex/cli/formatting.rbs
CHANGED
|
@@ -4,7 +4,7 @@ module Ibex
|
|
|
4
4
|
# CLI coordination for deterministic, semantics-preserving grammar formatting.
|
|
5
5
|
# rubocop:disable Metrics/ModuleLength -- transaction lifecycle stays cohesive and auditable.
|
|
6
6
|
module CLIFormatting
|
|
7
|
-
type formatting_settings =
|
|
7
|
+
type formatting_settings = Hash[Symbol, untyped]
|
|
8
8
|
|
|
9
9
|
type formatting_result = { path: String, label: String, source: String, formatted: String }
|
|
10
10
|
|
|
@@ -12,6 +12,10 @@ module Ibex
|
|
|
12
12
|
|
|
13
13
|
type formatting_cleanup_result = { errors: Array[String], remaining: Array[String] }
|
|
14
14
|
|
|
15
|
+
private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
|
|
16
|
+
|
|
17
|
+
private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
|
|
18
|
+
|
|
15
19
|
private
|
|
16
20
|
|
|
17
21
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/fuzz.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI entry point for bounded grammar-derived differential fuzzing.
|
|
5
|
+
module CLIFuzz
|
|
6
|
+
include CLIFuzzRegressions
|
|
7
|
+
|
|
8
|
+
private def print_help: (OptionParser) -> Integer
|
|
9
|
+
|
|
10
|
+
private def input_path: (Array[String]) -> String
|
|
11
|
+
|
|
12
|
+
private def normalize_grammar_path: (String) -> IR::Grammar
|
|
13
|
+
|
|
14
|
+
private def handle_grammar_warnings: (IR::Grammar, String) -> void
|
|
15
|
+
|
|
16
|
+
private def warning_categories: (String) -> Array[Symbol]
|
|
17
|
+
|
|
18
|
+
private def select_configuration_mode: (String) -> void
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
23
|
+
def run_fuzz_command: (Array[String] arguments) -> Integer
|
|
24
|
+
|
|
25
|
+
# @rbs () -> OptionParser
|
|
26
|
+
def fuzz_option_parser: () -> OptionParser
|
|
27
|
+
|
|
28
|
+
# @rbs (OptionParser options) -> void
|
|
29
|
+
def add_fuzz_generation_options: (OptionParser options) -> void
|
|
30
|
+
|
|
31
|
+
# @rbs (OptionParser options) -> void
|
|
32
|
+
def add_fuzz_execution_options: (OptionParser options) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (OptionParser options) -> void
|
|
35
|
+
def add_fuzz_external_options: (OptionParser options) -> void
|
|
36
|
+
|
|
37
|
+
# @rbs () -> fuzz_external_target?
|
|
38
|
+
def external_fuzz_target: () -> fuzz_external_target?
|
|
39
|
+
|
|
40
|
+
# @rbs (BoundedSubprocess subprocess, Array[String] arguments, Array[String] tokens,
|
|
41
|
+
# Integer timeout, Integer max_output) -> Symbol
|
|
42
|
+
def external_fuzz_outcome: (BoundedSubprocess subprocess, Array[String] arguments, Array[String] tokens, Integer timeout, Integer max_output) -> Symbol
|
|
43
|
+
|
|
44
|
+
# @rbs (String name, Integer value) -> Integer
|
|
45
|
+
def positive_fuzz_option!: (String name, Integer value) -> Integer
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/fuzz_regressions.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
type fuzz_external_description = { command: String, target_runtime: String, timeout_seconds: Integer, max_output_bytes: Integer, host_ruby_engine: String, host_ruby_version: String, host_platform: String }
|
|
5
|
+
|
|
6
|
+
type fuzz_external_target = [ ^(Array[String]) -> Symbol, fuzz_external_description ]
|
|
7
|
+
|
|
8
|
+
# Automatic bounded minimization and persistence for fuzz differences.
|
|
9
|
+
module CLIFuzzRegressions
|
|
10
|
+
private def atomic_write_ir: (String path, String source) -> void
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
# @rbs (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path,
|
|
15
|
+
# fuzz_external_target? external) -> Integer
|
|
16
|
+
def write_minimized_fuzz_mismatch: (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path, fuzz_external_target? external) -> Integer
|
|
17
|
+
|
|
18
|
+
# @rbs (Hash[Symbol, untyped] report) -> void
|
|
19
|
+
def write_fuzz_report: (Hash[Symbol, untyped] report) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs (Fuzz::BudgetExceeded error,
|
|
22
|
+
# fuzz_external_target? external, phase: String) -> Integer
|
|
23
|
+
def write_fuzz_budget_report: (Fuzz::BudgetExceeded error, fuzz_external_target? external, phase: String) -> Integer
|
|
24
|
+
|
|
25
|
+
# @rbs (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path,
|
|
26
|
+
# fuzz_external_target? external) -> Hash[Symbol, untyped]
|
|
27
|
+
def minimized_fuzz_mismatch: (Fuzz fuzzer, Fuzz::Mismatch mismatch, String grammar_path, fuzz_external_target? external) -> Hash[Symbol, untyped]
|
|
28
|
+
|
|
29
|
+
# @rbs (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path,
|
|
30
|
+
# fuzz_external_description? external) -> Hash[Symbol, String]?
|
|
31
|
+
def persist_fuzz_regression: (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path, fuzz_external_description? external) -> Hash[Symbol, String]?
|
|
32
|
+
|
|
33
|
+
# @rbs (String path) -> void
|
|
34
|
+
def validate_fuzz_regression_target!: (String path) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path,
|
|
37
|
+
# fuzz_external_description? external) -> Hash[Symbol, Object?]
|
|
38
|
+
def fuzz_regression_document: (fuzz_mismatch mismatch, DeltaReducer::Result result, String grammar_path, fuzz_external_description? external) -> Hash[Symbol, Object?]
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -9,6 +9,10 @@ module Ibex
|
|
|
9
9
|
|
|
10
10
|
private def default_output_path: (String, String) -> String
|
|
11
11
|
|
|
12
|
+
private def configuration_value: (String) -> Object?
|
|
13
|
+
|
|
14
|
+
private def effective_configuration: () -> Configuration::Resolver
|
|
15
|
+
|
|
12
16
|
private
|
|
13
17
|
|
|
14
18
|
# @rbs () -> void
|
|
@@ -44,7 +48,22 @@ module Ibex
|
|
|
44
48
|
# @rbs () -> String
|
|
45
49
|
def manifest_output_path: () -> String
|
|
46
50
|
|
|
47
|
-
# @rbs () -> Hash[String,
|
|
48
|
-
def generation_manifest_options: () -> Hash[String,
|
|
51
|
+
# @rbs () -> Hash[String, Object?]
|
|
52
|
+
def generation_manifest_options: () -> Hash[String, Object?]
|
|
53
|
+
|
|
54
|
+
# @rbs (Hash[String, Object?] options) -> void
|
|
55
|
+
def append_ir_manifest_options: (Hash[String, Object?] options) -> void
|
|
56
|
+
|
|
57
|
+
# @rbs () -> String
|
|
58
|
+
def construction_authority: () -> String
|
|
59
|
+
|
|
60
|
+
# @rbs () -> Array[Hash[String, Object?]]
|
|
61
|
+
def manifest_effective_configuration: () -> Array[Hash[String, Object?]]
|
|
62
|
+
|
|
63
|
+
# @rbs (IR::ParserContract contract) -> Hash[String, Object?]
|
|
64
|
+
def stringify_contract: (IR::ParserContract contract) -> Hash[String, Object?]
|
|
65
|
+
|
|
66
|
+
# @rbs () -> Symbol
|
|
67
|
+
def effective_cst_trivia: () -> Symbol
|
|
49
68
|
end
|
|
50
69
|
end
|
|
@@ -10,8 +10,8 @@ module Ibex
|
|
|
10
10
|
# @rbs (OptionParser options) -> void
|
|
11
11
|
def add_error_messages_generation_option: (OptionParser options) -> void
|
|
12
12
|
|
|
13
|
-
# @rbs (IR::Automaton automaton) -> Hash[Integer,
|
|
14
|
-
def configured_error_messages: (IR::Automaton automaton) -> Hash[Integer,
|
|
13
|
+
# @rbs (IR::Automaton automaton) -> Hash[Integer, String | { id: String, message: String }]
|
|
14
|
+
def configured_error_messages: (IR::Automaton automaton) -> Hash[Integer, String | { id: String, message: String }]
|
|
15
15
|
|
|
16
16
|
# @rbs () -> void
|
|
17
17
|
def validate_messages_options: () -> void
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
# `%test` command parsing and human-readable result reporting.
|
|
5
5
|
module CLIGrammarTests
|
|
6
|
-
type grammar_test_settings =
|
|
6
|
+
type grammar_test_settings = Hash[Symbol, untyped]
|
|
7
7
|
|
|
8
8
|
private def print_help: (OptionParser) -> Integer
|
|
9
9
|
|
|
@@ -13,17 +13,29 @@ module Ibex
|
|
|
13
13
|
|
|
14
14
|
private def build_automaton: (IR::Grammar, String) -> IR::Automaton
|
|
15
15
|
|
|
16
|
+
private def configuration_value: (String) -> untyped
|
|
17
|
+
|
|
18
|
+
private def mark_configuration_option: (Symbol) -> void
|
|
19
|
+
|
|
16
20
|
private
|
|
17
21
|
|
|
18
22
|
# @rbs (Array[String] arguments) -> Integer
|
|
19
23
|
def run_grammar_tests_command: (Array[String] arguments) -> Integer
|
|
20
24
|
|
|
21
|
-
# @rbs (
|
|
22
|
-
def
|
|
25
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
26
|
+
def default_grammar_test_settings: () -> Hash[Symbol, untyped]
|
|
27
|
+
|
|
28
|
+
# @rbs (Hash[Symbol, untyped] settings) -> OptionParser
|
|
29
|
+
def grammar_test_option_parser: (Hash[Symbol, untyped] settings) -> OptionParser
|
|
23
30
|
|
|
24
31
|
# @rbs (Array[String] remaining, OptionParser options) -> String
|
|
25
32
|
def single_grammar_test_path: (Array[String] remaining, OptionParser options) -> String
|
|
26
33
|
|
|
34
|
+
# @rbs (Frontend::Resolution resolution) -> IR::Grammar
|
|
35
|
+
def normalize_analysis_grammar: (Frontend::Resolution resolution) -> IR::Grammar
|
|
36
|
+
|
|
37
|
+
private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
38
|
+
|
|
27
39
|
# @rbs (Array[GrammarTests::Result] results) -> Integer
|
|
28
40
|
def render_grammar_test_results: (Array[GrammarTests::Result] results) -> Integer
|
|
29
41
|
|
data/sig/ibex/cli/ir_tools.rbs
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
# Generated from lib/ibex/cli/ir_tools.rb with RBS::Inline
|
|
2
2
|
|
|
3
3
|
module Ibex
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# CLI validation and structural comparison for versioned IR documents.
|
|
4
|
+
# CLI validation and structural comparison for current IR documents.
|
|
7
5
|
module CLIIRTools
|
|
8
|
-
private def same_file_target?: (String left, String right) -> bool
|
|
9
|
-
|
|
10
|
-
private def atomic_write_ir: (String path, String source) -> void
|
|
11
|
-
|
|
12
6
|
private
|
|
13
7
|
|
|
14
8
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -17,24 +11,18 @@ module Ibex
|
|
|
17
11
|
# @rbs (Array[String] arguments) -> Integer
|
|
18
12
|
def run_compare_command: (Array[String] arguments) -> Integer
|
|
19
13
|
|
|
20
|
-
# @rbs (Array[String] arguments) -> Integer
|
|
21
|
-
def run_migrate_ir_command: (Array[String] arguments) -> Integer
|
|
22
|
-
|
|
23
|
-
# @rbs (Array[String] arguments) -> migrate_ir_options
|
|
24
|
-
def migrate_ir_options: (Array[String] arguments) -> migrate_ir_options
|
|
25
|
-
|
|
26
14
|
# @rbs (Array[String] arguments, String command) -> String
|
|
27
15
|
def single_ir_path: (Array[String] arguments, String command) -> String
|
|
28
16
|
|
|
29
17
|
# @rbs (IR::Grammar | IR::Automaton | IR::Lexer before,
|
|
30
|
-
# IR::Grammar | IR::Automaton | IR::Lexer after) -> Hash[Symbol,
|
|
31
|
-
def compare_ir: (IR::Grammar | IR::Automaton | IR::Lexer before, IR::Grammar | IR::Automaton | IR::Lexer after) -> Hash[Symbol,
|
|
18
|
+
# IR::Grammar | IR::Automaton | IR::Lexer after) -> Hash[Symbol, Object?]
|
|
19
|
+
def compare_ir: (IR::Grammar | IR::Automaton | IR::Lexer before, IR::Grammar | IR::Automaton | IR::Lexer after) -> Hash[Symbol, Object?]
|
|
32
20
|
|
|
33
|
-
# @rbs (IR::Lexer before, IR::Lexer after) -> Hash[Symbol,
|
|
34
|
-
def compare_lexers: (IR::Lexer before, IR::Lexer after) -> Hash[Symbol,
|
|
21
|
+
# @rbs (IR::Lexer before, IR::Lexer after) -> Hash[Symbol, Object?]
|
|
22
|
+
def compare_lexers: (IR::Lexer before, IR::Lexer after) -> Hash[Symbol, Object?]
|
|
35
23
|
|
|
36
|
-
# @rbs (IR::Grammar before, IR::Grammar after) -> Hash[Symbol,
|
|
37
|
-
def compare_grammars: (IR::Grammar before, IR::Grammar after) -> Hash[Symbol,
|
|
24
|
+
# @rbs (IR::Grammar before, IR::Grammar after) -> Hash[Symbol, Object?]
|
|
25
|
+
def compare_grammars: (IR::Grammar before, IR::Grammar after) -> Hash[Symbol, Object?]
|
|
38
26
|
|
|
39
27
|
# @rbs (IR::Grammar grammar) -> Array[String]
|
|
40
28
|
def production_shapes: (IR::Grammar grammar) -> Array[String]
|
data/sig/ibex/cli/outputs.rbs
CHANGED
|
@@ -5,7 +5,9 @@ module Ibex
|
|
|
5
5
|
module CLIOutputs
|
|
6
6
|
private def register_artifact: (Symbol, String, String, ?mode: Integer?, ?status: bool) -> Artifact
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
private def configuration_value: (String) -> Object?
|
|
9
|
+
|
|
10
|
+
WARNING_MESSAGE_IDS: Hash[Symbol, String]
|
|
9
11
|
|
|
10
12
|
private
|
|
11
13
|
|
|
@@ -15,8 +17,11 @@ module Ibex
|
|
|
15
17
|
# @rbs (IR::Grammar grammar, String input_path) -> void
|
|
16
18
|
def handle_grammar_warnings: (IR::Grammar grammar, String input_path) -> void
|
|
17
19
|
|
|
18
|
-
# @rbs (IR::grammar_warning warning, String input_path) -> String
|
|
19
|
-
def format_grammar_warning: (IR::grammar_warning warning, String input_path) -> String
|
|
20
|
+
# @rbs (IR::grammar_warning warning, String input_path, ?promoted: bool) -> String
|
|
21
|
+
def format_grammar_warning: (IR::grammar_warning warning, String input_path, ?promoted: bool) -> String
|
|
22
|
+
|
|
23
|
+
# @rbs (IR::grammar_warning warning) -> String
|
|
24
|
+
def grammar_warning_message: (IR::grammar_warning warning) -> String
|
|
20
25
|
|
|
21
26
|
# @rbs (IR::Automaton automaton, String input_path) -> void
|
|
22
27
|
def report_conflicts: (IR::Automaton automaton, String input_path) -> void
|
|
@@ -25,6 +30,7 @@ module Ibex
|
|
|
25
30
|
def conflict_messages: (IR::conflict_summary summary, String input_path) -> Array[String]
|
|
26
31
|
|
|
27
32
|
# @rbs (IR::Automaton automaton, String input_path) -> void
|
|
33
|
+
# rubocop:disable Metrics/AbcSize -- the bounded comparison reports each conflict class independently.
|
|
28
34
|
def suggest_ielr: (IR::Automaton automaton, String input_path) -> void
|
|
29
35
|
|
|
30
36
|
# @rbs (Integer count, String kind) -> String
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/reduce.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
type reduction_bounds = { max_trials: Integer, timeout_seconds: Integer, max_output_bytes: Integer, max_input_bytes: Integer }
|
|
5
|
+
|
|
6
|
+
type reduction_budget_details = { kind: String, message: String, trials: Integer }
|
|
7
|
+
|
|
8
|
+
type reduction_success_document = { ibex_report: String, schema_version: Integer, result: String, mode: Symbol, original_size: Integer, minimized_size: Integer, trials: Integer, complete: bool, minimized: Array[String | Integer], bounded: bool, bounds: reduction_bounds }
|
|
9
|
+
|
|
10
|
+
type reduction_budget_document = { ibex_report: String, schema_version: Integer, result: String, mode: Symbol, bounded: bool, bounds: reduction_bounds, budget: reduction_budget_details }
|
|
11
|
+
|
|
12
|
+
# CLI entry point for generic bounded delta debugging.
|
|
13
|
+
module CLIReduce
|
|
14
|
+
include CLIReduceReporting
|
|
15
|
+
|
|
16
|
+
DEFAULT_MAX_INPUT_BYTES: Integer
|
|
17
|
+
|
|
18
|
+
class ReductionBudgetExceeded < Ibex::Error
|
|
19
|
+
attr_reader details: reduction_budget_details
|
|
20
|
+
|
|
21
|
+
# @rbs (reduction_budget_details details) -> void
|
|
22
|
+
def initialize: (reduction_budget_details details) -> void
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
@reduction_mode: Symbol
|
|
26
|
+
|
|
27
|
+
@reduction_bounds: reduction_bounds
|
|
28
|
+
|
|
29
|
+
@reduction_trials: Integer
|
|
30
|
+
|
|
31
|
+
@reduction_subprocess: BoundedSubprocess
|
|
32
|
+
|
|
33
|
+
private def print_help: (OptionParser) -> Integer
|
|
34
|
+
|
|
35
|
+
private def input_path: (Array[String]) -> String
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
40
|
+
def run_reduce_command: (Array[String] arguments) -> Integer
|
|
41
|
+
|
|
42
|
+
# @rbs () -> OptionParser
|
|
43
|
+
def reduce_option_parser: () -> OptionParser
|
|
44
|
+
|
|
45
|
+
# @rbs () -> void
|
|
46
|
+
def prepare_reduction_run: () -> void
|
|
47
|
+
|
|
48
|
+
# @rbs (String path) -> String
|
|
49
|
+
def bounded_reduction_source: (String path) -> String
|
|
50
|
+
|
|
51
|
+
# @rbs (String source, Symbol mode) -> Array[String | Integer]
|
|
52
|
+
def reduction_items: (String source, Symbol mode) -> Array[String | Integer]
|
|
53
|
+
|
|
54
|
+
# @rbs (Array[String] command, Array[String | Integer] candidate, Symbol mode) -> bool
|
|
55
|
+
def reduction_failure?: (Array[String] command, Array[String | Integer] candidate, Symbol mode) -> bool
|
|
56
|
+
|
|
57
|
+
# @rbs (String name, Integer value) -> Integer
|
|
58
|
+
def positive_reduce_option!: (String name, Integer value) -> Integer
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/reduce_reporting.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Versioned machine and terminal reports for bounded delta reduction.
|
|
5
|
+
module CLIReduceReporting
|
|
6
|
+
@reduction_mode: Symbol
|
|
7
|
+
|
|
8
|
+
@reduction_bounds: reduction_bounds
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
# @rbs (DeltaReducer::Result result) -> reduction_success_document
|
|
13
|
+
def reduction_success_report: (DeltaReducer::Result result) -> reduction_success_document
|
|
14
|
+
|
|
15
|
+
# @rbs (reduction_budget_details details) -> reduction_budget_document
|
|
16
|
+
def reduction_budget_report: (reduction_budget_details details) -> reduction_budget_document
|
|
17
|
+
|
|
18
|
+
# @rbs () -> reduction_bounds
|
|
19
|
+
def default_reduction_bounds: () -> reduction_bounds
|
|
20
|
+
|
|
21
|
+
# @rbs (reduction_success_document report) -> void
|
|
22
|
+
def write_reduction_success: (reduction_success_document report) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs (reduction_budget_document report) -> void
|
|
25
|
+
def write_reduction_budget: (reduction_budget_document report) -> void
|
|
26
|
+
end
|
|
27
|
+
end
|
data/sig/ibex/cli/samples.rbs
CHANGED
|
@@ -13,6 +13,8 @@ module Ibex
|
|
|
13
13
|
|
|
14
14
|
private def normalize_grammar_path: (String) -> IR::Grammar
|
|
15
15
|
|
|
16
|
+
private def set_configuration_option: (Symbol, Object?) -> void
|
|
17
|
+
|
|
16
18
|
private
|
|
17
19
|
|
|
18
20
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -21,6 +23,12 @@ module Ibex
|
|
|
21
23
|
# @rbs () -> OptionParser
|
|
22
24
|
def samples_option_parser: () -> OptionParser
|
|
23
25
|
|
|
26
|
+
# @rbs (OptionParser options) -> void
|
|
27
|
+
def add_sample_generation_options: (OptionParser options) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (OptionParser options) -> void
|
|
30
|
+
def add_sample_input_options: (OptionParser options) -> void
|
|
31
|
+
|
|
24
32
|
# @rbs (String path) -> IR::Grammar
|
|
25
33
|
def grammar_for_samples: (String path) -> IR::Grammar
|
|
26
34
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/verify.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI entry point for bounded, independent Automaton IR verification.
|
|
5
|
+
module CLIVerify
|
|
6
|
+
type verify_options = { paths: Array[String], strict: bool, max_states: Integer, max_items: Integer, ?grammar: String, format: String, ?help: String }
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
11
|
+
def run_verify_command: (Array[String] arguments) -> Integer
|
|
12
|
+
|
|
13
|
+
# @rbs (Array[String] arguments) -> verify_options
|
|
14
|
+
def verify_options: (Array[String] arguments) -> verify_options
|
|
15
|
+
|
|
16
|
+
# @rbs (String path) -> IR::Automaton
|
|
17
|
+
def load_verify_automaton: (String path) -> IR::Automaton
|
|
18
|
+
|
|
19
|
+
# @rbs (IR::Automaton automaton, String path) -> void
|
|
20
|
+
def verify_supplied_grammar!: (IR::Automaton automaton, String path) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (Verify::Result result, String format) -> void
|
|
23
|
+
def write_verify_result: (Verify::Result result, String format) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (Integer value, String name) -> Integer
|
|
26
|
+
def positive_verify_budget: (Integer value, String name) -> Integer
|
|
27
|
+
end
|
|
28
|
+
end
|
data/sig/ibex/cli/watch.rbs
CHANGED
|
@@ -34,8 +34,8 @@ module Ibex
|
|
|
34
34
|
# @rbs (String path) -> Build
|
|
35
35
|
def prepare_watch_generation: (String path) -> Build
|
|
36
36
|
|
|
37
|
-
# @rbs (
|
|
38
|
-
def publish_watch_generation: (
|
|
37
|
+
# @rbs (Watch::_BuildResult build, Watch::SourceSnapshot snapshot, ^() -> bool continue) -> void
|
|
38
|
+
def publish_watch_generation: (Watch::_BuildResult build, Watch::SourceSnapshot snapshot, ^() -> bool continue) -> void
|
|
39
39
|
|
|
40
40
|
# @rbs (String path) -> Array[String]
|
|
41
41
|
def watch_failure_paths: (String path) -> Array[String]
|
data/sig/ibex/cli.rbs
CHANGED
|
@@ -4,9 +4,9 @@ module Ibex
|
|
|
4
4
|
CLI_FEATURE_ROOT: String
|
|
5
5
|
|
|
6
6
|
interface _CLIOutput
|
|
7
|
-
def puts: (*
|
|
7
|
+
def puts: (*Object?) -> Object?
|
|
8
8
|
|
|
9
|
-
def write: (String) ->
|
|
9
|
+
def write: (String) -> Object?
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
interface _CLIInput
|
|
@@ -15,7 +15,7 @@ module Ibex
|
|
|
15
15
|
def gets: () -> String?
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
type cli_options = { emit: String, mode: Symbol, table: Symbol, ?cst_trivia: Symbol, line_convert: bool, ?line_convert_all: bool, counterexample_max_tokens: Integer, counterexample_max_configurations: Integer, ?from: String, ?algorithm: Symbol, ?suggest_ielr: bool, ?entry_isolation: bool, ?warnings: Array[Symbol], ?output: String, ?embedded: bool, ?debug: bool, ?verbose: bool, ?rbs: String | true, ?action_source: String | true, ?manifest: String | true, ?watch: bool, ?dot: String, ?mermaid: String, ?html: String, ?railroad: String, ?messages: String, ?messages_update: String | true, ?messages_algorithm_explicit: bool, ?sample_count: Integer, ?sample_seed: Integer, ?sample_max_tokens: Integer, ?sample_max_depth: Integer, ?sample_max_expansions: Integer, ?log_file: String, ?executable: String, ?frozen: bool, ?omit_actions: bool, ?superclass: String, ?verify_output: bool, ?check_only: bool, ?status: bool, ?profile: bool, ?debug_flags: String, ?version: bool, ?runtime_version: bool, ?copyright: bool, ?help: bool, ?explain_state: Integer, ?explain_token: String, ?explain_format: String, ?check_ambiguity: bool, ?check_format: String }
|
|
18
|
+
type cli_options = { emit: String, mode: Symbol, table: Symbol, ?cst_trivia: Symbol, line_convert: bool, ?line_convert_all: bool, counterexample_max_tokens: Integer, counterexample_max_configurations: Integer, ?from: String, ?algorithm: Symbol, ?suggest_ielr: bool, ?entry_isolation: bool, ?ielr_strategy: Symbol, ?ielr_report: bool, ?remove_unreachable: bool, ?warnings: Array[Symbol], ?output: String, ?embedded: bool, ?debug: bool, ?verbose: bool, ?rbs: String | true, ?action_source: String | true, ?manifest: String | true, ?watch: bool, ?dot: String, ?mermaid: String, ?html: String, ?railroad: String, ?messages: String, ?messages_update: String | true, ?messages_algorithm_explicit: bool, ?sample_count: Integer, ?sample_seed: Integer, ?sample_max_tokens: Integer, ?sample_max_depth: Integer, ?sample_max_expansions: Integer, ?log_file: String, ?executable: String, ?frozen: bool, ?omit_actions: bool, ?superclass: String, ?verify_output: bool, ?check_only: bool, ?status: bool, ?profile: bool, ?debug_flags: String, ?version: bool, ?runtime_version: bool, ?copyright: bool, ?help: bool, ?explain_state: Integer, ?explain_token: String, ?explain_format: String, ?check_ambiguity: bool, ?check_format: String, ?fuzz_seed: Integer, ?fuzz_count: Integer, ?fuzz_max_tokens: Integer, ?fuzz_max_depth: Integer, ?fuzz_max_expansions: Integer, ?fuzz_max_actions: Integer, ?fuzz_max_stack: Integer, ?fuzz_coverage_guided: bool, ?fuzz_path_length: Integer, ?fuzz_against: String, ?fuzz_against_runtime: String, ?fuzz_against_timeout: Integer, ?fuzz_against_max_output: Integer, ?fuzz_max_reduction_trials: Integer, ?fuzz_regression_dir: String, ?fuzz_save_regression: bool, ?fuzz_format: String, ?reduce_command: String, ?reduce_mode: Symbol, ?reduce_max_trials: Integer, ?reduce_timeout: Integer, ?reduce_max_output_bytes: Integer, ?reduce_max_input_bytes: Integer, ?reduce_format: String }
|
|
19
19
|
|
|
20
20
|
# Command-line pipeline coordinator.
|
|
21
21
|
# rubocop:disable Metrics/ClassLength -- inline type contracts add lines without adding runtime responsibilities.
|
|
@@ -30,11 +30,19 @@ module Ibex
|
|
|
30
30
|
|
|
31
31
|
include CLIOutputs
|
|
32
32
|
|
|
33
|
-
@
|
|
33
|
+
@stdout: _CLIOutput
|
|
34
34
|
|
|
35
35
|
@stderr: _CLIOutput
|
|
36
36
|
|
|
37
|
-
@
|
|
37
|
+
@options: cli_options
|
|
38
|
+
|
|
39
|
+
@language: String
|
|
40
|
+
|
|
41
|
+
@configuration_explicit_options: Hash[Symbol, bool]
|
|
42
|
+
|
|
43
|
+
@generation_grammar: IR::Grammar?
|
|
44
|
+
|
|
45
|
+
@generation_automaton: IR::Automaton?
|
|
38
46
|
|
|
39
47
|
# rubocop:disable Layout/LineLength
|
|
40
48
|
# @rbs (Array[String] arguments, ?stdin: _CLIInput, ?stdout: _CLIOutput, ?stderr: _CLIOutput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> Integer
|
|
@@ -48,6 +56,39 @@ module Ibex
|
|
|
48
56
|
|
|
49
57
|
private
|
|
50
58
|
|
|
59
|
+
# @rbs (Symbol name) -> void
|
|
60
|
+
def mark_configuration_option: (Symbol name) -> void
|
|
61
|
+
|
|
62
|
+
# OptionParser accepts a heterogeneous set of operation and configuration
|
|
63
|
+
# values. The CLIAdapter is the validation boundary for this dynamic map.
|
|
64
|
+
# @rbs (Symbol name, untyped value) -> void
|
|
65
|
+
def set_configuration_option: (Symbol name, untyped value) -> void
|
|
66
|
+
|
|
67
|
+
# @rbs (String value) -> void
|
|
68
|
+
def select_configuration_mode: (String value) -> void
|
|
69
|
+
|
|
70
|
+
# @rbs () -> Configuration::Resolver
|
|
71
|
+
def effective_configuration: () -> Configuration::Resolver
|
|
72
|
+
|
|
73
|
+
# Resolve a command-local legacy option hash without promoting it into the
|
|
74
|
+
# reusable CLI instance's generation settings.
|
|
75
|
+
# @rbs (Hash[Symbol, untyped] options, explicit_keys: Array[Symbol]) -> Configuration::Resolver
|
|
76
|
+
def resolve_configuration_options: (Hash[Symbol, untyped] options, explicit_keys: Array[Symbol]) -> Configuration::Resolver
|
|
77
|
+
|
|
78
|
+
# @rbs (Hash[Symbol, untyped] options, String name) -> untyped
|
|
79
|
+
def local_configuration_value: (Hash[Symbol, untyped] options, String name) -> untyped
|
|
80
|
+
|
|
81
|
+
# @rbs (Hash[Symbol, untyped] options, Symbol name, untyped value) -> void
|
|
82
|
+
def set_local_configuration_option: (Hash[Symbol, untyped] options, Symbol name, untyped value) -> void
|
|
83
|
+
|
|
84
|
+
# Configuration values have already been validated by Configuration::Resolver;
|
|
85
|
+
# callers narrow the value according to the option they are consuming.
|
|
86
|
+
# @rbs (String name) -> untyped
|
|
87
|
+
def configuration_value: (String name) -> untyped
|
|
88
|
+
|
|
89
|
+
# @rbs (Array[String] arguments) -> Array[String]
|
|
90
|
+
def extract_language: (Array[String] arguments) -> Array[String]
|
|
91
|
+
|
|
51
92
|
# @rbs (Array[String] arguments) -> Integer?
|
|
52
93
|
def dispatch_subcommand: (Array[String] arguments) -> Integer?
|
|
53
94
|
|
|
@@ -61,6 +102,10 @@ module Ibex
|
|
|
61
102
|
def option_parser: () -> OptionParser
|
|
62
103
|
|
|
63
104
|
# @rbs (OptionParser options) -> void
|
|
105
|
+
def add_subcommand_help: (OptionParser options) -> void
|
|
106
|
+
|
|
107
|
+
# @rbs (OptionParser options) -> void
|
|
108
|
+
# rubocop:disable Metrics/MethodLength -- pipeline flags share one parser boundary.
|
|
64
109
|
def add_pipeline_options: (OptionParser options) -> void
|
|
65
110
|
|
|
66
111
|
# @rbs (OptionParser options) -> void
|
|
@@ -75,6 +120,15 @@ module Ibex
|
|
|
75
120
|
# @rbs (OptionParser options) -> void
|
|
76
121
|
def add_information_options: (OptionParser options) -> void
|
|
77
122
|
|
|
123
|
+
@analysis_configuration: Configuration::Resolver?
|
|
124
|
+
|
|
125
|
+
# @rbs (IR::Grammar grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
126
|
+
def activate_analysis_grammar: (IR::Grammar grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
127
|
+
|
|
128
|
+
# @rbs (IR::Grammar grammar, Hash[Symbol, untyped] options, Array[Symbol] explicit_keys) ->
|
|
129
|
+
# [IR::Grammar, Symbol, IR::Automaton]
|
|
130
|
+
def construct_analysis_automaton: (IR::Grammar grammar, Hash[Symbol, untyped] options, Array[Symbol] explicit_keys) -> [ IR::Grammar, Symbol, IR::Automaton ]
|
|
131
|
+
|
|
78
132
|
# @rbs (OptionParser parser) -> Integer?
|
|
79
133
|
def informational_result: (OptionParser parser) -> Integer?
|
|
80
134
|
|
|
@@ -84,6 +138,9 @@ module Ibex
|
|
|
84
138
|
# @rbs () -> void
|
|
85
139
|
def validate_generation_options: () -> void
|
|
86
140
|
|
|
141
|
+
# @rbs () -> void
|
|
142
|
+
def validate_automaton_construction_options: () -> void
|
|
143
|
+
|
|
87
144
|
# @rbs () -> void
|
|
88
145
|
def validate_manifest_generation_options: () -> void
|
|
89
146
|
|
|
@@ -123,6 +180,9 @@ module Ibex
|
|
|
123
180
|
# @rbs (String path) -> IR::Grammar
|
|
124
181
|
def normalize_grammar_path: (String path) -> IR::Grammar
|
|
125
182
|
|
|
183
|
+
# @rbs (String source) -> bool
|
|
184
|
+
def bison_source?: (String source) -> bool
|
|
185
|
+
|
|
126
186
|
# @rbs (String path) -> Integer
|
|
127
187
|
def process_ir: (String path) -> Integer
|
|
128
188
|
|
|
@@ -132,6 +192,15 @@ module Ibex
|
|
|
132
192
|
# @rbs (IR::Automaton automaton, String path) -> Integer
|
|
133
193
|
def dispatch_automaton: (IR::Automaton automaton, String path) -> Integer
|
|
134
194
|
|
|
195
|
+
# @rbs (IR::Grammar grammar) -> void
|
|
196
|
+
def activate_generation_grammar: (IR::Grammar grammar) -> void
|
|
197
|
+
|
|
198
|
+
# @rbs (IR::Grammar grammar, Configuration::Resolver configuration) -> IR::Grammar
|
|
199
|
+
def noncanonical_analysis_grammar: (IR::Grammar grammar, Configuration::Resolver configuration) -> IR::Grammar
|
|
200
|
+
|
|
201
|
+
# @rbs (Configuration::Resolver configuration) -> void
|
|
202
|
+
def report_noncanonical_analysis: (Configuration::Resolver configuration) -> void
|
|
203
|
+
|
|
135
204
|
# @rbs () -> Integer
|
|
136
205
|
def print_version: () -> Integer
|
|
137
206
|
|
|
@@ -192,6 +261,9 @@ module Ibex
|
|
|
192
261
|
# @rbs (IR::Grammar grammar, String input_path) -> IR::Automaton
|
|
193
262
|
def build_automaton: (IR::Grammar grammar, String input_path) -> IR::Automaton
|
|
194
263
|
|
|
264
|
+
# @rbs (IR::Grammar grammar, IR::Automaton automaton) -> void
|
|
265
|
+
def write_ielr_report: (IR::Grammar grammar, IR::Automaton automaton) -> void
|
|
266
|
+
|
|
195
267
|
# @rbs (IR::Automaton automaton, String input_path) -> void
|
|
196
268
|
def prepare_loaded_automaton: (IR::Automaton automaton, String input_path) -> void
|
|
197
269
|
|
|
@@ -204,4 +276,6 @@ module Ibex
|
|
|
204
276
|
# @rbs (String output_path) -> String
|
|
205
277
|
def manifest_output_path_for: (String output_path) -> String
|
|
206
278
|
end
|
|
279
|
+
|
|
280
|
+
CONFIG_SUBCOMMAND_HELP: String
|
|
207
281
|
end
|