ibex 0.1.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 +89 -123
- data/docs/architecture.md +477 -31
- 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 +106 -0
- data/docs/cst.md +237 -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 +306 -0
- data/docs/direct-ielr-decision.md +120 -0
- data/docs/direct-multi-entry-decision.md +82 -0
- data/docs/editor-setup.md +26 -0
- 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 +114 -0
- data/docs/getting-started.md +80 -0
- data/docs/grammar-reference.md +629 -18
- 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 +56 -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 +45 -6
- data/docs/release-readiness.md +221 -0
- data/docs/repair-semantics.md +123 -0
- data/docs/runtime-abi-evolution.md +307 -0
- data/docs/stability.md +234 -0
- 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/examples/README.md +60 -0
- data/examples/calculator.y +44 -0
- data/examples/csv.y +32 -0
- data/examples/ini.y +70 -0
- data/examples/json.y +48 -0
- data/examples/tiny_language.y +75 -0
- data/lib/ibex/analysis/digraph.rb +128 -0
- data/lib/ibex/analysis/sets.rb +5 -4
- data/lib/ibex/analysis.rb +1 -0
- data/lib/ibex/artifact_set.rb +63 -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 +75 -0
- 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/counterexample_options.rb +6 -2
- data/lib/ibex/cli/coverage.rb +173 -0
- data/lib/ibex/cli/debug.rb +106 -0
- data/lib/ibex/cli/diagnostics.rb +136 -0
- data/lib/ibex/cli/documentation.rb +70 -0
- data/lib/ibex/cli/equiv.rb +169 -0
- data/lib/ibex/cli/error_messages.rb +184 -0
- data/lib/ibex/cli/explain.rb +85 -0
- data/lib/ibex/cli/fix.rb +203 -0
- data/lib/ibex/cli/formatting.rb +387 -0
- data/lib/ibex/cli/fuzz.rb +200 -0
- data/lib/ibex/cli/fuzz_regressions.rb +145 -0
- data/lib/ibex/cli/generation_artifacts.rb +189 -0
- data/lib/ibex/cli/generation_error_messages.rb +39 -0
- data/lib/ibex/cli/grammar_tests.rb +140 -0
- data/lib/ibex/cli/ir_tools.rb +128 -0
- data/lib/ibex/cli/lsp.rb +33 -0
- data/lib/ibex/cli/outputs.rb +133 -23
- data/lib/ibex/cli/racc_migration.rb +87 -0
- data/lib/ibex/cli/reduce.rb +202 -0
- data/lib/ibex/cli/reduce_reporting.rb +71 -0
- data/lib/ibex/cli/samples.rb +118 -0
- data/lib/ibex/cli/verify.rb +116 -0
- data/lib/ibex/cli/watch.rb +104 -0
- data/lib/ibex/cli.rb +825 -55
- data/lib/ibex/codegen/action_locations.rb +103 -0
- data/lib/ibex/codegen/action_method_source.rb +209 -0
- data/lib/ibex/codegen/action_source.rb +119 -0
- data/lib/ibex/codegen/ambiguity.rb +174 -0
- data/lib/ibex/codegen/cst_metadata.rb +171 -0
- data/lib/ibex/codegen/documentation.rb +170 -0
- data/lib/ibex/codegen/explain.rb +380 -0
- data/lib/ibex/codegen/generated_action_abi.rb +293 -0
- data/lib/ibex/codegen/html.rb +94 -10
- data/lib/ibex/codegen/mermaid.rb +43 -0
- data/lib/ibex/codegen/railroad.rb +197 -0
- data/lib/ibex/codegen/railroad_documentation.rb +59 -0
- data/lib/ibex/codegen/rbs.rb +331 -2
- data/lib/ibex/codegen/report.rb +67 -15
- data/lib/ibex/codegen/ruby.rb +305 -66
- data/lib/ibex/codegen/ruby_actions.rb +146 -0
- data/lib/ibex/codegen/ruby_ast.rb +121 -0
- data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
- data/lib/ibex/codegen/ruby_lexer.rb +83 -0
- data/lib/ibex/codegen/ruby_syntax.rb +96 -0
- data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
- data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
- data/lib/ibex/codegen/symbol_labels.rb +1 -1
- data/lib/ibex/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 +198 -0
- data/lib/ibex/coverage/event_stream.rb +103 -0
- data/lib/ibex/coverage/report.rb +267 -0
- data/lib/ibex/coverage/runtime_event_validator.rb +169 -0
- data/lib/ibex/coverage.rb +13 -0
- 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/error_messages/parser.rb +159 -0
- data/lib/ibex/error_messages/parser_v2.rb +198 -0
- data/lib/ibex/error_messages/renderer.rb +65 -0
- data/lib/ibex/error_messages/sentence_search.rb +196 -0
- data/lib/ibex/error_messages/update.rb +169 -0
- data/lib/ibex/error_messages.rb +165 -0
- data/lib/ibex/fix.rb +557 -0
- data/lib/ibex/frontend/ast.rb +166 -7
- data/lib/ibex/frontend/bootstrap_parser.rb +40 -4
- data/lib/ibex/frontend/diagnostic.rb +81 -0
- data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
- data/lib/ibex/frontend/dsl.rb +66 -7
- data/lib/ibex/frontend/formatter.rb +453 -0
- data/lib/ibex/frontend/generated_parser.rb +644 -190
- data/lib/ibex/frontend/generated_parser_base.rb +170 -32
- data/lib/ibex/frontend/generated_parser_includes.rb +51 -0
- data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
- data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
- data/lib/ibex/frontend/generation.rb +33 -0
- data/lib/ibex/frontend/lexer.rb +162 -10
- data/lib/ibex/frontend/lexer_recovery.rb +84 -0
- data/lib/ibex/frontend/parser/declarations.rb +262 -11
- data/lib/ibex/frontend/parser/parameters.rb +82 -0
- data/lib/ibex/frontend/parser/rules.rb +43 -6
- data/lib/ibex/frontend/parser.rb +182 -4
- data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
- data/lib/ibex/frontend/regenerator.rb +27 -1
- data/lib/ibex/frontend/resolution.rb +70 -0
- data/lib/ibex/frontend/resolver.rb +217 -0
- data/lib/ibex/frontend/rule_documentation.rb +104 -0
- data/lib/ibex/frontend/source_cursor.rb +133 -9
- data/lib/ibex/frontend/source_document.rb +229 -0
- data/lib/ibex/frontend/source_loader.rb +150 -0
- data/lib/ibex/frontend/source_span.rb +89 -0
- data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
- data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +244 -22
- data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
- data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
- data/lib/ibex/frontend/token_adapter.rb +18 -3
- data/lib/ibex/frontend.rb +14 -2
- data/lib/ibex/fuzz.rb +219 -0
- data/lib/ibex/generation_input.rb +57 -0
- data/lib/ibex/generation_manifest.rb +211 -0
- data/lib/ibex/generation_transaction.rb +261 -0
- data/lib/ibex/generation_transaction_recovery.rb +109 -0
- data/lib/ibex/generation_transaction_validation.rb +196 -0
- data/lib/ibex/grammar_tests.rb +206 -0
- data/lib/ibex/ir/automaton_ir.rb +86 -11
- data/lib/ibex/ir/grammar_ir.rb +170 -26
- data/lib/ibex/ir/lexer_ir.rb +76 -0
- data/lib/ibex/ir/parser_contract.rb +135 -0
- data/lib/ibex/ir/serialize.rb +268 -50
- data/lib/ibex/ir/validator/automaton.rb +375 -0
- data/lib/ibex/ir/validator/base.rb +147 -0
- data/lib/ibex/ir/validator/grammar.rb +634 -0
- data/lib/ibex/ir/validator/lexer.rb +113 -0
- data/lib/ibex/ir/validator.rb +63 -0
- data/lib/ibex/ir.rb +71 -5
- data/lib/ibex/lalr/build_metrics.rb +71 -0
- data/lib/ibex/lalr/builder.rb +514 -52
- data/lib/ibex/lalr/conflict.rb +1 -0
- data/lib/ibex/lalr/conflict_search.rb +26 -9
- data/lib/ibex/lalr/counterexample.rb +38 -18
- data/lib/ibex/lalr/direct_lookaheads.rb +289 -0
- 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 +166 -0
- 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/on_error_reductions.rb +74 -0
- data/lib/ibex/lalr/unreachable_states.rb +80 -0
- data/lib/ibex/lalr.rb +59 -1
- data/lib/ibex/location.rb +129 -0
- data/lib/ibex/lsp/document_handlers.rb +68 -0
- data/lib/ibex/lsp/document_store.rb +264 -0
- data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
- data/lib/ibex/lsp/document_store_validation.rb +61 -0
- data/lib/ibex/lsp/initialization_handlers.rb +80 -0
- data/lib/ibex/lsp/navigation_handlers.rb +70 -0
- data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
- data/lib/ibex/lsp/position_codec.rb +113 -0
- data/lib/ibex/lsp/protocol_error.rb +33 -0
- data/lib/ibex/lsp/request_handlers.rb +46 -0
- data/lib/ibex/lsp/request_support.rb +94 -0
- data/lib/ibex/lsp/server.rb +148 -0
- data/lib/ibex/lsp/symbol_index.rb +241 -0
- data/lib/ibex/lsp/symbol_index_builder.rb +277 -0
- data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
- data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
- data/lib/ibex/lsp/symbol_occurrence.rb +23 -0
- data/lib/ibex/lsp/transport.rb +128 -0
- data/lib/ibex/lsp/workspace.rb +128 -0
- data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
- data/lib/ibex/lsp.rb +33 -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 +142 -7
- data/lib/ibex/normalize/diagnostics.rb +94 -24
- data/lib/ibex/normalize/expander.rb +64 -59
- data/lib/ibex/normalize/expression.rb +63 -40
- data/lib/ibex/normalize/grammar_builder.rb +26 -0
- data/lib/ibex/normalize/inline_expansion.rb +465 -0
- data/lib/ibex/normalize/inline_validation.rb +174 -0
- data/lib/ibex/normalize/lexer.rb +131 -0
- data/lib/ibex/normalize/named_references.rb +60 -0
- data/lib/ibex/normalize/nodes.rb +46 -0
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +70 -0
- data/lib/ibex/normalize/parameter_lowering.rb +143 -0
- data/lib/ibex/normalize/parameter_substitution.rb +125 -0
- data/lib/ibex/normalize/parameter_validation.rb +140 -0
- data/lib/ibex/normalize/parameters.rb +226 -0
- data/lib/ibex/normalize/parser_configuration.rb +70 -0
- data/lib/ibex/normalize/recovery_declarations.rb +84 -0
- data/lib/ibex/normalize.rb +172 -17
- data/lib/ibex/racc_migration/checker.rb +122 -0
- data/lib/ibex/racc_migration/harness.rb +177 -0
- data/lib/ibex/racc_migration/report.rb +97 -0
- data/lib/ibex/racc_migration.rb +12 -0
- data/lib/ibex/rake_task.rb +116 -0
- data/lib/ibex/samples.rb +216 -0
- 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 +55 -0
- data/lib/ibex/table_simulation/simulator.rb +253 -0
- data/lib/ibex/table_simulation/step.rb +62 -0
- data/lib/ibex/table_simulation/text.rb +31 -0
- data/lib/ibex/table_simulation.rb +13 -0
- data/lib/ibex/tables.rb +22 -69
- 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 +181 -0
- data/lib/ibex/watch/source_snapshot.rb +98 -0
- data/lib/ibex/watch.rb +11 -0
- data/lib/ibex.rb +35 -1
- data/schema/automaton-ir-definitions.schema.json +401 -0
- data/schema/automaton-ir.schema.json +65 -0
- data/schema/benchmark-v1.schema.json +212 -0
- data/schema/benchmark-v2.schema.json +61 -0
- 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/cst-v1.json +170 -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/error-ux-v1.schema.json +258 -0
- data/schema/explain-v1.schema.json +495 -0
- 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/frontend-diagnostics-v1.schema.json +154 -0
- data/schema/fuzz-regression-v1.schema.json +79 -0
- data/schema/fuzz-v1.schema.json +114 -0
- data/schema/generation-manifest-v1.schema.json +115 -0
- data/schema/grammar-ir-extensions.schema.json +734 -0
- data/schema/grammar-ir-foundation.schema.json +426 -0
- data/schema/grammar-ir.schema.json +271 -0
- data/schema/ielr-benchmark-v1.schema.json +85 -0
- data/schema/lexer-ir-v1.schema.json +215 -0
- data/schema/lexer-profile-v1.schema.json +491 -0
- data/schema/metrics-v1.schema.json +60 -0
- data/schema/migration-check-v1.schema.json +60 -0
- data/schema/performance-comparison-v1.schema.json +395 -0
- data/schema/public-performance-comparison-v1.schema.json +506 -0
- data/schema/public-performance-profile-v1.schema.json +360 -0
- data/schema/reduce-v1.schema.json +22 -0
- data/schema/reduce-v2.schema.json +63 -0
- data/schema/runtime-coverage-v1.schema.json +86 -0
- data/schema/runtime-event-v1.schema.json +308 -0
- data/schema/table-artifact-v1.schema.json +377 -0
- data/schema/table-simulation-v1.schema.json +70 -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/artifact_set.rbs +37 -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 +28 -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/counterexample_options.rbs +2 -0
- data/sig/ibex/cli/coverage.rbs +53 -0
- data/sig/ibex/cli/debug.rbs +28 -0
- data/sig/ibex/cli/diagnostics.rbs +51 -0
- data/sig/ibex/cli/documentation.rbs +29 -0
- data/sig/ibex/cli/equiv.rbs +49 -0
- data/sig/ibex/cli/error_messages.rbs +63 -0
- data/sig/ibex/cli/explain.rbs +31 -0
- data/sig/ibex/cli/fix.rbs +53 -0
- data/sig/ibex/cli/formatting.rbs +107 -0
- data/sig/ibex/cli/fuzz.rbs +47 -0
- data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
- data/sig/ibex/cli/generation_artifacts.rbs +69 -0
- data/sig/ibex/cli/generation_error_messages.rbs +19 -0
- data/sig/ibex/cli/grammar_tests.rbs +48 -0
- data/sig/ibex/cli/ir_tools.rbs +39 -0
- data/sig/ibex/cli/lsp.rbs +14 -0
- data/sig/ibex/cli/outputs.rbs +26 -3
- data/sig/ibex/cli/racc_migration.rbs +30 -0
- data/sig/ibex/cli/reduce.rbs +60 -0
- data/sig/ibex/cli/reduce_reporting.rbs +27 -0
- data/sig/ibex/cli/samples.rbs +38 -0
- data/sig/ibex/cli/verify.rbs +28 -0
- data/sig/ibex/cli/watch.rbs +43 -0
- data/sig/ibex/cli.rbs +182 -9
- data/sig/ibex/codegen/action_locations.rbs +45 -0
- data/sig/ibex/codegen/action_method_source.rbs +65 -0
- data/sig/ibex/codegen/action_source.rbs +50 -0
- data/sig/ibex/codegen/ambiguity.rbs +60 -0
- data/sig/ibex/codegen/cst_metadata.rbs +59 -0
- data/sig/ibex/codegen/documentation.rbs +50 -0
- data/sig/ibex/codegen/explain.rbs +105 -0
- data/sig/ibex/codegen/generated_action_abi.rbs +105 -0
- data/sig/ibex/codegen/html.rbs +18 -2
- data/sig/ibex/codegen/mermaid.rbs +16 -0
- data/sig/ibex/codegen/railroad.rbs +82 -0
- data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
- data/sig/ibex/codegen/rbs.rbs +86 -4
- data/sig/ibex/codegen/report.rbs +16 -8
- data/sig/ibex/codegen/ruby.rbs +105 -28
- data/sig/ibex/codegen/ruby_actions.rbs +54 -0
- data/sig/ibex/codegen/ruby_ast.rbs +34 -0
- data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
- data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
- data/sig/ibex/codegen/ruby_syntax.rbs +27 -0
- data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
- data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
- 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 +78 -0
- data/sig/ibex/coverage/event_stream.rbs +44 -0
- data/sig/ibex/coverage/report.rbs +102 -0
- data/sig/ibex/coverage/runtime_event_validator.rbs +70 -0
- data/sig/ibex/coverage.rbs +7 -0
- 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/error_messages/parser.rbs +58 -0
- data/sig/ibex/error_messages/parser_v2.rbs +67 -0
- data/sig/ibex/error_messages/renderer.rbs +23 -0
- data/sig/ibex/error_messages/sentence_search.rbs +80 -0
- data/sig/ibex/error_messages/update.rbs +43 -0
- data/sig/ibex/error_messages.rbs +85 -0
- data/sig/ibex/fix.rbs +138 -0
- data/sig/ibex/frontend/ast.rbs +237 -22
- data/sig/ibex/frontend/bootstrap_parser.rbs +13 -0
- data/sig/ibex/frontend/diagnostic.rbs +53 -0
- data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
- data/sig/ibex/frontend/dsl.rbs +33 -4
- data/sig/ibex/frontend/formatter.rbs +143 -0
- data/sig/ibex/frontend/generated_parser.rbs +228 -68
- data/sig/ibex/frontend/generated_parser_base.rbs +65 -12
- data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
- data/sig/ibex/frontend/generation.rbs +6 -0
- data/sig/ibex/frontend/lexer.rbs +49 -2
- data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
- data/sig/ibex/frontend/parser/declarations.rbs +57 -0
- data/sig/ibex/frontend/parser/parameters.rbs +28 -0
- data/sig/ibex/frontend/parser/rules.rbs +3 -0
- data/sig/ibex/frontend/parser.rbs +66 -0
- data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
- data/sig/ibex/frontend/regenerator.rbs +11 -0
- data/sig/ibex/frontend/resolution.rbs +34 -0
- data/sig/ibex/frontend/resolver.rbs +91 -0
- data/sig/ibex/frontend/rule_documentation.rbs +42 -0
- data/sig/ibex/frontend/source_cursor.rbs +38 -5
- data/sig/ibex/frontend/source_document.rbs +119 -0
- data/sig/ibex/frontend/source_loader.rbs +66 -0
- data/sig/ibex/frontend/source_span.rbs +56 -0
- data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
- data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +83 -3
- data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
- data/sig/ibex/frontend/token_adapter.rbs +11 -2
- data/sig/ibex/frontend.rbs +1 -1
- data/sig/ibex/fuzz.rbs +71 -0
- data/sig/ibex/generation_input.rbs +37 -0
- data/sig/ibex/generation_manifest.rbs +70 -0
- data/sig/ibex/generation_transaction.rbs +82 -0
- data/sig/ibex/generation_transaction_recovery.rbs +36 -0
- data/sig/ibex/generation_transaction_validation.rbs +65 -0
- data/sig/ibex/grammar_tests.rbs +93 -0
- data/sig/ibex/ir/automaton_ir.rbs +35 -10
- data/sig/ibex/ir/grammar_ir.rbs +96 -22
- data/sig/ibex/ir/lexer_ir.rbs +57 -0
- data/sig/ibex/ir/parser_contract.rbs +69 -0
- data/sig/ibex/ir/serialize.rbs +75 -23
- data/sig/ibex/ir/validator/automaton.rbs +112 -0
- data/sig/ibex/ir/validator/base.rbs +69 -0
- data/sig/ibex/ir/validator/grammar.rbs +195 -0
- data/sig/ibex/ir/validator/lexer.rbs +37 -0
- data/sig/ibex/ir/validator.rbs +16 -0
- data/sig/ibex/ir.rbs +45 -5
- data/sig/ibex/lalr/build_metrics.rbs +60 -0
- data/sig/ibex/lalr/builder.rbs +150 -19
- data/sig/ibex/lalr/conflict_search.rbs +12 -5
- data/sig/ibex/lalr/counterexample.rbs +20 -14
- data/sig/ibex/lalr/direct_lookaheads.rbs +93 -0
- 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 +71 -0
- 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/on_error_reductions.rbs +22 -0
- data/sig/ibex/lalr/unreachable_states.rbs +25 -0
- data/sig/ibex/lalr.rbs +17 -1
- data/sig/ibex/location.rbs +67 -0
- data/sig/ibex/lsp/document_handlers.rbs +24 -0
- data/sig/ibex/lsp/document_store.rbs +94 -0
- data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
- data/sig/ibex/lsp/document_store_validation.rbs +26 -0
- data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
- data/sig/ibex/lsp/navigation_handlers.rbs +33 -0
- data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
- data/sig/ibex/lsp/position_codec.rbs +44 -0
- data/sig/ibex/lsp/protocol_error.rbs +32 -0
- data/sig/ibex/lsp/request_handlers.rbs +26 -0
- data/sig/ibex/lsp/request_support.rbs +40 -0
- data/sig/ibex/lsp/server.rbs +55 -0
- data/sig/ibex/lsp/symbol_index.rbs +77 -0
- data/sig/ibex/lsp/symbol_index_builder.rbs +88 -0
- data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
- data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
- data/sig/ibex/lsp/symbol_occurrence.rbs +31 -0
- data/sig/ibex/lsp/transport.rbs +47 -0
- data/sig/ibex/lsp/workspace.rbs +42 -0
- data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
- data/sig/ibex/lsp.rbs +7 -0
- data/sig/ibex/messages.rbs +26 -0
- data/sig/ibex/metrics.rbs +50 -0
- data/sig/ibex/normalize/declarations.rbs +31 -0
- data/sig/ibex/normalize/diagnostics.rbs +13 -4
- data/sig/ibex/normalize/expander.rbs +22 -16
- data/sig/ibex/normalize/expression.rbs +11 -9
- data/sig/ibex/normalize/grammar_builder.rbs +11 -0
- data/sig/ibex/normalize/inline_expansion.rbs +129 -0
- data/sig/ibex/normalize/inline_validation.rbs +40 -0
- data/sig/ibex/normalize/lexer.rbs +37 -0
- data/sig/ibex/normalize/named_references.rbs +20 -0
- data/sig/ibex/normalize/nodes.rbs +14 -0
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +33 -0
- data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
- data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
- data/sig/ibex/normalize/parameter_validation.rbs +44 -0
- data/sig/ibex/normalize/parameters.rbs +51 -0
- data/sig/ibex/normalize/parser_configuration.rbs +23 -0
- data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
- data/sig/ibex/normalize.rbs +129 -18
- data/sig/ibex/racc_migration/checker.rbs +36 -0
- data/sig/ibex/racc_migration/harness.rbs +16 -0
- data/sig/ibex/racc_migration/report.rbs +55 -0
- data/sig/ibex/racc_migration.rbs +8 -0
- data/sig/ibex/rake_task.rbs +51 -0
- data/sig/ibex/samples.rbs +60 -0
- 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 +36 -0
- data/sig/ibex/table_simulation/simulator.rbs +98 -0
- data/sig/ibex/table_simulation/step.rbs +42 -0
- data/sig/ibex/table_simulation/text.rbs +14 -0
- data/sig/ibex/table_simulation.rbs +7 -0
- data/sig/ibex/tables.rbs +10 -35
- 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 +58 -0
- data/sig/ibex/watch/source_snapshot.rbs +46 -0
- data/sig/ibex/watch.rbs +7 -0
- data/sig/ibex.rbs +2 -0
- metadata +524 -19
- data/.rubocop.yml +0 -43
- data/CHANGELOG.md +0 -30
- data/Rakefile +0 -25
- data/Steepfile +0 -10
- data/docs/compat-notes.md +0 -37
- data/docs/lexer-coverage.md +0 -14
- data/docs/phase10-extensions.md +0 -27
- data/gemfiles/Gemfile +0 -7
- data/gemfiles/Gemfile.lock +0 -98
- data/lib/ibex/frontend/grammar.y +0 -156
- data/lib/ibex/runtime/parser.rb +0 -360
- data/lib/ibex/runtime.rb +0 -8
- data/sig/ibex/runtime/parser.rbs +0 -167
- data/sig/ibex/runtime.rbs +0 -6
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Generated from lib/ibex/verify/language_witness.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Verify
|
|
5
|
+
type witness_status = :accepted | :error | :missing_entry | :shifted
|
|
6
|
+
|
|
7
|
+
# Compares canonical and submitted parser acceptance over a bounded set of
|
|
8
|
+
# terminal sequences. This is a semantic witness, not a proof of language
|
|
9
|
+
# equivalence: the reference collection is complete within its budgets and
|
|
10
|
+
# the token enumeration is deliberately finite.
|
|
11
|
+
class LanguageWitness
|
|
12
|
+
class Difference
|
|
13
|
+
attr_reader entry: String
|
|
14
|
+
|
|
15
|
+
attr_reader tokens: Array[String]
|
|
16
|
+
|
|
17
|
+
attr_reader canonical: witness_status
|
|
18
|
+
|
|
19
|
+
attr_reader target: witness_status
|
|
20
|
+
|
|
21
|
+
# @rbs (entry: String, tokens: Array[String], canonical: witness_status,
|
|
22
|
+
# target: witness_status) -> void
|
|
23
|
+
def initialize: (entry: String, tokens: Array[String], canonical: witness_status, target: witness_status) -> void
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Result
|
|
27
|
+
attr_reader differences: Array[Difference]
|
|
28
|
+
|
|
29
|
+
attr_reader explored: Integer
|
|
30
|
+
|
|
31
|
+
attr_reader truncated: bool
|
|
32
|
+
|
|
33
|
+
attr_reader max_tokens: Integer
|
|
34
|
+
|
|
35
|
+
attr_reader max_cases: Integer
|
|
36
|
+
|
|
37
|
+
# @rbs (differences: Array[Difference], explored: Integer, truncated: bool,
|
|
38
|
+
# max_tokens: Integer, max_cases: Integer) -> void
|
|
39
|
+
def initialize: (differences: Array[Difference], explored: Integer, truncated: bool, max_tokens: Integer, max_cases: Integer) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs () -> bool
|
|
42
|
+
def ok?: () -> bool
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @rbs (IR::Grammar grammar, IR::Automaton target, ?max_tokens: Integer,
|
|
46
|
+
# ?max_cases: Integer, ?max_states: Integer, ?max_items: Integer) -> void
|
|
47
|
+
def initialize: (IR::Grammar grammar, IR::Automaton target, ?max_tokens: Integer, ?max_cases: Integer, ?max_states: Integer, ?max_items: Integer) -> void
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Result
|
|
50
|
+
def verify: () -> Result
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
# @rbs () -> Array[IR::GrammarSymbol]
|
|
55
|
+
def input_tokens: () -> Array[IR::GrammarSymbol]
|
|
56
|
+
|
|
57
|
+
# @rbs (String, Array[Integer], Array[Difference], Integer) -> [Integer, bool]
|
|
58
|
+
def verify_entry: (String, Array[Integer], Array[Difference], Integer) -> [ Integer, bool ]
|
|
59
|
+
|
|
60
|
+
# @rbs (Integer id) -> String
|
|
61
|
+
def token_name: (Integer id) -> String
|
|
62
|
+
|
|
63
|
+
# @rbs (String entry, Array[Integer]) -> witness_status
|
|
64
|
+
def simulate_target: (String entry, Array[Integer]) -> witness_status
|
|
65
|
+
|
|
66
|
+
# Canonical collection is intentionally built here rather than through
|
|
67
|
+
# the production construction entry point, keeping this witness
|
|
68
|
+
# independent from construction code.
|
|
69
|
+
class CanonicalMachine
|
|
70
|
+
# @rbs (IR::Grammar grammar, max_states: Integer, max_items: Integer) -> void
|
|
71
|
+
def initialize: (IR::Grammar grammar, max_states: Integer, max_items: Integer) -> void
|
|
72
|
+
|
|
73
|
+
# @rbs (String entry, Array[Integer]) -> witness_status
|
|
74
|
+
def simulate: (String entry, Array[Integer]) -> witness_status
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
# @rbs (ReferenceCollection::Collection) -> Array[IR::AutomatonState]
|
|
79
|
+
def build_states: (ReferenceCollection::Collection) -> Array[IR::AutomatonState]
|
|
80
|
+
|
|
81
|
+
# @rbs (ReferenceCollection::Collection, Set[Array[Integer]], Integer) -> IR::AutomatonState
|
|
82
|
+
def build_state: (ReferenceCollection::Collection, Set[Array[Integer]], Integer) -> IR::AutomatonState
|
|
83
|
+
|
|
84
|
+
# @rbs (Array[IR::AutomatonItem], Hash[Integer, Integer]) -> Hash[Integer, IR::parser_action]
|
|
85
|
+
def resolve_actions: (Array[IR::AutomatonItem], Hash[Integer, Integer]) -> Hash[Integer, IR::parser_action]
|
|
86
|
+
|
|
87
|
+
# @rbs (Hash[Integer, Integer]) -> Hash[Integer, Array[IR::parser_action]]
|
|
88
|
+
def transition_candidates: (Hash[Integer, Integer]) -> Hash[Integer, Array[IR::parser_action]]
|
|
89
|
+
|
|
90
|
+
# @rbs (Array[IR::AutomatonItem], Hash[Integer, Array[IR::parser_action]]) -> void
|
|
91
|
+
def completed_candidates: (Array[IR::AutomatonItem], Hash[Integer, Array[IR::parser_action]]) -> void
|
|
92
|
+
|
|
93
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
94
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# A stack machine shared by the canonical reference and submitted IR.
|
|
98
|
+
class Machine
|
|
99
|
+
# @rbs (Array[IR::AutomatonState] states, IR::Grammar grammar) -> void
|
|
100
|
+
def initialize: (Array[IR::AutomatonState] states, IR::Grammar grammar) -> void
|
|
101
|
+
|
|
102
|
+
# @rbs (Integer initial, Array[Integer]) -> witness_status
|
|
103
|
+
def simulate: (Integer initial, Array[Integer]) -> witness_status
|
|
104
|
+
|
|
105
|
+
private
|
|
106
|
+
|
|
107
|
+
# @rbs (Array[Integer], Integer) -> witness_status
|
|
108
|
+
def consume: (Array[Integer], Integer) -> witness_status
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Generated from lib/ibex/verify/reference_collection.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Verify
|
|
5
|
+
# Independently derives canonical LR(1) and LR(0) item collections.
|
|
6
|
+
class ReferenceCollection
|
|
7
|
+
# Immutable canonical collection and its symbol transitions.
|
|
8
|
+
class Collection
|
|
9
|
+
attr_reader states: Array[Set[Array[Integer]]]
|
|
10
|
+
|
|
11
|
+
attr_reader transitions: Array[Hash[Integer, Integer]]
|
|
12
|
+
|
|
13
|
+
# @rbs (states: Array[Set[Array[Integer]]], transitions: Array[Hash[Integer, Integer]]) -> void
|
|
14
|
+
def initialize: (states: Array[Set[Array[Integer]]], transitions: Array[Hash[Integer, Integer]]) -> void
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @rbs (IR::Grammar grammar, ?max_states: Integer, ?max_items: Integer) -> void
|
|
18
|
+
def initialize: (IR::Grammar grammar, ?max_states: Integer, ?max_items: Integer) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs (Symbol kind) -> Collection
|
|
21
|
+
def build: (Symbol kind) -> Collection
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
# @rbs (Array[Set[Array[Integer]]] seeds, Symbol kind) -> Collection
|
|
26
|
+
def collection: (Array[Set[Array[Integer]]] seeds, Symbol kind) -> Collection
|
|
27
|
+
|
|
28
|
+
# @rbs (Array[Set[Array[Integer]]] states, Hash[Array[Array[Integer]], Integer] indexes,
|
|
29
|
+
# Set[Array[Integer]] state) -> Integer
|
|
30
|
+
def insert_state: (Array[Set[Array[Integer]]] states, Hash[Array[Array[Integer]], Integer] indexes, Set[Array[Integer]] state) -> Integer
|
|
31
|
+
|
|
32
|
+
# @rbs (Set[Array[Integer]] seed, Symbol kind) -> Set[Array[Integer]]
|
|
33
|
+
def closure: (Set[Array[Integer]] seed, Symbol kind) -> Set[Array[Integer]]
|
|
34
|
+
|
|
35
|
+
# @rbs (Set[Array[Integer]] state, Integer symbol_id, Symbol kind) -> Set[Array[Integer]]
|
|
36
|
+
def go_to: (Set[Array[Integer]] state, Integer symbol_id, Symbol kind) -> Set[Array[Integer]]
|
|
37
|
+
|
|
38
|
+
# @rbs (Set[Array[Integer]] items, Array[Array[Integer]] queue, Array[Integer] item) -> void
|
|
39
|
+
def add_item: (Set[Array[Integer]] items, Array[Array[Integer]] queue, Array[Integer] item) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs () -> void
|
|
42
|
+
def account_item: () -> void
|
|
43
|
+
|
|
44
|
+
# @rbs (Set[Array[Integer]] state) -> Array[Integer]
|
|
45
|
+
def next_symbols: (Set[Array[Integer]] state) -> Array[Integer]
|
|
46
|
+
|
|
47
|
+
# @rbs (Integer production_id, Integer dot, Integer? inherited) -> Array[Integer]
|
|
48
|
+
def closure_lookaheads: (Integer production_id, Integer dot, Integer? inherited) -> Array[Integer]
|
|
49
|
+
|
|
50
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
51
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
52
|
+
|
|
53
|
+
# @rbs (Integer production_id) -> IR::GrammarSymbol
|
|
54
|
+
def start_symbol: (Integer production_id) -> IR::GrammarSymbol
|
|
55
|
+
|
|
56
|
+
# @rbs () -> Integer
|
|
57
|
+
def eof_id: () -> Integer
|
|
58
|
+
|
|
59
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
60
|
+
def bounds: () -> Hash[Symbol, Integer]
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Generated from lib/ibex/verify/result.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Verify
|
|
5
|
+
# One stable verifier finding.
|
|
6
|
+
class Violation
|
|
7
|
+
attr_reader id: String
|
|
8
|
+
|
|
9
|
+
attr_reader location: String
|
|
10
|
+
|
|
11
|
+
attr_reader message: String
|
|
12
|
+
|
|
13
|
+
# @rbs (id: String, location: String, message: String) -> void
|
|
14
|
+
def initialize: (id: String, location: String, message: String) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs () -> Hash[Symbol, String]
|
|
17
|
+
def to_h: () -> Hash[Symbol, String]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Immutable independent-verification report.
|
|
21
|
+
class Result
|
|
22
|
+
type report_value = String | Integer | bool | Array[String] | Hash[Symbol, Integer] | Array[Hash[Symbol, String]]
|
|
23
|
+
|
|
24
|
+
attr_reader algorithm: String
|
|
25
|
+
|
|
26
|
+
attr_reader strict: bool
|
|
27
|
+
|
|
28
|
+
attr_reader checks: Array[String]
|
|
29
|
+
|
|
30
|
+
attr_reader violations: Array[Violation]
|
|
31
|
+
|
|
32
|
+
attr_reader bounds: Hash[Symbol, Integer]
|
|
33
|
+
|
|
34
|
+
# @rbs (algorithm: String, strict: bool, checks: Array[String], violations: Array[Violation],
|
|
35
|
+
# bounds: Hash[Symbol, Integer]) -> void
|
|
36
|
+
def initialize: (algorithm: String, strict: bool, checks: Array[String], violations: Array[Violation], bounds: Hash[Symbol, Integer]) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs () -> bool
|
|
39
|
+
def valid?: () -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs () -> Hash[Symbol, report_value]
|
|
42
|
+
def to_h: () -> Hash[Symbol, report_value]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class BudgetExceeded < Ibex::Error
|
|
46
|
+
attr_reader bounds: Hash[Symbol, Integer]
|
|
47
|
+
|
|
48
|
+
# @rbs (String message, bounds: Hash[Symbol, Integer]) -> void
|
|
49
|
+
def initialize: (String message, bounds: Hash[Symbol, Integer]) -> void
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Generated from lib/ibex/verify/verifier.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Verify
|
|
5
|
+
# Checks Automaton IR semantics against an independently derived collection.
|
|
6
|
+
# rubocop:disable Metrics/ClassLength -- V1-V9 share one violation and item-identity model.
|
|
7
|
+
class Verifier
|
|
8
|
+
DEFAULT_CHECKS: Array[String]
|
|
9
|
+
|
|
10
|
+
STRICT_CHECKS: Array[String]
|
|
11
|
+
|
|
12
|
+
ERROR_ACTION: IR::error_action
|
|
13
|
+
|
|
14
|
+
# @rbs (IR::Automaton automaton, ?strict: bool, ?max_states: Integer, ?max_items: Integer) -> void
|
|
15
|
+
def initialize: (IR::Automaton automaton, ?strict: bool, ?max_states: Integer, ?max_items: Integer) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs () -> Result
|
|
18
|
+
def verify: () -> Result
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
# V9 is a bounded semantic witness for IELR only. It deliberately does
|
|
23
|
+
# not replace V1/V2 or claim unbounded language equivalence.
|
|
24
|
+
# @rbs () -> void
|
|
25
|
+
def verify_ielr_adequacy: () -> void
|
|
26
|
+
|
|
27
|
+
# @rbs () -> void
|
|
28
|
+
def verify_grammar_digest: () -> void
|
|
29
|
+
|
|
30
|
+
# @rbs () -> void
|
|
31
|
+
def verify_item_collection: () -> void
|
|
32
|
+
|
|
33
|
+
# SLR lookaheads affect completed items only. The builder may retain
|
|
34
|
+
# propagation lookaheads on non-completed items, but they cannot select
|
|
35
|
+
# an ACTION cell and therefore are outside the SLR semantic contract.
|
|
36
|
+
# @rbs (Array[Set[Array[Integer]]] expected_states) -> void
|
|
37
|
+
def compare_slr_states: (Array[Set[Array[Integer]]] expected_states) -> void
|
|
38
|
+
|
|
39
|
+
# @rbs (IR::AutomatonState state,
|
|
40
|
+
# Hash[Array[Array[Integer]], Array[Set[Array[Integer]]]] expected_by_core) ->
|
|
41
|
+
# Array[Array[Integer]]?
|
|
42
|
+
def verify_slr_state: (IR::AutomatonState state, Hash[Array[Array[Integer]], Array[Set[Array[Integer]]]] expected_by_core) -> Array[Array[Integer]]?
|
|
43
|
+
|
|
44
|
+
# @rbs (IR::AutomatonState state, IR::AutomatonItem item) -> void
|
|
45
|
+
def verify_slr_lookaheads: (IR::AutomatonState state, IR::AutomatonItem item) -> void
|
|
46
|
+
|
|
47
|
+
# @rbs () -> Array[Set[Array[Integer]]]
|
|
48
|
+
def lr1_states: () -> Array[Set[Array[Integer]]]
|
|
49
|
+
|
|
50
|
+
# @rbs () -> Array[Set[Array[Integer]]]
|
|
51
|
+
def lalr_states: () -> Array[Set[Array[Integer]]]
|
|
52
|
+
|
|
53
|
+
# @rbs () -> Array[Set[Array[Integer]]]
|
|
54
|
+
def canonical_lr1_states: () -> Array[Set[Array[Integer]]]
|
|
55
|
+
|
|
56
|
+
# @rbs (Array[Set[Array[Integer]]] expected_states) -> void
|
|
57
|
+
def compare_expected_states: (Array[Set[Array[Integer]]] expected_states) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (Array[Set[Array[Integer]]] expected_states) -> void
|
|
60
|
+
def compare_ielr_states: (Array[Set[Array[Integer]]] expected_states) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs () -> void
|
|
63
|
+
def verify_transitions_and_actions: () -> void
|
|
64
|
+
|
|
65
|
+
# @rbs (IR::AutomatonState state) -> void
|
|
66
|
+
def verify_transition_items: (IR::AutomatonState state) -> void
|
|
67
|
+
|
|
68
|
+
# @rbs (IR::AutomatonState state) -> void
|
|
69
|
+
def verify_state_actions: (IR::AutomatonState state) -> void
|
|
70
|
+
|
|
71
|
+
# @rbs (IR::AutomatonState state, IR::GrammarSymbol terminal, Array[IR::parser_action] expected,
|
|
72
|
+
# IR::parser_action actual, Array[Integer] conflict_tokens) -> void
|
|
73
|
+
def verify_terminal_action: (IR::AutomatonState state, IR::GrammarSymbol terminal, Array[IR::parser_action] expected, IR::parser_action actual, Array[Integer] conflict_tokens) -> void
|
|
74
|
+
|
|
75
|
+
# @rbs (IR::AutomatonState state, IR::GrammarSymbol terminal, IR::parser_action actual) -> void
|
|
76
|
+
def verify_error_cell: (IR::AutomatonState state, IR::GrammarSymbol terminal, IR::parser_action actual) -> void
|
|
77
|
+
|
|
78
|
+
# @rbs (IR::AutomatonState state, IR::GrammarSymbol terminal, IR::parser_action expected,
|
|
79
|
+
# IR::parser_action actual) -> void
|
|
80
|
+
def verify_single_action: (IR::AutomatonState state, IR::GrammarSymbol terminal, IR::parser_action expected, IR::parser_action actual) -> void
|
|
81
|
+
|
|
82
|
+
# @rbs (IR::AutomatonState state, IR::GrammarSymbol terminal, Array[IR::parser_action] expected,
|
|
83
|
+
# IR::parser_action actual, Array[Integer] conflict_tokens) -> void
|
|
84
|
+
def verify_conflicted_action: (IR::AutomatonState state, IR::GrammarSymbol terminal, Array[IR::parser_action] expected, IR::parser_action actual, Array[Integer] conflict_tokens) -> void
|
|
85
|
+
|
|
86
|
+
# @rbs () -> void
|
|
87
|
+
def verify_table_formats: () -> void
|
|
88
|
+
|
|
89
|
+
# @rbs (Tables::action_table table, Integer row) -> Hash[Integer, IR::runtime_action]
|
|
90
|
+
def action_row: (Tables::action_table table, Integer row) -> Hash[Integer, IR::runtime_action]
|
|
91
|
+
|
|
92
|
+
# @rbs (Tables::goto_table table, Integer row) -> Hash[Integer, untyped]
|
|
93
|
+
def goto_row: (Tables::goto_table table, Integer row) -> Hash[Integer, untyped]
|
|
94
|
+
|
|
95
|
+
# @rbs () -> void
|
|
96
|
+
def verify_reachability_and_productivity: () -> void
|
|
97
|
+
|
|
98
|
+
# @rbs () -> void
|
|
99
|
+
def verify_epsilon_termination: () -> void
|
|
100
|
+
|
|
101
|
+
# @rbs () -> void
|
|
102
|
+
def verify_conflict_determinism: () -> void
|
|
103
|
+
|
|
104
|
+
# @rbs (IR::AutomatonState state, IR::conflict conflict) -> void
|
|
105
|
+
def verify_conflict_resolution: (IR::AutomatonState state, IR::conflict conflict) -> void
|
|
106
|
+
|
|
107
|
+
# @rbs (IR::conflict conflict) -> Array[IR::parser_action]
|
|
108
|
+
def conflict_candidates: (IR::conflict conflict) -> Array[IR::parser_action]
|
|
109
|
+
|
|
110
|
+
# @rbs (IR::conflict conflict) -> IR::parser_action?
|
|
111
|
+
def resolved_conflict_action: (IR::conflict conflict) -> IR::parser_action?
|
|
112
|
+
|
|
113
|
+
# @rbs (IR::AutomatonState state) -> Hash[Integer, Array[IR::parser_action]]
|
|
114
|
+
def action_candidates: (IR::AutomatonState state) -> Hash[Integer, Array[IR::parser_action]]
|
|
115
|
+
|
|
116
|
+
# @rbs (IR::AutomatonState state, Integer symbol_id) -> Array[Array[Integer]]
|
|
117
|
+
def shifted_items: (IR::AutomatonState state, Integer symbol_id) -> Array[Array[Integer]]
|
|
118
|
+
|
|
119
|
+
# @rbs (IR::AutomatonState state, Integer terminal_id) -> IR::parser_action
|
|
120
|
+
def effective_action: (IR::AutomatonState state, Integer terminal_id) -> IR::parser_action
|
|
121
|
+
|
|
122
|
+
# @rbs () -> Set[Integer]
|
|
123
|
+
def reachable_states: () -> Set[Integer]
|
|
124
|
+
|
|
125
|
+
# @rbs () -> Set[Integer]
|
|
126
|
+
def productive_nonterminals: () -> Set[Integer]
|
|
127
|
+
|
|
128
|
+
# @rbs (Hash[Integer, Integer] edges) -> bool
|
|
129
|
+
def directed_cycle?: (Hash[Integer, Integer] edges) -> bool
|
|
130
|
+
|
|
131
|
+
# @rbs (IR::AutomatonState state) -> Set[Array[Integer]]
|
|
132
|
+
def expanded_items: (IR::AutomatonState state) -> Set[Array[Integer]]
|
|
133
|
+
|
|
134
|
+
# Automaton IR intentionally exposes every augmented production as -1,
|
|
135
|
+
# even when construction internally assigned one per start symbol.
|
|
136
|
+
# @rbs (Set[Array[Integer]] state) -> Set[Array[Integer]]
|
|
137
|
+
def visible_state: (Set[Array[Integer]] state) -> Set[Array[Integer]]
|
|
138
|
+
|
|
139
|
+
# @rbs (Set[Array[Integer]] state) -> Array[Array[Integer]]
|
|
140
|
+
def core_key: (Set[Array[Integer]] state) -> Array[Array[Integer]]
|
|
141
|
+
|
|
142
|
+
# @rbs (Array[Set[Array[Integer]]] states) -> Hash[Array[Array[Integer]], Integer]
|
|
143
|
+
def multiset: (Array[Set[Array[Integer]]] states) -> Hash[Array[Array[Integer]], Integer]
|
|
144
|
+
|
|
145
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
146
|
+
def follow_ids: (Integer production_id) -> Array[Integer]
|
|
147
|
+
|
|
148
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
149
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
150
|
+
|
|
151
|
+
# @rbs (Integer production_id) -> IR::GrammarSymbol
|
|
152
|
+
def start_symbol: (Integer production_id) -> IR::GrammarSymbol
|
|
153
|
+
|
|
154
|
+
# @rbs () -> Integer
|
|
155
|
+
def eof_id: () -> Integer
|
|
156
|
+
|
|
157
|
+
# @rbs () -> Array[Integer]
|
|
158
|
+
def start_symbol_ids: () -> Array[Integer]
|
|
159
|
+
|
|
160
|
+
# @rbs () -> ReferenceCollection
|
|
161
|
+
def reference: () -> ReferenceCollection
|
|
162
|
+
|
|
163
|
+
# @rbs (String id, String location, String message) -> void
|
|
164
|
+
def violation: (String id, String location, String message) -> void
|
|
165
|
+
|
|
166
|
+
# @rbs (IR::AutomatonState state) -> String
|
|
167
|
+
def state_path: (IR::AutomatonState state) -> String
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
data/sig/ibex/verify.rbs
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Generated from lib/ibex/watch/runner.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Watch
|
|
5
|
+
interface _BuildResult
|
|
6
|
+
def source_paths: () -> Array[String]
|
|
7
|
+
|
|
8
|
+
def attempted_paths: () -> Array[String]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
interface _Output
|
|
12
|
+
def puts: (*Object?) -> Object?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Polls source fingerprints, debounces changes, and publishes stable builds.
|
|
16
|
+
class Runner
|
|
17
|
+
DEFAULT_INTERVAL: Float
|
|
18
|
+
|
|
19
|
+
DEFAULT_DEBOUNCE: Float
|
|
20
|
+
|
|
21
|
+
# rubocop:disable Layout/LineLength
|
|
22
|
+
# @rbs (paths: Array[String], build: ^() -> _BuildResult, publish: ^(_BuildResult, SourceSnapshot, ^() -> bool) -> void, failure_paths: ^() -> Array[String], stderr: _Output, clock: ^() -> Float, sleeper: ^(Float) -> void, iteration_hook: ^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil), ?interval: Float, ?debounce: Float) -> void
|
|
23
|
+
def initialize: (paths: Array[String], build: ^() -> _BuildResult, publish: ^(_BuildResult, SourceSnapshot, ^() -> bool) -> void, failure_paths: ^() -> Array[String], stderr: _Output, clock: ^() -> Float, sleeper: ^(Float) -> void, iteration_hook: ^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil), ?interval: Float, ?debounce: Float) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Integer
|
|
26
|
+
def run: () -> Integer
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
# @rbs (SourceSnapshot before) -> [SourceSnapshot, bool]
|
|
31
|
+
def build_once: (SourceSnapshot before) -> [ SourceSnapshot, bool ]
|
|
32
|
+
|
|
33
|
+
# @rbs (SourceSnapshot snapshot) -> SourceSnapshot
|
|
34
|
+
def wait_for_change: (SourceSnapshot snapshot) -> SourceSnapshot
|
|
35
|
+
|
|
36
|
+
# @rbs (SourceSnapshot changed) -> SourceSnapshot
|
|
37
|
+
def debounce: (SourceSnapshot changed) -> SourceSnapshot
|
|
38
|
+
|
|
39
|
+
# @rbs (Exception error) -> void
|
|
40
|
+
def report_failure: (Exception error) -> void
|
|
41
|
+
|
|
42
|
+
# @rbs (SourceSnapshot before, Exception error) -> [SourceSnapshot, bool]
|
|
43
|
+
def failed_build: (SourceSnapshot before, Exception error) -> [ SourceSnapshot, bool ]
|
|
44
|
+
|
|
45
|
+
# @rbs (Exception error, SourceSnapshot snapshot) -> void
|
|
46
|
+
def report_failure_once: (Exception error, SourceSnapshot snapshot) -> void
|
|
47
|
+
|
|
48
|
+
# @rbs (Symbol event) -> Integer?
|
|
49
|
+
def stop_status: (Symbol event) -> Integer?
|
|
50
|
+
|
|
51
|
+
# @rbs (Array[String] paths) -> Array[String]
|
|
52
|
+
def normalize_paths: (Array[String] paths) -> Array[String]
|
|
53
|
+
|
|
54
|
+
# @rbs () { () -> Integer } -> Integer
|
|
55
|
+
def with_signal_handlers: () { () -> Integer } -> Integer
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Generated from lib/ibex/watch/source_snapshot.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Watch
|
|
5
|
+
# Stable metadata and content fingerprints for watched source paths.
|
|
6
|
+
class SourceSnapshot
|
|
7
|
+
type fingerprint_value = Symbol | String | Integer | nil | Hash[Symbol, fingerprint_value]
|
|
8
|
+
|
|
9
|
+
type fingerprint = Hash[Symbol, fingerprint_value]
|
|
10
|
+
|
|
11
|
+
attr_reader paths: Array[String]
|
|
12
|
+
|
|
13
|
+
# @rbs (Array[String] paths) -> void
|
|
14
|
+
def initialize: (Array[String] paths) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs (SourceSnapshot other) -> bool
|
|
17
|
+
def ==: (SourceSnapshot other) -> bool
|
|
18
|
+
|
|
19
|
+
# Every path in this snapshot must have had the same value in the older snapshot.
|
|
20
|
+
# @rbs (SourceSnapshot older) -> bool
|
|
21
|
+
def unchanged_since?: (SourceSnapshot older) -> bool
|
|
22
|
+
|
|
23
|
+
attr_reader entries: Hash[String, fingerprint]
|
|
24
|
+
|
|
25
|
+
# @rbs (String path) -> fingerprint?
|
|
26
|
+
def entry: (String path) -> fingerprint?
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
# @rbs (String path) -> fingerprint
|
|
31
|
+
def fingerprint: (String path) -> fingerprint
|
|
32
|
+
|
|
33
|
+
# @rbs (File::Stat stat) -> fingerprint
|
|
34
|
+
def stat_signature: (File::Stat stat) -> fingerprint
|
|
35
|
+
|
|
36
|
+
# @rbs (File::Stat stat) -> Symbol
|
|
37
|
+
def file_kind: (File::Stat stat) -> Symbol
|
|
38
|
+
|
|
39
|
+
# @rbs (Time time) -> Integer
|
|
40
|
+
def nanoseconds: (Time time) -> Integer
|
|
41
|
+
|
|
42
|
+
# @rbs (fingerprint value, String path) -> void
|
|
43
|
+
def add_resolved_target: (fingerprint value, String path) -> void
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
data/sig/ibex/watch.rbs
ADDED