ibex 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +95 -272
- data/docs/architecture.md +187 -35
- data/docs/bison-import.md +103 -0
- data/docs/comparison-policy.md +127 -0
- data/docs/configuration-model.md +59 -0
- data/docs/configuration-report.md +28 -0
- data/docs/conflict-explanation-reviews/v1/records/README.md +28 -0
- data/docs/conflict-explanation-study.md +62 -0
- data/docs/construction-profiling.md +157 -0
- data/docs/cst-migration.md +3 -4
- data/docs/cst.md +24 -0
- data/docs/decisions/0000-template.md +24 -0
- data/docs/decisions/0001-separate-ir-pipeline.md +34 -0
- data/docs/decisions/0002-opaque-user-code-boundary.md +32 -0
- data/docs/decisions/0003-self-hosted-grammar-frontend.md +32 -0
- data/docs/decisions/0004-shared-semantic-and-lossless-source-model.md +33 -0
- data/docs/decisions/0005-contained-grammar-composition.md +34 -0
- data/docs/decisions/0006-bounded-structural-grammar-lowering.md +32 -0
- data/docs/decisions/0007-shared-parser-construction-pipeline.md +33 -0
- data/docs/decisions/0008-versioned-runtime-package-boundary.md +36 -0
- data/docs/decisions/0009-isolated-parser-sessions.md +34 -0
- data/docs/decisions/0010-committed-runtime-observation.md +34 -0
- data/docs/decisions/0011-versioned-semantic-action-boundary.md +37 -0
- data/docs/decisions/0012-bounded-nonexecuting-analysis.md +37 -0
- data/docs/decisions/0013-transactional-generation-publication.md +37 -0
- data/docs/decisions/0014-versioned-generated-lexer.md +35 -0
- data/docs/decisions/0015-worker-isolated-browser-analysis.md +32 -0
- data/docs/decisions/0016-red-green-concrete-syntax.md +34 -0
- data/docs/decisions/0017-persistent-syntax-artifacts.md +35 -0
- data/docs/decisions/0018-conservative-incremental-syntax-reuse.md +38 -0
- data/docs/decisions/0019-runtime-syntax-session-boundary.md +51 -0
- data/docs/decisions/0020-grammar-ir-parser-contract.md +65 -0
- data/docs/decisions/0021-data-only-parser-table-sidecar.md +50 -0
- data/docs/decisions/0022-manifest-bound-verification-report.md +77 -0
- data/docs/decisions/0023-syntax-only-repair-results.md +48 -0
- data/docs/decisions/0024-direct-ielr-construction.md +42 -0
- data/docs/decisions/README.md +74 -0
- data/docs/declarative-configuration.md +262 -0
- data/docs/development.md +179 -2
- data/docs/direct-ielr-decision.md +120 -0
- data/docs/direct-multi-entry-decision.md +82 -0
- data/docs/editor-setup.md +2 -1
- data/docs/error-ux-review-rubric-v1.md +117 -0
- data/docs/error-ux-reviews/v1/records/README.md +22 -0
- data/docs/error-ux-round2-review-status-v1.json +27 -0
- data/docs/error-ux-round2-reviews/v1/records/README.md +30 -0
- data/docs/error-ux-round2-v1.json +1581 -0
- data/docs/error-ux-round2.md +111 -0
- data/docs/error-ux.md +54 -0
- data/docs/getting-started.md +80 -0
- data/docs/grammar-reference.md +184 -13
- data/docs/ielr-design.md +43 -0
- data/docs/ielr.md +92 -0
- data/docs/ja/bison-import.md +51 -0
- data/docs/ja/stable-api.md +53 -0
- data/docs/lexer-construction-profile.md +109 -0
- data/docs/lexer-migration.md +5 -0
- data/docs/maturity.md +128 -0
- data/docs/project-site-strategy.md +54 -0
- data/docs/racc-migration-evidence.md +45 -0
- data/docs/racc-migration.md +11 -0
- data/docs/release-readiness.md +126 -68
- data/docs/repair-semantics.md +123 -0
- data/docs/runtime-abi-evolution.md +307 -0
- data/docs/stability.md +144 -34
- data/docs/status.md +43 -0
- data/docs/syntax-sessions.md +183 -0
- data/docs/table-artifact.md +125 -0
- data/docs/test-interactions.md +219 -0
- data/docs/verification-report.md +137 -0
- data/docs/verifier-trust-boundary.md +199 -0
- data/docs/workloads.md +132 -0
- data/lib/ibex/analysis/digraph.rb +128 -0
- data/lib/ibex/analysis.rb +1 -0
- data/lib/ibex/bison_import/importer.rb +516 -0
- data/lib/ibex/bison_import/tokenizer.rb +260 -0
- data/lib/ibex/bison_import.rb +200 -0
- data/lib/ibex/bounded_subprocess.rb +171 -0
- data/lib/ibex/cli/ambiguity.rb +14 -5
- data/lib/ibex/cli/analysis.rb +134 -0
- data/lib/ibex/cli/bison_import.rb +121 -0
- data/lib/ibex/cli/config.rb +128 -0
- data/lib/ibex/cli/diagnostics.rb +31 -11
- data/lib/ibex/cli/documentation.rb +11 -8
- data/lib/ibex/cli/equiv.rb +169 -0
- data/lib/ibex/cli/error_messages.rb +11 -4
- data/lib/ibex/cli/explain.rb +14 -5
- data/lib/ibex/cli/fix.rb +203 -0
- data/lib/ibex/cli/formatting.rb +11 -10
- data/lib/ibex/cli/fuzz.rb +200 -0
- data/lib/ibex/cli/fuzz_regressions.rb +145 -0
- data/lib/ibex/cli/generation_artifacts.rb +53 -2
- data/lib/ibex/cli/generation_error_messages.rb +1 -1
- data/lib/ibex/cli/grammar_tests.rb +32 -14
- data/lib/ibex/cli/ir_tools.rb +5 -61
- data/lib/ibex/cli/outputs.rb +60 -33
- data/lib/ibex/cli/reduce.rb +202 -0
- data/lib/ibex/cli/reduce_reporting.rb +71 -0
- data/lib/ibex/cli/samples.rb +49 -23
- data/lib/ibex/cli/verify.rb +116 -0
- data/lib/ibex/cli/watch.rb +6 -5
- data/lib/ibex/cli.rb +357 -56
- data/lib/ibex/codegen/action_locations.rb +1 -1
- data/lib/ibex/codegen/action_method_source.rb +5 -6
- data/lib/ibex/codegen/action_source.rb +3 -2
- data/lib/ibex/codegen/ambiguity.rb +5 -4
- data/lib/ibex/codegen/explain.rb +123 -55
- data/lib/ibex/codegen/generated_action_abi.rb +10 -5
- data/lib/ibex/codegen/rbs.rb +15 -7
- data/lib/ibex/codegen/report.rb +25 -13
- data/lib/ibex/codegen/ruby.rb +28 -64
- data/lib/ibex/codegen/ruby_actions.rb +9 -6
- data/lib/ibex/codegen/ruby_syntax.rb +15 -9
- data/lib/ibex/configuration/analysis_grammar.rb +35 -0
- data/lib/ibex/configuration/explanation.rb +421 -0
- data/lib/ibex/configuration/inspector.rb +232 -0
- data/lib/ibex/configuration.rb +580 -0
- data/lib/ibex/coverage/collector.rb +21 -11
- data/lib/ibex/coverage/event_stream.rb +13 -7
- data/lib/ibex/coverage/report.rb +26 -18
- data/lib/ibex/coverage/runtime_event_validator.rb +30 -21
- data/lib/ibex/delta_reducer.rb +99 -0
- data/lib/ibex/diff.rb +140 -0
- data/lib/ibex/equiv/machine.rb +135 -0
- data/lib/ibex/equiv.rb +373 -0
- data/lib/ibex/fix.rb +557 -0
- data/lib/ibex/frontend/ast.rb +22 -2
- data/lib/ibex/frontend/bootstrap_parser.rb +6 -13
- data/lib/ibex/frontend/diagnostic.rb +1 -1
- data/lib/ibex/frontend/formatter.rb +72 -26
- data/lib/ibex/frontend/generated_parser.rb +147 -117
- data/lib/ibex/frontend/generated_parser_base.rb +7 -3
- data/lib/ibex/frontend/generated_parser_includes.rb +1 -11
- data/lib/ibex/frontend/generation.rb +1 -1
- data/lib/ibex/frontend/parser/declarations.rb +17 -2
- data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
- data/lib/ibex/frontend/regenerator.rb +1 -0
- data/lib/ibex/frontend/resolution.rb +2 -1
- data/lib/ibex/frontend/resolver.rb +1 -1
- data/lib/ibex/frontend/rule_documentation.rb +2 -1
- data/lib/ibex/frontend/source_cursor.rb +2 -2
- data/lib/ibex/frontend/source_span.rb +9 -1
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +38 -6
- data/lib/ibex/frontend/token_adapter.rb +10 -0
- data/lib/ibex/frontend.rb +1 -0
- data/lib/ibex/fuzz.rb +219 -0
- data/lib/ibex/generation_input.rb +1 -1
- data/lib/ibex/generation_manifest.rb +36 -25
- data/lib/ibex/generation_transaction.rb +1 -1
- data/lib/ibex/generation_transaction_recovery.rb +4 -4
- data/lib/ibex/generation_transaction_validation.rb +2 -2
- data/lib/ibex/grammar_tests.rb +1 -1
- data/lib/ibex/ir/automaton_ir.rb +61 -19
- data/lib/ibex/ir/grammar_ir.rb +76 -45
- data/lib/ibex/ir/lexer_ir.rb +5 -5
- data/lib/ibex/ir/parser_contract.rb +135 -0
- data/lib/ibex/ir/serialize.rb +203 -76
- data/lib/ibex/ir/validator/automaton.rb +64 -34
- data/lib/ibex/ir/validator/base.rb +51 -33
- data/lib/ibex/ir/validator/grammar.rb +113 -83
- data/lib/ibex/ir/validator/lexer.rb +2 -2
- data/lib/ibex/ir/validator.rb +2 -1
- data/lib/ibex/ir.rb +16 -3
- data/lib/ibex/lalr/build_metrics.rb +50 -2
- data/lib/ibex/lalr/builder.rb +191 -56
- data/lib/ibex/lalr/conflict_search.rb +15 -4
- data/lib/ibex/lalr/counterexample.rb +19 -14
- data/lib/ibex/lalr/direct_lookaheads.rb +110 -57
- data/lib/ibex/lalr/goto_follows.rb +229 -0
- data/lib/ibex/lalr/ielr/annotator.rb +214 -0
- data/lib/ibex/lalr/ielr/bits.rb +28 -0
- data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
- data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
- data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
- data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
- data/lib/ibex/lalr/ielr/split_state.rb +20 -0
- data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
- data/lib/ibex/lalr/ielr_partition.rb +22 -8
- data/lib/ibex/lalr/inadequacy_report.rb +50 -0
- data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
- data/lib/ibex/lalr/lr0_collection.rb +121 -0
- data/lib/ibex/lalr/unreachable_states.rb +80 -0
- data/lib/ibex/lalr.rb +52 -1
- data/lib/ibex/location.rb +3 -3
- data/lib/ibex/lsp/document_handlers.rb +9 -7
- data/lib/ibex/lsp/initialization_handlers.rb +9 -7
- data/lib/ibex/lsp/navigation_handlers.rb +25 -11
- data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
- data/lib/ibex/lsp/position_codec.rb +6 -2
- data/lib/ibex/lsp/request_handlers.rb +3 -2
- data/lib/ibex/lsp/request_support.rb +14 -7
- data/lib/ibex/lsp/server.rb +13 -11
- data/lib/ibex/lsp/symbol_index.rb +13 -13
- data/lib/ibex/lsp/symbol_index_builder.rb +30 -20
- data/lib/ibex/lsp/symbol_occurrence.rb +8 -2
- data/lib/ibex/lsp/transport.rb +13 -3
- data/lib/ibex/lsp/workspace.rb +5 -4
- data/lib/ibex/lsp/workspace_analyzer.rb +1 -1
- data/lib/ibex/lsp.rb +1 -0
- data/lib/ibex/messages/en.yml +28 -0
- data/lib/ibex/messages/ja.yml +28 -0
- data/lib/ibex/messages.rb +68 -0
- data/lib/ibex/metrics.rb +175 -0
- data/lib/ibex/normalize/declarations.rb +2 -0
- data/lib/ibex/normalize/diagnostics.rb +63 -38
- data/lib/ibex/normalize/expander.rb +5 -4
- data/lib/ibex/normalize/expression.rb +8 -6
- data/lib/ibex/normalize/grammar_builder.rb +26 -0
- data/lib/ibex/normalize/inline_expansion.rb +100 -49
- data/lib/ibex/normalize/lexer.rb +3 -3
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +11 -10
- data/lib/ibex/normalize/parameter_lowering.rb +40 -23
- data/lib/ibex/normalize/parameters.rb +31 -4
- data/lib/ibex/normalize/parser_configuration.rb +70 -0
- data/lib/ibex/normalize.rb +10 -20
- data/lib/ibex/racc_migration/report.rb +6 -3
- data/lib/ibex/rake_task.rb +1 -1
- data/lib/ibex/samples.rb +43 -13
- data/lib/ibex/table_artifact/builder.rb +266 -0
- data/lib/ibex/table_artifact/cst_projection.rb +70 -0
- data/lib/ibex/table_artifact/document.rb +39 -0
- data/lib/ibex/table_artifact/executor.rb +187 -0
- data/lib/ibex/table_artifact/serializer.rb +57 -0
- data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
- data/lib/ibex/table_artifact/validator/support.rb +86 -0
- data/lib/ibex/table_artifact/validator/tables.rb +238 -0
- data/lib/ibex/table_artifact/validator.rb +253 -0
- data/lib/ibex/table_artifact.rb +88 -0
- data/lib/ibex/table_simulation/result.rb +6 -2
- data/lib/ibex/table_simulation/step.rb +3 -1
- data/lib/ibex/tables.rb +14 -0
- data/lib/ibex/verifiable_generation_bundle.rb +86 -0
- data/lib/ibex/verification_report/builder.rb +159 -0
- data/lib/ibex/verification_report/canonical_ir.rb +123 -0
- data/lib/ibex/verification_report/logical_path.rb +68 -0
- data/lib/ibex/verification_report/validator.rb +329 -0
- data/lib/ibex/verification_report.rb +69 -0
- data/lib/ibex/verify/action_correspondence.rb +138 -0
- data/lib/ibex/verify/language_witness.rb +295 -0
- data/lib/ibex/verify/reference_collection.rb +190 -0
- data/lib/ibex/verify/result.rb +73 -0
- data/lib/ibex/verify/verifier.rb +598 -0
- data/lib/ibex/verify.rb +15 -0
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex/watch/runner.rb +10 -1
- data/lib/ibex/watch/source_snapshot.rb +13 -8
- data/lib/ibex.rb +10 -0
- data/schema/{automaton-ir-v1.schema.json → automaton-ir-definitions.schema.json} +6 -6
- data/schema/{automaton-ir-v2.schema.json → automaton-ir.schema.json} +14 -7
- data/schema/bison-import-v1.schema.json +106 -0
- data/schema/conflict-explanation-review-v1.schema.json +196 -0
- data/schema/conflict-explanation-study-v1.schema.json +528 -0
- data/schema/construction-profile-v1.schema.json +779 -0
- data/schema/diff-v1.schema.json +41 -0
- data/schema/direct-ielr-decision-v1.schema.json +200 -0
- data/schema/equiv-v1.schema.json +64 -0
- data/schema/error-ux-review-v1.schema.json +609 -0
- data/schema/error-ux-round2-review-v1.schema.json +191 -0
- data/schema/error-ux-round2-v1.schema.json +519 -0
- data/schema/explain-v1.schema.json +63 -1
- data/schema/fix-v1.schema.json +64 -0
- data/schema/fix-v2.schema.json +66 -0
- data/schema/fix-v3.schema.json +101 -0
- data/schema/fuzz-regression-v1.schema.json +79 -0
- data/schema/fuzz-v1.schema.json +114 -0
- data/schema/{grammar-ir-v2.schema.json → grammar-ir-extensions.schema.json} +20 -65
- data/schema/{grammar-ir-v1.schema.json → grammar-ir-foundation.schema.json} +3 -3
- data/schema/grammar-ir.schema.json +271 -0
- data/schema/ielr-benchmark-v1.schema.json +85 -0
- data/schema/lexer-profile-v1.schema.json +491 -0
- data/schema/metrics-v1.schema.json +60 -0
- data/schema/reduce-v1.schema.json +22 -0
- data/schema/reduce-v2.schema.json +63 -0
- data/schema/table-artifact-v1.schema.json +377 -0
- data/schema/verification-report-v1.schema.json +222 -0
- data/schema/verify-v1.schema.json +42 -0
- data/sig/ibex/analysis/digraph.rbs +19 -0
- data/sig/ibex/bison_import/importer.rbs +140 -0
- data/sig/ibex/bison_import/tokenizer.rbs +91 -0
- data/sig/ibex/bison_import.rbs +95 -0
- data/sig/ibex/bounded_subprocess.rbs +76 -0
- data/sig/ibex/cli/ambiguity.rbs +6 -0
- data/sig/ibex/cli/analysis.rbs +43 -0
- data/sig/ibex/cli/bison_import.rbs +32 -0
- data/sig/ibex/cli/config.rbs +35 -0
- data/sig/ibex/cli/diagnostics.rbs +16 -3
- data/sig/ibex/cli/documentation.rbs +5 -1
- data/sig/ibex/cli/equiv.rbs +49 -0
- data/sig/ibex/cli/error_messages.rbs +6 -0
- data/sig/ibex/cli/explain.rbs +6 -0
- data/sig/ibex/cli/fix.rbs +53 -0
- data/sig/ibex/cli/formatting.rbs +5 -1
- data/sig/ibex/cli/fuzz.rbs +47 -0
- data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
- data/sig/ibex/cli/generation_artifacts.rbs +21 -2
- data/sig/ibex/cli/generation_error_messages.rbs +2 -2
- data/sig/ibex/cli/grammar_tests.rbs +15 -3
- data/sig/ibex/cli/ir_tools.rbs +7 -19
- data/sig/ibex/cli/outputs.rbs +9 -3
- data/sig/ibex/cli/reduce.rbs +60 -0
- data/sig/ibex/cli/reduce_reporting.rbs +27 -0
- data/sig/ibex/cli/samples.rbs +8 -0
- data/sig/ibex/cli/verify.rbs +28 -0
- data/sig/ibex/cli/watch.rbs +2 -2
- data/sig/ibex/cli.rbs +79 -5
- data/sig/ibex/codegen/action_method_source.rbs +4 -4
- data/sig/ibex/codegen/explain.rbs +45 -25
- data/sig/ibex/codegen/generated_action_abi.rbs +14 -10
- data/sig/ibex/codegen/rbs.rbs +12 -10
- data/sig/ibex/codegen/report.rbs +12 -12
- data/sig/ibex/codegen/ruby.rbs +18 -15
- data/sig/ibex/codegen/ruby_actions.rbs +6 -6
- data/sig/ibex/codegen/ruby_syntax.rbs +10 -8
- data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
- data/sig/ibex/configuration/explanation.rbs +195 -0
- data/sig/ibex/configuration/inspector.rbs +53 -0
- data/sig/ibex/configuration.rbs +242 -0
- data/sig/ibex/coverage/collector.rbs +16 -14
- data/sig/ibex/coverage/event_stream.rbs +12 -10
- data/sig/ibex/coverage/report.rbs +20 -18
- data/sig/ibex/coverage/runtime_event_validator.rbs +38 -36
- data/sig/ibex/delta_reducer.rbs +38 -0
- data/sig/ibex/diff.rbs +47 -0
- data/sig/ibex/equiv/machine.rbs +54 -0
- data/sig/ibex/equiv.rbs +129 -0
- data/sig/ibex/fix.rbs +138 -0
- data/sig/ibex/frontend/ast.rbs +33 -7
- data/sig/ibex/frontend/bootstrap_parser.rbs +2 -0
- data/sig/ibex/frontend/diagnostic.rbs +2 -2
- data/sig/ibex/frontend/formatter.rbs +38 -30
- data/sig/ibex/frontend/generated_parser.rbs +87 -77
- data/sig/ibex/frontend/generated_parser_base.rbs +4 -2
- data/sig/ibex/frontend/parser/declarations.rbs +3 -0
- data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
- data/sig/ibex/frontend/resolution.rbs +3 -2
- data/sig/ibex/frontend/source_cursor.rbs +2 -2
- data/sig/ibex/frontend/source_span.rbs +5 -2
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +13 -1
- data/sig/ibex/frontend/token_adapter.rbs +6 -0
- data/sig/ibex/fuzz.rbs +71 -0
- data/sig/ibex/generation_input.rbs +2 -2
- data/sig/ibex/generation_manifest.rbs +35 -32
- data/sig/ibex/generation_transaction_recovery.rbs +2 -2
- data/sig/ibex/generation_transaction_validation.rbs +2 -2
- data/sig/ibex/grammar_tests.rbs +2 -2
- data/sig/ibex/ir/automaton_ir.rbs +30 -11
- data/sig/ibex/ir/grammar_ir.rbs +41 -27
- data/sig/ibex/ir/lexer_ir.rbs +8 -8
- data/sig/ibex/ir/parser_contract.rbs +69 -0
- data/sig/ibex/ir/serialize.rbs +63 -28
- data/sig/ibex/ir/validator/automaton.rbs +47 -44
- data/sig/ibex/ir/validator/base.rbs +35 -31
- data/sig/ibex/ir/validator/grammar.rbs +78 -67
- data/sig/ibex/ir/validator/lexer.rbs +4 -4
- data/sig/ibex/ir.rbs +9 -3
- data/sig/ibex/lalr/build_metrics.rbs +42 -2
- data/sig/ibex/lalr/builder.rbs +75 -24
- data/sig/ibex/lalr/conflict_search.rbs +5 -2
- data/sig/ibex/lalr/counterexample.rbs +17 -14
- data/sig/ibex/lalr/direct_lookaheads.rbs +35 -28
- data/sig/ibex/lalr/goto_follows.rbs +89 -0
- data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
- data/sig/ibex/lalr/ielr/bits.rbs +14 -0
- data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
- data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
- data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
- data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
- data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
- data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
- data/sig/ibex/lalr/ielr_partition.rbs +17 -5
- data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
- data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
- data/sig/ibex/lalr/lr0_collection.rbs +50 -0
- data/sig/ibex/lalr/unreachable_states.rbs +25 -0
- data/sig/ibex/lalr.rbs +11 -1
- data/sig/ibex/location.rbs +6 -6
- data/sig/ibex/lsp/document_handlers.rbs +8 -8
- data/sig/ibex/lsp/initialization_handlers.rbs +12 -12
- data/sig/ibex/lsp/navigation_handlers.rbs +15 -12
- data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
- data/sig/ibex/lsp/position_codec.rbs +8 -4
- data/sig/ibex/lsp/request_handlers.rbs +4 -4
- data/sig/ibex/lsp/request_support.rbs +8 -8
- data/sig/ibex/lsp/server.rbs +16 -16
- data/sig/ibex/lsp/symbol_index.rbs +20 -21
- data/sig/ibex/lsp/symbol_index_builder.rbs +9 -8
- data/sig/ibex/lsp/symbol_occurrence.rbs +11 -5
- data/sig/ibex/lsp/transport.rbs +18 -6
- data/sig/ibex/lsp/workspace.rbs +3 -2
- data/sig/ibex/lsp/workspace_analyzer.rbs +1 -1
- data/sig/ibex/messages.rbs +26 -0
- data/sig/ibex/metrics.rbs +50 -0
- data/sig/ibex/normalize/diagnostics.rbs +4 -4
- data/sig/ibex/normalize/expander.rbs +2 -2
- data/sig/ibex/normalize/expression.rbs +10 -8
- data/sig/ibex/normalize/grammar_builder.rbs +11 -0
- data/sig/ibex/normalize/inline_expansion.rbs +59 -50
- data/sig/ibex/normalize/lexer.rbs +4 -4
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +15 -14
- data/sig/ibex/normalize/parameter_lowering.rbs +18 -18
- data/sig/ibex/normalize/parameters.rbs +13 -8
- data/sig/ibex/normalize/parser_configuration.rbs +23 -0
- data/sig/ibex/normalize.rbs +11 -5
- data/sig/ibex/racc_migration/report.rbs +8 -6
- data/sig/ibex/rake_task.rbs +1 -1
- data/sig/ibex/samples.rbs +13 -4
- data/sig/ibex/table_artifact/builder.rbs +93 -0
- data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
- data/sig/ibex/table_artifact/document.rbs +27 -0
- data/sig/ibex/table_artifact/executor.rbs +66 -0
- data/sig/ibex/table_artifact/serializer.rbs +25 -0
- data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
- data/sig/ibex/table_artifact/validator/support.rbs +46 -0
- data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
- data/sig/ibex/table_artifact/validator.rbs +66 -0
- data/sig/ibex/table_artifact.rbs +32 -0
- data/sig/ibex/table_simulation/result.rbs +8 -4
- data/sig/ibex/table_simulation/step.rbs +4 -2
- data/sig/ibex/tables.rbs +10 -9
- data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
- data/sig/ibex/verification_report/builder.rbs +53 -0
- data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
- data/sig/ibex/verification_report/logical_path.rbs +34 -0
- data/sig/ibex/verification_report/validator.rbs +114 -0
- data/sig/ibex/verification_report.rbs +44 -0
- data/sig/ibex/verify/action_correspondence.rbs +50 -0
- data/sig/ibex/verify/language_witness.rbs +112 -0
- data/sig/ibex/verify/reference_collection.rbs +63 -0
- data/sig/ibex/verify/result.rbs +52 -0
- data/sig/ibex/verify/verifier.rbs +170 -0
- data/sig/ibex/verify.rbs +6 -0
- data/sig/ibex/watch/runner.rbs +12 -2
- data/sig/ibex/watch/source_snapshot.rbs +13 -9
- metadata +232 -12
- data/lib/ibex/ir/migration.rb +0 -120
- data/sig/ibex/ir/migration.rbs +0 -34
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.
|
|
@@ -19,6 +19,8 @@ module Ibex
|
|
|
19
19
|
|
|
20
20
|
type formatter_element = { segment: Segment, external: external_token?, role: Symbol?, gap: Array[Segment] }
|
|
21
21
|
|
|
22
|
+
type formatter_state = { section: :declarations | :rules, precedence_closer: external_token?, conversion: bool, conversion_name: bool, parser: bool, parser_key: bool, depth: Integer, rule_colon: bool }
|
|
23
|
+
|
|
22
24
|
# @rbs (String source, ?file: String, ?mode: Symbol) -> String
|
|
23
25
|
def self.format: (String source, ?file: String, ?mode: Symbol) -> String
|
|
24
26
|
|
|
@@ -45,32 +47,38 @@ module Ibex
|
|
|
45
47
|
# @rbs (Array[formatter_element] elements) -> void
|
|
46
48
|
def annotate_comment_indentation: (Array[formatter_element] elements) -> void
|
|
47
49
|
|
|
48
|
-
# @rbs (external_token external,
|
|
49
|
-
def token_role: (external_token external,
|
|
50
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
51
|
+
def token_role: (external_token external, formatter_state state) -> Symbol?
|
|
52
|
+
|
|
53
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
54
|
+
def document_token_role: (external_token external, formatter_state state) -> Symbol?
|
|
55
|
+
|
|
56
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
57
|
+
def nested_declaration_role: (external_token external, formatter_state state) -> Symbol?
|
|
50
58
|
|
|
51
|
-
# @rbs (
|
|
52
|
-
def
|
|
59
|
+
# @rbs (formatter_state state) -> Symbol?
|
|
60
|
+
def section_end_role: (formatter_state state) -> Symbol?
|
|
53
61
|
|
|
54
|
-
# @rbs (
|
|
55
|
-
def
|
|
62
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
63
|
+
def rule_token_role: (external_token external, formatter_state state) -> Symbol?
|
|
56
64
|
|
|
57
|
-
# @rbs (external_token external,
|
|
58
|
-
def
|
|
65
|
+
# @rbs (external_token external, formatter_state state) -> Symbol
|
|
66
|
+
def precedence_role: (external_token external, formatter_state state) -> Symbol
|
|
59
67
|
|
|
60
|
-
# @rbs (external_token external,
|
|
61
|
-
def
|
|
68
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
69
|
+
def advance_role_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
62
70
|
|
|
63
|
-
# @rbs (external_token external, Symbol? role,
|
|
64
|
-
def
|
|
71
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
72
|
+
def advance_parser_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
65
73
|
|
|
66
|
-
# @rbs (external_token external, Symbol? role,
|
|
67
|
-
def advance_precedence_state: (external_token external, Symbol? role,
|
|
74
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
75
|
+
def advance_precedence_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
68
76
|
|
|
69
|
-
# @rbs (external_token external, Symbol? role,
|
|
70
|
-
def advance_conversion_state: (external_token external, Symbol? role,
|
|
77
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
78
|
+
def advance_conversion_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
71
79
|
|
|
72
|
-
# @rbs (external_token external, Symbol? role,
|
|
73
|
-
def advance_rule_state: (external_token external, Symbol? role,
|
|
80
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
81
|
+
def advance_rule_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
74
82
|
|
|
75
83
|
# @rbs (formatter_element? previous, formatter_element current) -> String
|
|
76
84
|
def separator: (formatter_element? previous, formatter_element current) -> String
|
|
@@ -113,23 +121,23 @@ module Ibex
|
|
|
113
121
|
# @rbs (String text) -> bool
|
|
114
122
|
def text_ends_with_newline?: (String text) -> bool
|
|
115
123
|
|
|
116
|
-
# @rbs (
|
|
117
|
-
def same_semantic_projection?: (
|
|
124
|
+
# @rbs (Object? left, Object? right) -> bool
|
|
125
|
+
def same_semantic_projection?: (Object? left, Object? right) -> bool
|
|
118
126
|
|
|
119
|
-
# @rbs (
|
|
120
|
-
def comparable_semantic_values?: (
|
|
127
|
+
# @rbs (Object? left, Object? right) -> bool
|
|
128
|
+
def comparable_semantic_values?: (Object? left, Object? right) -> bool
|
|
121
129
|
|
|
122
|
-
# @rbs (Hash[
|
|
123
|
-
def comparable_semantic_hashes?: (Hash[
|
|
130
|
+
# @rbs (Hash[Object?, Object?] left, Object? right) -> bool
|
|
131
|
+
def comparable_semantic_hashes?: (Hash[Object?, Object?] left, Object? right) -> bool
|
|
124
132
|
|
|
125
|
-
# @rbs (Array[[
|
|
126
|
-
def append_semantic_children: (Array[[
|
|
133
|
+
# @rbs (Array[[Object?, Object?]] pending, Object? left, Object? right) -> void
|
|
134
|
+
def append_semantic_children: (Array[[ Object?, Object? ]] pending, Object? left, Object? right) -> void
|
|
127
135
|
|
|
128
|
-
# @rbs (Struct[
|
|
129
|
-
def semantic_members: (Struct[
|
|
136
|
+
# @rbs (Struct[Object?] value) -> Array[Symbol]
|
|
137
|
+
def semantic_members: (Struct[Object?] value) -> Array[Symbol]
|
|
130
138
|
|
|
131
|
-
# @rbs (Hash[
|
|
132
|
-
def semantic_keys: (Hash[
|
|
139
|
+
# @rbs (Hash[Object?, Object?] value) -> Array[Object?]
|
|
140
|
+
def semantic_keys: (Hash[Object?, Object?] value) -> Array[Object?]
|
|
133
141
|
end
|
|
134
142
|
end
|
|
135
143
|
end
|