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
|
@@ -4,65 +4,67 @@ module Ibex
|
|
|
4
4
|
module Coverage
|
|
5
5
|
# Dependency-free structural validation for runtime-event schema version 1.
|
|
6
6
|
module RuntimeEventValidator
|
|
7
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
8
|
+
|
|
7
9
|
TOKEN_KEYS: Array[String]
|
|
8
10
|
|
|
9
11
|
LOCATION_KEYS: Array[String]
|
|
10
12
|
|
|
11
13
|
VALIDATORS: Hash[String, Symbol]
|
|
12
14
|
|
|
13
|
-
# @rbs (Hash[String,
|
|
14
|
-
def self.valid?: (Hash[String,
|
|
15
|
+
# @rbs (Hash[String, json_value] document) -> bool
|
|
16
|
+
def self.valid?: (Hash[String, json_value] document) -> bool
|
|
15
17
|
|
|
16
|
-
# @rbs (Hash[String,
|
|
17
|
-
private def self.valid_start?: (Hash[String,
|
|
18
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
19
|
+
private def self.valid_start?: (Hash[String, json_value] data) -> bool
|
|
18
20
|
|
|
19
|
-
# @rbs (Hash[String,
|
|
20
|
-
private def self.valid_shift?: (Hash[String,
|
|
21
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
22
|
+
private def self.valid_shift?: (Hash[String, json_value] data) -> bool
|
|
21
23
|
|
|
22
|
-
# @rbs (Hash[String,
|
|
23
|
-
private def self.valid_reduce?: (Hash[String,
|
|
24
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
25
|
+
private def self.valid_reduce?: (Hash[String, json_value] data) -> bool
|
|
24
26
|
|
|
25
|
-
# @rbs (Hash[String,
|
|
26
|
-
private def self.valid_token_event?: (Hash[String,
|
|
27
|
+
# @rbs (Hash[String, json_value] data, reasons: Array[String]) -> bool
|
|
28
|
+
private def self.valid_token_event?: (Hash[String, json_value] data, reasons: Array[String]) -> bool
|
|
27
29
|
|
|
28
|
-
# @rbs (Hash[String,
|
|
29
|
-
private def self.valid_error?: (Hash[String,
|
|
30
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
31
|
+
private def self.valid_error?: (Hash[String, json_value] data) -> bool
|
|
30
32
|
|
|
31
|
-
# @rbs (Hash[String,
|
|
32
|
-
private def self.valid_discard?: (Hash[String,
|
|
33
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
34
|
+
private def self.valid_discard?: (Hash[String, json_value] data) -> bool
|
|
33
35
|
|
|
34
|
-
# @rbs (Hash[String,
|
|
35
|
-
private def self.valid_reject?: (Hash[String,
|
|
36
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
37
|
+
private def self.valid_reject?: (Hash[String, json_value] data) -> bool
|
|
36
38
|
|
|
37
|
-
# @rbs (Hash[String,
|
|
38
|
-
private def self.valid_recover?: (Hash[String,
|
|
39
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
40
|
+
private def self.valid_recover?: (Hash[String, json_value] data) -> bool
|
|
39
41
|
|
|
40
|
-
# @rbs (Hash[String,
|
|
41
|
-
private def self.valid_accept?: (Hash[String,
|
|
42
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
43
|
+
private def self.valid_accept?: (Hash[String, json_value] data) -> bool
|
|
42
44
|
|
|
43
|
-
# @rbs (Hash[String,
|
|
44
|
-
private def self.valid_token_fields?: (Hash[String,
|
|
45
|
+
# @rbs (Hash[String, json_value] data) -> bool
|
|
46
|
+
private def self.valid_token_fields?: (Hash[String, json_value] data) -> bool
|
|
45
47
|
|
|
46
|
-
# @rbs (
|
|
47
|
-
private def self.summary?: (
|
|
48
|
+
# @rbs (json_value value) -> bool
|
|
49
|
+
private def self.summary?: (json_value value) -> bool
|
|
48
50
|
|
|
49
|
-
# @rbs (
|
|
50
|
-
private def self.composite_summary?: (
|
|
51
|
+
# @rbs (json_value value) -> bool
|
|
52
|
+
private def self.composite_summary?: (json_value value) -> bool
|
|
51
53
|
|
|
52
|
-
# @rbs (
|
|
53
|
-
private def self.location?: (
|
|
54
|
+
# @rbs (json_value value) -> bool
|
|
55
|
+
private def self.location?: (json_value value) -> bool
|
|
54
56
|
|
|
55
|
-
# @rbs (Hash[String,
|
|
56
|
-
private def self.exact_keys?: (Hash[String,
|
|
57
|
+
# @rbs (Hash[String, json_value] data, Array[String] keys) -> bool
|
|
58
|
+
private def self.exact_keys?: (Hash[String, json_value] data, Array[String] keys) -> bool
|
|
57
59
|
|
|
58
|
-
# @rbs (
|
|
59
|
-
private def self.integer?: (
|
|
60
|
+
# @rbs (json_value value) -> bool
|
|
61
|
+
private def self.integer?: (json_value value) -> bool
|
|
60
62
|
|
|
61
|
-
# @rbs (
|
|
62
|
-
private def self.optional_integer?: (
|
|
63
|
+
# @rbs (json_value value) -> bool
|
|
64
|
+
private def self.optional_integer?: (json_value value) -> bool
|
|
63
65
|
|
|
64
|
-
# @rbs (
|
|
65
|
-
private def self.optional_string?: (
|
|
66
|
+
# @rbs (json_value value) -> bool
|
|
67
|
+
private def self.optional_string?: (json_value value) -> bool
|
|
66
68
|
end
|
|
67
69
|
end
|
|
68
70
|
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Generated from lib/ibex/delta_reducer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Deterministic, trial-bounded delta debugging over an ordered sequence.
|
|
5
|
+
class DeltaReducer
|
|
6
|
+
# Immutable outcome of a bounded reduction.
|
|
7
|
+
class Result
|
|
8
|
+
attr_reader items: Array[untyped]
|
|
9
|
+
|
|
10
|
+
attr_reader trials: Integer
|
|
11
|
+
|
|
12
|
+
attr_reader complete: bool
|
|
13
|
+
|
|
14
|
+
attr_reader original_size: Integer
|
|
15
|
+
|
|
16
|
+
# @rbs (items: Array[untyped], trials: Integer, complete: bool, original_size: Integer) -> void
|
|
17
|
+
def initialize: (items: Array[untyped], trials: Integer, complete: bool, original_size: Integer) -> void
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# @rbs (?max_trials: Integer) -> void
|
|
21
|
+
def initialize: (?max_trials: Integer) -> void
|
|
22
|
+
|
|
23
|
+
# `failure` must return true while the failure of interest is preserved.
|
|
24
|
+
# @rbs [T] (Array[T] items) { (Array[T]) -> bool } -> Result
|
|
25
|
+
def minimize: [T] (Array[T] items) { (Array[T]) -> bool } -> Result
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
# @rbs (Integer length, Integer count) -> Array[Range[Integer]]
|
|
30
|
+
def partitions: (Integer length, Integer count) -> Array[Range[Integer]]
|
|
31
|
+
|
|
32
|
+
# @rbs (Integer trials) -> Integer
|
|
33
|
+
def checked_trial!: (Integer trials) -> Integer
|
|
34
|
+
|
|
35
|
+
# @rbs (Array[untyped] items, Integer trials, bool complete, Integer original_size) -> Result
|
|
36
|
+
def result: (Array[untyped] items, Integer trials, bool complete, Integer original_size) -> Result
|
|
37
|
+
end
|
|
38
|
+
end
|
data/sig/ibex/diff.rbs
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Generated from lib/ibex/diff.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Deterministic grammar and automaton change classification.
|
|
5
|
+
class Diff
|
|
6
|
+
# @rbs (IR::Automaton before, IR::Automaton after) -> void
|
|
7
|
+
def initialize: (IR::Automaton before, IR::Automaton after) -> void
|
|
8
|
+
|
|
9
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
10
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
# @rbs (Hash[String, Object?] before, Hash[String, Object?] after) -> Hash[Symbol, Object?]
|
|
15
|
+
def classify: (Hash[String, Object?] before, Hash[String, Object?] after) -> Hash[Symbol, Object?]
|
|
16
|
+
|
|
17
|
+
# @rbs (IR::Grammar grammar) -> Hash[String, Object?]
|
|
18
|
+
def symbol_records: (IR::Grammar grammar) -> Hash[String, Object?]
|
|
19
|
+
|
|
20
|
+
# @rbs (IR::Grammar grammar) -> Hash[String, Object?]
|
|
21
|
+
def rule_records: (IR::Grammar grammar) -> Hash[String, Object?]
|
|
22
|
+
|
|
23
|
+
# @rbs (IR::Grammar grammar, IR::Production production) -> Hash[Symbol, Object?]
|
|
24
|
+
def production_record: (IR::Grammar grammar, IR::Production production) -> Hash[Symbol, Object?]
|
|
25
|
+
|
|
26
|
+
# @rbs (IR::Automaton automaton) -> Hash[String, Object?]
|
|
27
|
+
def conflict_records: (IR::Automaton automaton) -> Hash[String, Object?]
|
|
28
|
+
|
|
29
|
+
# @rbs (IR::Grammar grammar, IR::conflict conflict) -> String
|
|
30
|
+
def conflict_identity: (IR::Grammar grammar, IR::conflict conflict) -> String
|
|
31
|
+
|
|
32
|
+
# @rbs (IR::Grammar grammar, Integer id) -> String
|
|
33
|
+
def production_shape: (IR::Grammar grammar, Integer id) -> String
|
|
34
|
+
|
|
35
|
+
# @rbs (IR::Grammar grammar, Integer id) -> String
|
|
36
|
+
def symbol_name: (IR::Grammar grammar, Integer id) -> String
|
|
37
|
+
|
|
38
|
+
# @rbs (IR::Grammar grammar) -> Hash[String, Object?]
|
|
39
|
+
def warning_records: (IR::Grammar grammar) -> Hash[String, Object?]
|
|
40
|
+
|
|
41
|
+
# @rbs () -> Hash[Symbol, Hash[Symbol, Integer]]
|
|
42
|
+
def numeric_metrics: () -> Hash[Symbol, Hash[Symbol, Integer]]
|
|
43
|
+
|
|
44
|
+
# @rbs (Integer before, Integer after) -> Hash[Symbol, Integer]
|
|
45
|
+
def change: (Integer before, Integer after) -> Hash[Symbol, Integer]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated from lib/ibex/equiv/machine.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
class Equiv
|
|
5
|
+
# Immutable, semantic-action-free LR state-stack machine.
|
|
6
|
+
class Machine
|
|
7
|
+
class BudgetExceeded < Ibex::Error
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# One product-search component.
|
|
11
|
+
class Configuration
|
|
12
|
+
attr_reader stack: Array[Integer]
|
|
13
|
+
|
|
14
|
+
attr_reader status: Symbol?
|
|
15
|
+
|
|
16
|
+
attr_reader actions: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader reductions: Array[Integer]
|
|
19
|
+
|
|
20
|
+
# @rbs (stack: Array[Integer], status: Symbol?, actions: Integer, ?reductions: Array[Integer]) -> void
|
|
21
|
+
def initialize: (stack: Array[Integer], status: Symbol?, actions: Integer, ?reductions: Array[Integer]) -> void
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @rbs (IR::Automaton automaton, max_actions: Integer, max_stack: Integer) -> void
|
|
25
|
+
def initialize: (IR::Automaton automaton, max_actions: Integer, max_stack: Integer) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs () -> Configuration
|
|
28
|
+
def start: () -> Configuration
|
|
29
|
+
|
|
30
|
+
# @rbs (Array[String] tokens) -> Configuration
|
|
31
|
+
def run: (Array[String] tokens) -> Configuration
|
|
32
|
+
|
|
33
|
+
# @rbs (Configuration configuration, String token) -> Configuration
|
|
34
|
+
def push: (Configuration configuration, String token) -> Configuration
|
|
35
|
+
|
|
36
|
+
# @rbs (Configuration configuration) -> Configuration
|
|
37
|
+
def finish: (Configuration configuration) -> Configuration
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
# @rbs (Configuration configuration, Integer token_id, eof: bool) -> Configuration
|
|
42
|
+
def consume: (Configuration configuration, Integer token_id, eof: bool) -> Configuration
|
|
43
|
+
|
|
44
|
+
# @rbs (Array[Integer] stack, Integer production_id) -> void
|
|
45
|
+
def apply_reduction!: (Array[Integer] stack, Integer production_id) -> void
|
|
46
|
+
|
|
47
|
+
# @rbs (Integer actions) -> void
|
|
48
|
+
def enforce_action_budget!: (Integer actions) -> void
|
|
49
|
+
|
|
50
|
+
# @rbs (Array[Integer] stack) -> void
|
|
51
|
+
def enforce_stack_budget!: (Array[Integer] stack) -> void
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
data/sig/ibex/equiv.rbs
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Generated from lib/ibex/equiv.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Bounded language comparison over two immutable parser automata.
|
|
5
|
+
# rubocop:disable Metrics/ClassLength -- the three comparison strategies share one report and budget contract.
|
|
6
|
+
class Equiv
|
|
7
|
+
type tree_node_signature = [ String, Array[String] ]
|
|
8
|
+
|
|
9
|
+
type tree_trace_entry = [ String, Array[String], tree_node_signature? ]
|
|
10
|
+
|
|
11
|
+
type terminal_signature = [ String, [ Symbol, Integer ]? ]
|
|
12
|
+
|
|
13
|
+
type production_signature = [ String, Array[String], String? ]
|
|
14
|
+
|
|
15
|
+
CAVEAT: String
|
|
16
|
+
|
|
17
|
+
DEFAULT_MAX_ACTIONS: Integer
|
|
18
|
+
|
|
19
|
+
DEFAULT_MAX_STACK: Integer
|
|
20
|
+
|
|
21
|
+
class Difference < Ibex::Error
|
|
22
|
+
attr_reader details: Hash[Symbol, Object?]
|
|
23
|
+
|
|
24
|
+
# @rbs (Hash[Symbol, Object?] details) -> void
|
|
25
|
+
def initialize: (Hash[Symbol, Object?] details) -> void
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class BudgetExceeded < Ibex::Error
|
|
29
|
+
attr_reader details: Hash[Symbol, Object?]
|
|
30
|
+
|
|
31
|
+
# @rbs (Hash[Symbol, Object?] details) -> void
|
|
32
|
+
def initialize: (Hash[Symbol, Object?] details) -> void
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @rbs (IR::Automaton left, IR::Automaton right, ?sample_count: Integer, ?seed: Integer,
|
|
36
|
+
# ?max_tokens: Integer, ?max_configurations: Integer, ?max_actions: Integer, ?max_stack: Integer,
|
|
37
|
+
# ?rule_map: Hash[String, String]) -> void
|
|
38
|
+
def initialize: (IR::Automaton left, IR::Automaton right, ?sample_count: Integer, ?seed: Integer, ?max_tokens: Integer, ?max_configurations: Integer, ?max_actions: Integer, ?max_stack: Integer, ?rule_map: Hash[String, String]) -> void
|
|
39
|
+
|
|
40
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
41
|
+
def run: () -> Hash[Symbol, Object?]
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
# @rbs () -> Integer
|
|
46
|
+
def compare_samples: () -> Integer
|
|
47
|
+
|
|
48
|
+
# @rbs (IR::Grammar grammar, Integer seed) -> Array[Array[String]]
|
|
49
|
+
def generated_samples: (IR::Grammar grammar, Integer seed) -> Array[Array[String]]
|
|
50
|
+
|
|
51
|
+
# @rbs () -> Integer
|
|
52
|
+
def search_product: () -> Integer
|
|
53
|
+
|
|
54
|
+
# @rbs (Array[String] tokens, method: String) -> void
|
|
55
|
+
def compare_tokens!: (Array[String] tokens, method: String) -> void
|
|
56
|
+
|
|
57
|
+
# @rbs (Machine::Configuration left, Machine::Configuration right, Array[String] tokens) -> void
|
|
58
|
+
def compare_configurations!: (Machine::Configuration left, Machine::Configuration right, Array[String] tokens) -> void
|
|
59
|
+
|
|
60
|
+
# @rbs (Machine::Configuration left, Machine::Configuration right, Array[String] tokens, String method) -> void
|
|
61
|
+
def compare_results!: (Machine::Configuration left, Machine::Configuration right, Array[String] tokens, String method) -> void
|
|
62
|
+
|
|
63
|
+
# @rbs (Array[String] tokens, Symbol? left, Symbol? right, String method) -> bot
|
|
64
|
+
def raise_language_difference: (Array[String] tokens, Symbol? left, Symbol? right, String method) -> bot
|
|
65
|
+
|
|
66
|
+
# @rbs () -> bool
|
|
67
|
+
def structural_identity?: () -> bool
|
|
68
|
+
|
|
69
|
+
# @rbs () -> bool
|
|
70
|
+
def tree_structural_identity?: () -> bool
|
|
71
|
+
|
|
72
|
+
# @rbs (IR::Grammar grammar) -> Array[tree_node_signature]
|
|
73
|
+
def tree_grammar_signature: (IR::Grammar grammar) -> Array[tree_node_signature]
|
|
74
|
+
|
|
75
|
+
# @rbs (IR::node_annotation? node) -> tree_node_signature?
|
|
76
|
+
def node_signature: (IR::node_annotation? node) -> tree_node_signature?
|
|
77
|
+
|
|
78
|
+
# @rbs (IR::Automaton automaton, Machine::Configuration configuration, map_left: bool) -> Array[tree_trace_entry]
|
|
79
|
+
def tree_trace: (IR::Automaton automaton, Machine::Configuration configuration, map_left: bool) -> Array[tree_trace_entry]
|
|
80
|
+
|
|
81
|
+
# @rbs (IR::Grammar grammar, map_left: bool) -> Hash[Symbol, Object?]
|
|
82
|
+
def grammar_signature: (IR::Grammar grammar, map_left: bool) -> Hash[Symbol, Object?]
|
|
83
|
+
|
|
84
|
+
# @rbs (IR::Grammar grammar, map_left: bool) -> Hash[Symbol, Object?]
|
|
85
|
+
def recovery_signature: (IR::Grammar grammar, map_left: bool) -> Hash[Symbol, Object?]
|
|
86
|
+
|
|
87
|
+
# @rbs (IR::Grammar grammar) -> Array[terminal_signature]
|
|
88
|
+
def terminal_signatures: (IR::Grammar grammar) -> Array[terminal_signature]
|
|
89
|
+
|
|
90
|
+
# @rbs (IR::Grammar grammar, map_left: bool) -> Array[production_signature]
|
|
91
|
+
def production_signatures: (IR::Grammar grammar, map_left: bool) -> Array[production_signature]
|
|
92
|
+
|
|
93
|
+
# @rbs (IR::Grammar grammar, IR::Production production, map_left: bool) -> production_signature
|
|
94
|
+
def production_signature: (IR::Grammar grammar, IR::Production production, map_left: bool) -> production_signature
|
|
95
|
+
|
|
96
|
+
# @rbs (IR::Grammar grammar, Integer id) -> String
|
|
97
|
+
def symbol_name: (IR::Grammar grammar, Integer id) -> String
|
|
98
|
+
|
|
99
|
+
# @rbs (IR::Grammar grammar, String name, map_left: bool) -> String
|
|
100
|
+
def mapped_name: (IR::Grammar grammar, String name, map_left: bool) -> String
|
|
101
|
+
|
|
102
|
+
# @rbs () -> void
|
|
103
|
+
def validate_rule_map!: () -> void
|
|
104
|
+
|
|
105
|
+
# @rbs () -> void
|
|
106
|
+
def verify_inputs!: () -> void
|
|
107
|
+
|
|
108
|
+
# @rbs () -> Array[String]
|
|
109
|
+
def terminal_alphabet: () -> Array[String]
|
|
110
|
+
|
|
111
|
+
# @rbs (Machine::Configuration left, Machine::Configuration right) -> Array[Object?]
|
|
112
|
+
def product_key: (Machine::Configuration left, Machine::Configuration right) -> Array[Object?]
|
|
113
|
+
|
|
114
|
+
# @rbs (Machine::Configuration left, Machine::Configuration right) -> bool
|
|
115
|
+
def both_rejected?: (Machine::Configuration left, Machine::Configuration right) -> bool
|
|
116
|
+
|
|
117
|
+
# @rbs (structural: bool, samples: Integer, configurations: Integer) -> untyped
|
|
118
|
+
def successful_report: (structural: bool, samples: Integer, configurations: Integer) -> untyped
|
|
119
|
+
|
|
120
|
+
# @rbs () -> bool
|
|
121
|
+
def tree_requested?: () -> bool
|
|
122
|
+
|
|
123
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
124
|
+
def bounds: () -> Hash[Symbol, Integer]
|
|
125
|
+
|
|
126
|
+
# @rbs (Ibex::Error error) -> bool
|
|
127
|
+
def sample_budget_error?: (Ibex::Error error) -> bool
|
|
128
|
+
end
|
|
129
|
+
end
|
data/sig/ibex/fix.rbs
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Generated from lib/ibex/fix.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Bounded conflict-repair candidate generation and safety evaluation.
|
|
5
|
+
# rubocop:disable Metrics/ClassLength -- candidate generation and its three safety gates share one target identity.
|
|
6
|
+
class Fix
|
|
7
|
+
type candidate = { category: String, description: String, source: String?, algorithm: Symbol }
|
|
8
|
+
|
|
9
|
+
SCHEMA_VERSION: Integer
|
|
10
|
+
|
|
11
|
+
CATEGORIES: Array[String]
|
|
12
|
+
|
|
13
|
+
ADVICE_CATEGORIES: Array[String]
|
|
14
|
+
|
|
15
|
+
ADVICE_STATEMENT: String
|
|
16
|
+
|
|
17
|
+
class BudgetExceeded < Ibex::Error
|
|
18
|
+
attr_reader details: Hash[Symbol, Object?]
|
|
19
|
+
|
|
20
|
+
# @rbs (Hash[Symbol, Object?] details) -> void
|
|
21
|
+
def initialize: (Hash[Symbol, Object?] details) -> void
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
attr_reader sources: Hash[String, String]
|
|
25
|
+
|
|
26
|
+
# @rbs (String source, file: String, grammar: IR::Grammar, automaton: IR::Automaton, algorithm: Symbol,
|
|
27
|
+
# mode: Symbol, ?state: Integer?, ?conflict_index: Integer?, ?max_candidates: Integer, ?max_builds: Integer,
|
|
28
|
+
# ?equiv_max_tokens: Integer, ?equiv_max_configurations: Integer, ?equiv_samples: Integer,
|
|
29
|
+
# ?verify_max_states: Integer, ?verify_max_items: Integer,
|
|
30
|
+
# ?messages: ErrorMessages::Document?, ?message_file: String?) -> void
|
|
31
|
+
# rubocop:disable Metrics/ParameterLists
|
|
32
|
+
def initialize: (String source, file: String, grammar: IR::Grammar, automaton: IR::Automaton, algorithm: Symbol, mode: Symbol, ?state: Integer?, ?conflict_index: Integer?, ?max_candidates: Integer, ?max_builds: Integer, ?equiv_max_tokens: Integer, ?equiv_max_configurations: Integer, ?equiv_samples: Integer, ?verify_max_states: Integer, ?verify_max_items: Integer, ?messages: ErrorMessages::Document?, ?message_file: String?) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
35
|
+
def run: () -> Hash[Symbol, Object?]
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
# @rbs () -> [IR::AutomatonState, Integer, IR::conflict]
|
|
40
|
+
def select_target: () -> [ IR::AutomatonState, Integer, IR::conflict ]
|
|
41
|
+
|
|
42
|
+
# @rbs (IR::conflict conflict) -> Array[candidate]
|
|
43
|
+
def candidate_space: (IR::conflict conflict) -> Array[candidate]
|
|
44
|
+
|
|
45
|
+
# @rbs (IR::conflict conflict) -> Array[Hash[Symbol, Object?]]
|
|
46
|
+
def advice_space: (IR::conflict conflict) -> Array[Hash[Symbol, Object?]]
|
|
47
|
+
|
|
48
|
+
# @rbs (IR::conflict conflict) -> Array[candidate]
|
|
49
|
+
def precedence_declaration_candidates: (IR::conflict conflict) -> Array[candidate]
|
|
50
|
+
|
|
51
|
+
# @rbs (IR::conflict conflict) -> candidate?
|
|
52
|
+
def precedence_override_candidate: (IR::conflict conflict) -> candidate?
|
|
53
|
+
|
|
54
|
+
# @rbs () -> Array[candidate]
|
|
55
|
+
def algorithm_candidates: () -> Array[candidate]
|
|
56
|
+
|
|
57
|
+
# @rbs (IR::conflict conflict) -> candidate?
|
|
58
|
+
def inline_candidate: (IR::conflict conflict) -> candidate?
|
|
59
|
+
|
|
60
|
+
# @rbs (IR::conflict conflict) -> candidate
|
|
61
|
+
def expectation_candidate: (IR::conflict conflict) -> candidate
|
|
62
|
+
|
|
63
|
+
# @rbs (IR::conflict conflict) -> candidate?
|
|
64
|
+
def recovery_candidate: (IR::conflict conflict) -> candidate?
|
|
65
|
+
|
|
66
|
+
# @rbs (String category, String description, ?source: String?, ?algorithm: Symbol?) -> candidate
|
|
67
|
+
def candidate: (String category, String description, ?source: String?, ?algorithm: Symbol?) -> candidate
|
|
68
|
+
|
|
69
|
+
# @rbs (candidate candidate, IR::conflict target) -> Hash[Symbol, Object?]
|
|
70
|
+
def evaluate_candidate: (candidate candidate, IR::conflict target) -> Hash[Symbol, Object?]
|
|
71
|
+
|
|
72
|
+
# @rbs (IR::Automaton candidate, IR::conflict target) -> Hash[Symbol, String]?
|
|
73
|
+
def conflict_safety_failure: (IR::Automaton candidate, IR::conflict target) -> Hash[Symbol, String]?
|
|
74
|
+
|
|
75
|
+
# @rbs (IR::Automaton candidate) -> Hash[Symbol, String]?
|
|
76
|
+
def verification_safety_failure: (IR::Automaton candidate) -> Hash[Symbol, String]?
|
|
77
|
+
|
|
78
|
+
# @rbs (candidate candidate) -> IR::Automaton
|
|
79
|
+
def build_candidate: (candidate candidate) -> IR::Automaton
|
|
80
|
+
|
|
81
|
+
# @rbs (candidate candidate, Hash[Symbol, Object?] outcome, IR::conflict conflict, Integer number) ->
|
|
82
|
+
# Hash[Symbol, Object?]
|
|
83
|
+
def proposal: (candidate candidate, Hash[Symbol, Object?] outcome, IR::conflict conflict, Integer number) -> Hash[Symbol, Object?]
|
|
84
|
+
|
|
85
|
+
# @rbs (IR::Automaton candidate) -> Hash[Symbol, Object?]
|
|
86
|
+
def message_catalog_impact: (IR::Automaton candidate) -> Hash[Symbol, Object?]
|
|
87
|
+
|
|
88
|
+
# @rbs (candidate candidate, Hash[Symbol, Object?] outcome) -> Hash[Symbol, Object?]
|
|
89
|
+
def rejection: (candidate candidate, Hash[Symbol, Object?] outcome) -> Hash[Symbol, Object?]
|
|
90
|
+
|
|
91
|
+
# @rbs (IR::AutomatonState state, Integer index, IR::conflict conflict, Array[candidate] candidates,
|
|
92
|
+
# Array[Hash[Symbol, Object?]] proposals, Array[Hash[Symbol, Object?]] rejections,
|
|
93
|
+
# Array[Hash[Symbol, Object?]] advice) -> Hash[Symbol, Object?]
|
|
94
|
+
def report_for: (IR::AutomatonState state, Integer index, IR::conflict conflict, Array[candidate] candidates, Array[Hash[Symbol, Object?]] proposals, Array[Hash[Symbol, Object?]] rejections, Array[Hash[Symbol, Object?]] advice) -> Hash[Symbol, Object?]
|
|
95
|
+
|
|
96
|
+
# @rbs (IR::Automaton automaton) -> Array[[IR::AutomatonState, IR::conflict]]
|
|
97
|
+
def active_conflicts: (IR::Automaton automaton) -> Array[[ IR::AutomatonState, IR::conflict ]]
|
|
98
|
+
|
|
99
|
+
# @rbs (IR::conflict conflict) -> bool
|
|
100
|
+
def active_conflict?: (IR::conflict conflict) -> bool
|
|
101
|
+
|
|
102
|
+
# @rbs (IR::Automaton candidate, String target_fingerprint) -> bool
|
|
103
|
+
def increased_other_conflict?: (IR::Automaton candidate, String target_fingerprint) -> bool
|
|
104
|
+
|
|
105
|
+
# @rbs (IR::Automaton automaton) -> Hash[String, Integer]
|
|
106
|
+
def conflict_counts: (IR::Automaton automaton) -> Hash[String, Integer]
|
|
107
|
+
|
|
108
|
+
# @rbs (IR::Grammar grammar, IR::conflict conflict) -> String
|
|
109
|
+
def conflict_fingerprint: (IR::Grammar grammar, IR::conflict conflict) -> String
|
|
110
|
+
|
|
111
|
+
# @rbs (IR::Grammar grammar, Integer id) -> String
|
|
112
|
+
def production_shape: (IR::Grammar grammar, Integer id) -> String
|
|
113
|
+
|
|
114
|
+
# @rbs (IR::Grammar candidate_grammar) -> Hash[String, String]
|
|
115
|
+
def identity_rule_map: (IR::Grammar candidate_grammar) -> Hash[String, String]
|
|
116
|
+
|
|
117
|
+
# @rbs (String insertion) -> String
|
|
118
|
+
def insert_before_rule: (String insertion) -> String
|
|
119
|
+
|
|
120
|
+
# @rbs (String source, String insertion) -> String
|
|
121
|
+
def insert_before_rule_in: (String source, String insertion) -> String
|
|
122
|
+
|
|
123
|
+
# @rbs (Integer line_number, String suffix) -> String
|
|
124
|
+
def append_to_line: (Integer line_number, String suffix) -> String
|
|
125
|
+
|
|
126
|
+
# @rbs (String directive) -> String
|
|
127
|
+
def replace_or_insert_expectation: (String directive) -> String
|
|
128
|
+
|
|
129
|
+
# @rbs (String source, IR::conflict conflict) -> String
|
|
130
|
+
def update_expectation: (String source, IR::conflict conflict) -> String
|
|
131
|
+
|
|
132
|
+
# @rbs (String before, String after) -> String
|
|
133
|
+
def unified_diff: (String before, String after) -> String
|
|
134
|
+
|
|
135
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
136
|
+
def bounds: () -> Hash[Symbol, Integer]
|
|
137
|
+
end
|
|
138
|
+
end
|
data/sig/ibex/frontend/ast.rbs
CHANGED
|
@@ -13,7 +13,7 @@ module Ibex
|
|
|
13
13
|
module AST
|
|
14
14
|
type symbol_metadata = DisplayName | SemanticType
|
|
15
15
|
|
|
16
|
-
type declaration = Include | Tokens | Precedence | Options | Expect | ExpectRR | Start | Recovery | OnErrorReduce | GrammarTest | Lexer | Convert | Parameter | Printer | symbol_metadata
|
|
16
|
+
type declaration = Include | Tokens | Precedence | Options | Expect | ExpectRR | Start | Recovery | OnErrorReduce | GrammarTest | Lexer | Convert | Parameter | Printer | ParserConfiguration | symbol_metadata
|
|
17
17
|
|
|
18
18
|
type lexer_entry = LexerRule | LexerState
|
|
19
19
|
|
|
@@ -33,16 +33,18 @@ module Ibex
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
# Adds deterministic, recursively serializable hashes to Struct nodes.
|
|
36
|
-
# @rbs module-self Struct[
|
|
37
|
-
module Node : Struct[
|
|
38
|
-
|
|
36
|
+
# @rbs module-self Struct[Object?]
|
|
37
|
+
module Node : Struct[Object?]
|
|
38
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
39
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
39
40
|
|
|
40
41
|
private
|
|
41
42
|
|
|
43
|
+
# @rbs (untyped value) -> untyped
|
|
42
44
|
def serialize: (untyped value) -> untyped
|
|
43
45
|
end
|
|
44
46
|
|
|
45
|
-
class Root < Struct[String | String? | Array[declaration] | Array[Rule] | user_code | Location | bool?]
|
|
47
|
+
class Root < Struct[String | String? | Array[declaration] | Array[Rule] | user_code | Location | bool? | Location?]
|
|
46
48
|
attr_accessor class_name(): String
|
|
47
49
|
|
|
48
50
|
attr_accessor superclass(): String?
|
|
@@ -59,8 +61,10 @@ module Ibex
|
|
|
59
61
|
|
|
60
62
|
attr_accessor cst(): bool?
|
|
61
63
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
attr_accessor extended_loc(): Location?
|
|
65
|
+
|
|
66
|
+
def self.new: (?class_name: String, ?superclass: String?, ?declarations: Array[declaration], ?rules: Array[Rule], ?user_code: user_code, ?loc: Location, ?extended: bool?, ?cst: bool?, ?extended_loc: Location?) -> instance
|
|
67
|
+
| ({ ?class_name: String, ?superclass: String?, ?declarations: Array[declaration], ?rules: Array[Rule], ?user_code: user_code, ?loc: Location, ?extended: bool?, ?cst: bool?, ?extended_loc: Location? }) -> instance
|
|
64
68
|
end
|
|
65
69
|
|
|
66
70
|
class Fragment < Struct[Array[declaration] | Array[Rule] | Location]
|
|
@@ -282,6 +286,28 @@ module Ibex
|
|
|
282
286
|
| ({ ?name: String, ?code: String, ?loc: Location }) -> instance
|
|
283
287
|
end
|
|
284
288
|
|
|
289
|
+
class ParserConfiguration < Struct[Array[ParserSetting] | Location]
|
|
290
|
+
attr_accessor settings(): Array[ParserSetting]
|
|
291
|
+
|
|
292
|
+
attr_accessor loc(): Location
|
|
293
|
+
|
|
294
|
+
def self.new: (?settings: Array[ParserSetting], ?loc: Location) -> instance
|
|
295
|
+
| ({ ?settings: Array[ParserSetting], ?loc: Location }) -> instance
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
class ParserSetting < Struct[Symbol | Location]
|
|
299
|
+
attr_accessor key(): Symbol
|
|
300
|
+
|
|
301
|
+
attr_accessor value(): Symbol
|
|
302
|
+
|
|
303
|
+
attr_accessor loc(): Location
|
|
304
|
+
|
|
305
|
+
def self.new: (?key: Symbol, ?value: Symbol, ?loc: Location) -> instance
|
|
306
|
+
| ({ ?key: Symbol, ?value: Symbol, ?loc: Location }) -> instance
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
ROOT_ONLY_DECLARATION_NAMES: Hash[Class, String]
|
|
310
|
+
|
|
285
311
|
class Alternative < Struct[Array[item] | InlineAction? | String? | NodeAnnotation? | Location]
|
|
286
312
|
attr_accessor items(): Array[item]
|
|
287
313
|
|
|
@@ -28,8 +28,8 @@ module Ibex
|
|
|
28
28
|
# @rbs () -> String
|
|
29
29
|
def to_s: () -> String
|
|
30
30
|
|
|
31
|
-
# @rbs () -> Hash[Symbol,
|
|
32
|
-
def to_h: () -> Hash[Symbol,
|
|
31
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
32
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
# Immutable output from a diagnostic parse.
|