ibex 0.2.0 → 0.4.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 +100 -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 +274 -0
- data/docs/development.md +196 -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 +1617 -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/impact.md +101 -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 +129 -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 +310 -0
- data/docs/stability.md +145 -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/sets.rb +14 -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/impact.rb +393 -0
- 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 +362 -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 +141 -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/impact/action_impact.rb +148 -0
- data/lib/ibex/impact/automaton_impact.rb +57 -0
- data/lib/ibex/impact/coverage_impact.rb +53 -0
- data/lib/ibex/impact/graph.rb +132 -0
- data/lib/ibex/impact/propagation.rb +147 -0
- data/lib/ibex/impact/report.rb +273 -0
- data/lib/ibex/impact/seeds.rb +69 -0
- data/lib/ibex/impact/severity.rb +139 -0
- data/lib/ibex/impact.rb +16 -0
- 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 +11 -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/impact-v1.schema.json +208 -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/analysis/sets.rbs +10 -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/impact.rbs +95 -0
- 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/impact/action_impact.rbs +58 -0
- data/sig/ibex/impact/automaton_impact.rbs +37 -0
- data/sig/ibex/impact/coverage_impact.rbs +28 -0
- data/sig/ibex/impact/graph.rbs +67 -0
- data/sig/ibex/impact/propagation.rbs +56 -0
- data/sig/ibex/impact/report.rbs +107 -0
- data/sig/ibex/impact/seeds.rbs +36 -0
- data/sig/ibex/impact/severity.rbs +55 -0
- data/sig/ibex/impact.rbs +6 -0
- 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 +254 -12
- data/lib/ibex/ir/migration.rb +0 -120
- data/sig/ibex/ir/migration.rbs +0 -34
data/sig/ibex/cli/explain.rbs
CHANGED
|
@@ -11,6 +11,10 @@ module Ibex
|
|
|
11
11
|
|
|
12
12
|
private def normalize_grammar_path: (String) -> IR::Grammar
|
|
13
13
|
|
|
14
|
+
private def configuration_value: (String) -> untyped
|
|
15
|
+
|
|
16
|
+
private def set_configuration_option: (Symbol, Object?) -> void
|
|
17
|
+
|
|
14
18
|
private
|
|
15
19
|
|
|
16
20
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -21,5 +25,7 @@ module Ibex
|
|
|
21
25
|
|
|
22
26
|
# @rbs (OptionParser options) -> void
|
|
23
27
|
def add_explain_search_options: (OptionParser options) -> void
|
|
28
|
+
|
|
29
|
+
private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
24
30
|
end
|
|
25
31
|
end
|
|
@@ -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
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/impact.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI adapter for potential and confirmed grammar impact reports.
|
|
5
|
+
# rubocop:disable Metrics/ModuleLength, Metrics/MethodLength, Metrics/AbcSize
|
|
6
|
+
module CLIImpact
|
|
7
|
+
include CLIAnalysis
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
12
|
+
def run_impact_command: (Array[String] arguments) -> Integer
|
|
13
|
+
|
|
14
|
+
# @rbs (Array[String]) -> Hash[Symbol, untyped]
|
|
15
|
+
def impact_option_parser: (Array[String]) -> Hash[Symbol, untyped]
|
|
16
|
+
|
|
17
|
+
# @rbs (String value) -> Array[Symbol]
|
|
18
|
+
def parse_kinds: (String value) -> Array[Symbol]
|
|
19
|
+
|
|
20
|
+
# @rbs (Array[String], Hash[Symbol, untyped]) -> [Hash[Symbol, Object?], Array[String], Hash[Symbol, Object?]]
|
|
21
|
+
def potential_impact: (Array[String], Hash[Symbol, untyped]) -> [ Hash[Symbol, Object?], Array[String], Hash[Symbol, Object?] ]
|
|
22
|
+
|
|
23
|
+
# @rbs (Array[String], Hash[Symbol, untyped]) -> [Hash[Symbol, Object?], Array[String], Hash[Symbol, Object?]]
|
|
24
|
+
def confirmed_impact: (Array[String], Hash[Symbol, untyped]) -> [ Hash[Symbol, Object?], Array[String], Hash[Symbol, Object?] ]
|
|
25
|
+
|
|
26
|
+
# @rbs (Impact::Graph, Array[Integer], Hash[Symbol, untyped]) ->
|
|
27
|
+
# [Hash[Integer, Impact::Node], Hash[Integer, Array[String]]]
|
|
28
|
+
def propagate: (Impact::Graph, Array[Integer], Hash[Symbol, untyped]) -> [ Hash[Integer, Impact::Node], Hash[Integer, Array[String]] ]
|
|
29
|
+
|
|
30
|
+
# @rbs (IR::Automaton, Array[Integer], Hash[Symbol, untyped]) -> Impact::CoverageImpact
|
|
31
|
+
def load_coverage: (IR::Automaton, Array[Integer], Hash[Symbol, untyped]) -> Impact::CoverageImpact
|
|
32
|
+
|
|
33
|
+
# @rbs (Impact::Seeds, Impact::CoverageImpact) -> Array[String]
|
|
34
|
+
def nullable_warnings: (Impact::Seeds, Impact::CoverageImpact) -> Array[String]
|
|
35
|
+
|
|
36
|
+
# @rbs (IR::Automaton, Impact::AutomatonImpact) -> Hash[Symbol, Object?]
|
|
37
|
+
def potential_automaton_document: (IR::Automaton, Impact::AutomatonImpact) -> Hash[Symbol, Object?]
|
|
38
|
+
|
|
39
|
+
# @rbs (IR::Automaton, IR::Automaton, Hash[Symbol, Object?], Impact::AutomatonImpact) -> Hash[Symbol, Object?]
|
|
40
|
+
def confirmed_automaton_document: (IR::Automaton, IR::Automaton, Hash[Symbol, Object?], Impact::AutomatonImpact) -> Hash[Symbol, Object?]
|
|
41
|
+
|
|
42
|
+
# @rbs (IR::Grammar) -> Array[String]
|
|
43
|
+
def unreachable_nonterminal_names: (IR::Grammar) -> Array[String]
|
|
44
|
+
|
|
45
|
+
# @rbs (IR::Grammar, IR::Grammar) -> Array[String]
|
|
46
|
+
def newly_unreachable_nonterminal_names: (IR::Grammar, IR::Grammar) -> Array[String]
|
|
47
|
+
|
|
48
|
+
# @rbs (IR::Automaton) -> Array[Integer]
|
|
49
|
+
def unreachable_state_ids: (IR::Automaton) -> Array[Integer]
|
|
50
|
+
|
|
51
|
+
# @rbs (IR::Automaton, IR::Automaton) -> Array[Integer]
|
|
52
|
+
def newly_unreachable_state_ids: (IR::Automaton, IR::Automaton) -> Array[Integer]
|
|
53
|
+
|
|
54
|
+
# @rbs (IR::Automaton) -> Array[String]
|
|
55
|
+
def unreachable_state_keys: (IR::Automaton) -> Array[String]
|
|
56
|
+
|
|
57
|
+
# @rbs (IR::Automaton, Integer) -> String
|
|
58
|
+
def unreachable_state_key: (IR::Automaton, Integer) -> String
|
|
59
|
+
|
|
60
|
+
# @rbs (IR::Automaton, IR::Automaton) ->
|
|
61
|
+
# [Hash[String, Hash[Symbol, Object?]], Hash[String, Array[String]]]
|
|
62
|
+
def compare_sets: (IR::Automaton, IR::Automaton) -> [ Hash[String, Hash[Symbol, Object?]], Hash[String, Array[String]] ]
|
|
63
|
+
|
|
64
|
+
# @rbs (Analysis::Sets, Analysis::Sets, IR::GrammarSymbol?, IR::GrammarSymbol?, Symbol) ->
|
|
65
|
+
# Hash[Symbol, Array[String]]
|
|
66
|
+
def set_change: (Analysis::Sets, Analysis::Sets, IR::GrammarSymbol?, IR::GrammarSymbol?, Symbol) -> Hash[Symbol, Array[String]]
|
|
67
|
+
|
|
68
|
+
# @rbs (Hash[Symbol, Array[String]], Hash[Symbol, Array[String]], Hash[Symbol, Object?]?) -> bool
|
|
69
|
+
def set_change_empty?: (Hash[Symbol, Array[String]], Hash[Symbol, Array[String]], Hash[Symbol, Object?]?) -> bool
|
|
70
|
+
|
|
71
|
+
# @rbs (Analysis::Sets, Analysis::Sets, IR::GrammarSymbol?, IR::GrammarSymbol?) -> Hash[Symbol, Object?]?
|
|
72
|
+
def nullable_change: (Analysis::Sets, Analysis::Sets, IR::GrammarSymbol?, IR::GrammarSymbol?) -> Hash[Symbol, Object?]?
|
|
73
|
+
|
|
74
|
+
# @rbs (Hash[Integer, Array[String]], Hash[String, Array[String]], IR::Grammar) -> Hash[Integer, Array[String]]
|
|
75
|
+
def merge_symbol_kinds: (Hash[Integer, Array[String]], Hash[String, Array[String]], IR::Grammar) -> Hash[Integer, Array[String]]
|
|
76
|
+
|
|
77
|
+
# @rbs (Hash[Symbol, Array[Hash[Symbol, Object?]]], IR::Grammar) -> Hash[String, Array[String]]
|
|
78
|
+
def precedence_symbol_kinds: (Hash[Symbol, Array[Hash[Symbol, Object?]]], IR::Grammar) -> Hash[String, Array[String]]
|
|
79
|
+
|
|
80
|
+
# @rbs (IR::Automaton) -> Array[String]
|
|
81
|
+
def conflict_identities: (IR::Automaton) -> Array[String]
|
|
82
|
+
|
|
83
|
+
# @rbs (IR::Grammar, Hash[Symbol, Object?]) -> String
|
|
84
|
+
def conflict_identity: (IR::Grammar, Hash[Symbol, Object?]) -> String
|
|
85
|
+
|
|
86
|
+
# @rbs (IR::Grammar, Integer) -> String
|
|
87
|
+
def production_shape: (IR::Grammar, Integer) -> String
|
|
88
|
+
|
|
89
|
+
# @rbs (Hash[Symbol, Object?], Array[String], Hash[Symbol, untyped]) -> void
|
|
90
|
+
def apply_baseline: (Hash[Symbol, Object?], Array[String], Hash[Symbol, untyped]) -> void
|
|
91
|
+
|
|
92
|
+
# @rbs (Hash[Symbol, Object?], String) -> void
|
|
93
|
+
def write_impact_report: (Hash[Symbol, Object?], String) -> void
|
|
94
|
+
end
|
|
95
|
+
end
|
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]
|