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,67 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/annotator.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
# Finds grammar-relative inadequacies and traces their possible
|
|
7
|
+
# manifestations through predecessor states.
|
|
8
|
+
class Annotator
|
|
9
|
+
attr_reader annotation_lists: Array[Array[Annotation]]
|
|
10
|
+
|
|
11
|
+
attr_reader inadequacies: Array[Array[Inadequacy]]
|
|
12
|
+
|
|
13
|
+
attr_reader item_lookaheads: ItemLookaheads
|
|
14
|
+
|
|
15
|
+
attr_reader split_stable_discarded: Integer
|
|
16
|
+
|
|
17
|
+
# @rbs (IR::Grammar grammar, Array[core_set] states, transitions transitions,
|
|
18
|
+
# Array[packed_items] items, GotoFollows goto_follows, ?resolver: ConflictResolver?) -> void
|
|
19
|
+
def initialize: (IR::Grammar grammar, Array[core_set] states, transitions transitions, Array[packed_items] items, GotoFollows goto_follows, ?resolver: ConflictResolver?) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs () -> Array[Array[Annotation]]
|
|
22
|
+
def build: () -> Array[Array[Annotation]]
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
# @rbs (Integer state_id) -> Array[Inadequacy]
|
|
27
|
+
def build_inadequacies: (Integer state_id) -> Array[Inadequacy]
|
|
28
|
+
|
|
29
|
+
# @rbs (Integer state_id, Integer token_id) -> Array[[Symbol, Integer?]]
|
|
30
|
+
def contributions_for: (Integer state_id, Integer token_id) -> Array[[ Symbol, Integer? ]]
|
|
31
|
+
|
|
32
|
+
# @rbs (Integer state_id, Inadequacy inadequacy) -> Annotation
|
|
33
|
+
def annotate_manifestation: (Integer state_id, Inadequacy inadequacy) -> Annotation
|
|
34
|
+
|
|
35
|
+
# @rbs (Integer state_id, Integer successor_id, Annotation annotation) -> Annotation
|
|
36
|
+
def annotate_predecessor: (Integer state_id, Integer successor_id, Annotation annotation) -> Annotation
|
|
37
|
+
|
|
38
|
+
# @rbs (Integer state_id, Array[item_core], Integer, Integer) -> bool
|
|
39
|
+
def always_via_lhs?: (Integer state_id, Array[item_core], Integer, Integer) -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs (Integer state_id, Array[item_core], Integer, Integer) -> Integer
|
|
42
|
+
def project_row: (Integer state_id, Array[item_core], Integer, Integer) -> Integer
|
|
43
|
+
|
|
44
|
+
# @rbs (Integer state_id, Integer production_id, Integer length) -> Integer
|
|
45
|
+
def completed_kernel_mask: (Integer state_id, Integer production_id, Integer length) -> Integer
|
|
46
|
+
|
|
47
|
+
# @rbs (Integer state_id, Integer lhs_id, Integer token_id) -> Integer?
|
|
48
|
+
def compute_lhs_contributions: (Integer state_id, Integer lhs_id, Integer token_id) -> Integer?
|
|
49
|
+
|
|
50
|
+
# @rbs (Integer state_id, Annotation annotation) -> bool
|
|
51
|
+
def register?: (Integer state_id, Annotation annotation) -> bool
|
|
52
|
+
|
|
53
|
+
# @rbs (Integer state_id, Integer production_id) -> Integer
|
|
54
|
+
def lhs_for: (Integer state_id, Integer production_id) -> Integer
|
|
55
|
+
|
|
56
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
57
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
58
|
+
|
|
59
|
+
# @rbs (core_set items) -> Array[item_core]
|
|
60
|
+
def kernel_items: (core_set items) -> Array[item_core]
|
|
61
|
+
|
|
62
|
+
# @rbs (Integer state_id, Integer production_id, Integer dot) -> Integer?
|
|
63
|
+
def kernel_index_of: (Integer state_id, Integer production_id, Integer dot) -> Integer?
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/bits.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
module Bits
|
|
7
|
+
# @rbs (Integer bits) { (Integer) -> void } -> void
|
|
8
|
+
# @rbs (Integer bits) -> Enumerator[Integer, void]
|
|
9
|
+
def self?.each_set_bit: (Integer bits) { (Integer) -> void } -> void
|
|
10
|
+
| (Integer bits) -> Enumerator[Integer, void]
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/inadequacy.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
type contribution = [ Symbol, Integer? ]
|
|
7
|
+
|
|
8
|
+
class Inadequacy < Struct[Integer | Array[contribution]]
|
|
9
|
+
attr_accessor state: Integer
|
|
10
|
+
attr_accessor token: Integer
|
|
11
|
+
attr_accessor contributions: Array[contribution]
|
|
12
|
+
attr_accessor id: Integer
|
|
13
|
+
def self.new: (state: Integer, token: Integer, contributions: Array[contribution], id: Integer) -> instance
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class Annotation < Struct[Inadequacy | Array[Integer?]]
|
|
17
|
+
attr_accessor inadequacy: Inadequacy
|
|
18
|
+
attr_accessor matrix: Array[Integer?]
|
|
19
|
+
def self.new: (inadequacy: Inadequacy, matrix: Array[Integer?]) -> instance
|
|
20
|
+
def key: () -> [ Integer, Array[Integer?] ]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/item_lookaheads.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
# Lazily derives the lookahead of a kernel item from predecessor states
|
|
7
|
+
# and goto-follow sets. Memoisation is important: predecessor paths can
|
|
8
|
+
# share exponentially many suffixes in a real grammar.
|
|
9
|
+
class ItemLookaheads
|
|
10
|
+
@memo: Hash[Integer, Integer]
|
|
11
|
+
|
|
12
|
+
# @rbs (IR::Grammar grammar, GotoFollows goto_follows, Array[Array[item_core]] kernel_cores,
|
|
13
|
+
# Array[Array[Integer]] predecessors, ?start_states: Array[Integer]?) -> void
|
|
14
|
+
def initialize: (IR::Grammar grammar, GotoFollows goto_follows, Array[Array[item_core]] kernel_cores, Array[Array[Integer]] predecessors, ?start_states: Array[Integer]?) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs (Integer state_id, Integer kernel_index) -> Integer
|
|
17
|
+
def fetch: (Integer state_id, Integer kernel_index) -> Integer
|
|
18
|
+
|
|
19
|
+
# @rbs () -> Integer
|
|
20
|
+
def size: () -> Integer
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
# @rbs (Integer state_id, Integer kernel_index) -> Integer
|
|
25
|
+
def compute: (Integer state_id, Integer kernel_index) -> Integer
|
|
26
|
+
|
|
27
|
+
# @rbs (Integer state_id, Integer production_id) -> Integer
|
|
28
|
+
def goto_follows_for: (Integer state_id, Integer production_id) -> Integer
|
|
29
|
+
|
|
30
|
+
# @rbs (Integer production_id) -> Integer
|
|
31
|
+
def start_seed: (Integer production_id) -> Integer
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/pipeline.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
# Coordinates the canonical-free direct IELR phases. The returned
|
|
7
|
+
# profile deliberately reports canonical metrics as unavailable.
|
|
8
|
+
class Pipeline
|
|
9
|
+
# @rbs (IR::Grammar grammar, Analysis::Sets sets, ?starts: Array[String]?, ?profile: bool) -> void
|
|
10
|
+
def initialize: (IR::Grammar grammar, Analysis::Sets sets, ?starts: Array[String]?, ?profile: bool) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs () -> [Array[packed_items], transitions, LALR::build_collection]
|
|
13
|
+
def build: () -> [ Array[packed_items], transitions, LALR::build_collection ]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/split_stability.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
7
|
+
module SplitStability
|
|
8
|
+
MAX_ENUMERATED_POTENTIALS: ::Integer
|
|
9
|
+
|
|
10
|
+
# @rbs (Annotation) -> bool
|
|
11
|
+
def self?.simple?: (Annotation) -> bool
|
|
12
|
+
|
|
13
|
+
# @rbs (Annotation, ConflictResolver) -> bool
|
|
14
|
+
def self?.split_stable?: (Annotation, ConflictResolver) -> bool
|
|
15
|
+
|
|
16
|
+
# @rbs (ConflictResolver, Integer, Array[Object]) -> Object?
|
|
17
|
+
def self?.resolve: (ConflictResolver, Integer, Array[Object]) -> Object?
|
|
18
|
+
|
|
19
|
+
# @rbs (Object?) -> Object?
|
|
20
|
+
def self?.normalize: (Object?) -> Object?
|
|
21
|
+
|
|
22
|
+
# @rbs (Array[Integer]) -> Array[Array[Integer]]
|
|
23
|
+
def self?.subsets: (Array[Integer]) -> Array[Array[Integer]]
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/split_state.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
class SplitState < Struct[Array[item_core] | Array[[ Integer, Integer ]] | Integer]
|
|
7
|
+
attr_accessor core: Array[item_core]
|
|
8
|
+
attr_accessor transitions: Array[[ Integer, Integer ]]
|
|
9
|
+
attr_accessor lalr_isocore: Integer
|
|
10
|
+
def self.new: (core: Array[item_core], transitions: Array[[ Integer, Integer ]], lalr_isocore: Integer) -> instance
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr/state_splitter.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
module IELR
|
|
6
|
+
# Splits LR(0) isocores only where an inadequacy would change the
|
|
7
|
+
# resolved action. New states copy their transition arrays; no mutable
|
|
8
|
+
# transition table is shared between isocores.
|
|
9
|
+
class StateSplitter
|
|
10
|
+
attr_reader annotations: Array[Array[Annotation]]
|
|
11
|
+
|
|
12
|
+
attr_reader states: Array[SplitState]
|
|
13
|
+
|
|
14
|
+
attr_reader lalr_isocores: Array[Integer]
|
|
15
|
+
|
|
16
|
+
attr_reader split_states: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader inadequacies: Array[Array[Inadequacy]]
|
|
19
|
+
|
|
20
|
+
attr_reader split_stable_discarded: Integer
|
|
21
|
+
|
|
22
|
+
# @rbs (IR::Grammar grammar, Array[core_set] states, transitions transitions,
|
|
23
|
+
# Array[packed_items] items, GotoFollows goto_follows, ?resolver: ConflictResolver?) -> void
|
|
24
|
+
# rubocop:disable Metrics/AbcSize -- initialization wires the phase tables once.
|
|
25
|
+
def initialize: (IR::Grammar grammar, Array[core_set] states, transitions transitions, Array[packed_items] items, GotoFollows goto_follows, ?resolver: ConflictResolver?) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs () -> [Array[packed_items], transitions]
|
|
28
|
+
def build: () -> [ Array[packed_items], transitions ]
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
# @rbs (Integer from_id, Integer to_id, Integer transition_index) -> void
|
|
33
|
+
def compute_state: (Integer from_id, Integer to_id, Integer transition_index) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (Integer from_id, Integer to_id) -> Array[Integer]
|
|
36
|
+
def propagate_lookaheads: (Integer from_id, Integer to_id) -> Array[Integer]
|
|
37
|
+
|
|
38
|
+
# @rbs (Integer state_id, Integer nonterminal_id) -> Integer
|
|
39
|
+
def compute_goto_follow_set: (Integer state_id, Integer nonterminal_id) -> Integer
|
|
40
|
+
|
|
41
|
+
# @rbs (Integer state_id) -> Array[Integer]
|
|
42
|
+
def lookahead_set_filters: (Integer state_id) -> Array[Integer]
|
|
43
|
+
|
|
44
|
+
# @rbs (Integer state_id, Array[Integer]) -> bool
|
|
45
|
+
def compatible?: (Integer state_id, Array[Integer]) -> bool
|
|
46
|
+
|
|
47
|
+
# @rbs (Annotation, Array[Integer]) -> Object?
|
|
48
|
+
def dominant_contribution: (Annotation, Array[Integer]) -> Object?
|
|
49
|
+
|
|
50
|
+
# @rbs (Integer after_id, Array[Integer]) -> Integer
|
|
51
|
+
def append_isocore: (Integer after_id, Array[Integer]) -> Integer
|
|
52
|
+
|
|
53
|
+
# @rbs (Integer state_id, Array[Integer]) -> void
|
|
54
|
+
def merge_lookaheads: (Integer state_id, Array[Integer]) -> void
|
|
55
|
+
|
|
56
|
+
# @rbs () -> Array[packed_items]
|
|
57
|
+
def pack_items: () -> Array[packed_items]
|
|
58
|
+
|
|
59
|
+
# @rbs () -> transitions
|
|
60
|
+
def packed_transitions: () -> transitions
|
|
61
|
+
|
|
62
|
+
# @rbs (core_set items) -> Array[item_core]
|
|
63
|
+
def kernel_items: (core_set items) -> Array[item_core]
|
|
64
|
+
|
|
65
|
+
# @rbs (Integer state_id, Integer production_id, Integer dot) -> Integer?
|
|
66
|
+
def kernel_index_of: (Integer state_id, Integer production_id, Integer dot) -> Integer?
|
|
67
|
+
|
|
68
|
+
# @rbs (Integer production_id) -> Integer
|
|
69
|
+
def lhs_for: (Integer production_id) -> Integer
|
|
70
|
+
|
|
71
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
72
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr_partition.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Deterministically merges compatible canonical LR(1) states and splits
|
|
6
|
+
# partitions until their outgoing transitions are congruent.
|
|
7
|
+
class IELRPartition
|
|
8
|
+
type contribution_action = [ :shift ] | [ :reduce, Integer ] | [ :accept ]
|
|
9
|
+
|
|
10
|
+
AUGMENTED_PRODUCTION: Integer
|
|
11
|
+
|
|
12
|
+
@profile: bool
|
|
13
|
+
|
|
14
|
+
@final_partition_count: Integer?
|
|
15
|
+
|
|
16
|
+
@initial_partition_count: Integer?
|
|
17
|
+
|
|
18
|
+
@contributions: Array[Hash[Integer, Set[contribution_action]]]
|
|
19
|
+
|
|
20
|
+
@transitions: transitions
|
|
21
|
+
|
|
22
|
+
@states: Array[item_set]
|
|
23
|
+
|
|
24
|
+
@grammar: IR::Grammar
|
|
25
|
+
|
|
26
|
+
attr_reader initial_partition_count: Integer?
|
|
27
|
+
|
|
28
|
+
attr_reader final_partition_count: Integer?
|
|
29
|
+
|
|
30
|
+
# @rbs (IR::Grammar grammar, Array[item_set] states, transitions transitions, ?profile: bool) -> void
|
|
31
|
+
def initialize: (IR::Grammar grammar, Array[item_set] states, transitions transitions, ?profile: bool) -> void
|
|
32
|
+
|
|
33
|
+
# @rbs () -> [Array[packed_items], transitions]
|
|
34
|
+
def build: () -> [ Array[packed_items], transitions ]
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
# @rbs () -> Array[state_partition]
|
|
39
|
+
def initial_partitions: () -> Array[state_partition]
|
|
40
|
+
|
|
41
|
+
# @rbs (Array[Integer] members) -> Array[state_partition]
|
|
42
|
+
def compatible_partitions: (Array[Integer] members) -> Array[state_partition]
|
|
43
|
+
|
|
44
|
+
# A canonical member may gain an action only where it previously had no
|
|
45
|
+
# action. Every nonempty member cell must equal the merged cell.
|
|
46
|
+
# @rbs (state_partition members) -> bool
|
|
47
|
+
def compatible?: (state_partition members) -> bool
|
|
48
|
+
|
|
49
|
+
# @rbs (Array[state_partition] partitions) -> Array[state_partition]
|
|
50
|
+
def refine_transitions: (Array[state_partition] partitions) -> Array[state_partition]
|
|
51
|
+
|
|
52
|
+
# @rbs (Integer state_id, Hash[Integer, Integer] indexes) -> Array[[Integer, Integer]]
|
|
53
|
+
def transition_signature: (Integer state_id, Hash[Integer, Integer] indexes) -> Array[[ Integer, Integer ]]
|
|
54
|
+
|
|
55
|
+
# @rbs (Array[state_partition] partitions) -> Hash[Integer, Integer]
|
|
56
|
+
def partition_indexes: (Array[state_partition] partitions) -> Hash[Integer, Integer]
|
|
57
|
+
|
|
58
|
+
# @rbs (state_partition members) -> packed_items
|
|
59
|
+
def merge_items: (state_partition members) -> packed_items
|
|
60
|
+
|
|
61
|
+
# @rbs (Integer state_id) -> Hash[Integer, Set[contribution_action]]
|
|
62
|
+
def action_contributions: (Integer state_id) -> Hash[Integer, Set[contribution_action]]
|
|
63
|
+
|
|
64
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
65
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
66
|
+
|
|
67
|
+
# @rbs (item_set items) -> Array[item_core]
|
|
68
|
+
def core_key: (item_set items) -> Array[item_core]
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/inadequacy_report.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
type report_value = String | Symbol | Integer | bool | nil | IR::parser_action | Array[report_value] | Hash[Symbol, report_value]
|
|
6
|
+
|
|
7
|
+
# Diagnostic-only report for canonical-vs-LALR action differences. It is
|
|
8
|
+
# intentionally separate from normal construction because it enumerates a
|
|
9
|
+
# canonical LR(1) reference.
|
|
10
|
+
class InadequacyReport
|
|
11
|
+
# @rbs (IR::Automaton canonical, IR::Automaton target, ?max_pairs: Integer) -> void
|
|
12
|
+
def initialize: (IR::Automaton canonical, IR::Automaton target, ?max_pairs: Integer) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs () -> Hash[Symbol, report_value]
|
|
15
|
+
def to_h: () -> Hash[Symbol, report_value]
|
|
16
|
+
|
|
17
|
+
# @rbs () -> String
|
|
18
|
+
def to_json: () -> String
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/lookahead_propagation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Recomputes item lookaheads on an already-built LR(0) automaton. This is
|
|
6
|
+
# Phase 4 of direct IELR and is also useful as an independent cross-check
|
|
7
|
+
# for DirectLookaheads.
|
|
8
|
+
class LookaheadPropagation
|
|
9
|
+
EMPTY: Array[Integer]
|
|
10
|
+
|
|
11
|
+
attr_reader propagation_edge_count: Integer
|
|
12
|
+
|
|
13
|
+
# @rbs (IR::Grammar grammar, Analysis::Sets sets, Array[core_set] states, transitions transitions,
|
|
14
|
+
# seeds: Array[[Integer, item_core, Integer]]) -> Array[packed_items]
|
|
15
|
+
def initialize: (IR::Grammar grammar, Analysis::Sets sets, Array[core_set] states, transitions transitions, seeds: Array[[ Integer, item_core, Integer ]]) -> Array[packed_items]
|
|
16
|
+
|
|
17
|
+
# @rbs () -> Array[packed_items]
|
|
18
|
+
def build: () -> Array[packed_items]
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
# @rbs (Hash[Object, Array[Object]], Integer, Integer, Integer) -> void
|
|
23
|
+
def add_transition: (Hash[Object, Array[Object]], Integer, Integer, Integer) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (Hash[Object, Array[Object]], Array[packed_items], Integer, Integer, Integer) -> void
|
|
26
|
+
def add_closure: (Hash[Object, Array[Object]], Array[packed_items], Integer, Integer, Integer) -> void
|
|
27
|
+
|
|
28
|
+
# @rbs (Array[packed_items], Hash[Object, Array[Object]]) -> void
|
|
29
|
+
def propagate: (Array[packed_items], Hash[Object, Array[Object]]) -> void
|
|
30
|
+
|
|
31
|
+
# @rbs (Integer bits) -> Array[Integer]
|
|
32
|
+
def terminal_ids: (Integer bits) -> Array[Integer]
|
|
33
|
+
|
|
34
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
35
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/lr0_collection.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Constructs only the LR(0) core collection. Keeping this separate from
|
|
6
|
+
# lookahead propagation makes the direct IELR phases reusable and gives
|
|
7
|
+
# them a stable, canonical-free input representation.
|
|
8
|
+
class LR0Collection
|
|
9
|
+
AUGMENTED_PRODUCTION: Integer
|
|
10
|
+
|
|
11
|
+
@grammar: IR::Grammar
|
|
12
|
+
|
|
13
|
+
@productions_by_lhs: Hash[Integer, Array[IR::Production]]
|
|
14
|
+
|
|
15
|
+
@starts: Array[String]
|
|
16
|
+
|
|
17
|
+
@augmented_rhs: Hash[Integer, Array[Integer]]
|
|
18
|
+
|
|
19
|
+
@production_rhs: Array[Array[Integer]]
|
|
20
|
+
|
|
21
|
+
@item_key_stride: Integer
|
|
22
|
+
|
|
23
|
+
# @rbs (IR::Grammar grammar, ?starts: Array[String]?) -> void
|
|
24
|
+
def initialize: (IR::Grammar grammar, ?starts: Array[String]?) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs () -> [Array[core_set], transitions]
|
|
27
|
+
def build: () -> [ Array[core_set], transitions ]
|
|
28
|
+
|
|
29
|
+
# @rbs (Integer index) -> Integer
|
|
30
|
+
def augmented_production: (Integer index) -> Integer
|
|
31
|
+
|
|
32
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
33
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
34
|
+
|
|
35
|
+
# @rbs (Integer production_id) -> Integer
|
|
36
|
+
def lhs_for: (Integer production_id) -> Integer
|
|
37
|
+
|
|
38
|
+
# @rbs (core_set items) -> Hash[Integer, core_set]
|
|
39
|
+
def shifted_kernels: (core_set items) -> Hash[Integer, core_set]
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
# @rbs (core_set seed) -> core_set
|
|
44
|
+
def closure: (core_set seed) -> core_set
|
|
45
|
+
|
|
46
|
+
# @rbs (core_set items) -> Array[Integer]
|
|
47
|
+
def item_key: (core_set items) -> Array[Integer]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/on_error_reductions.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Delays syntax-error detection by filling only otherwise erroneous table
|
|
6
|
+
# cells with one uniquely highest-priority declared reduction.
|
|
7
|
+
module OnErrorReductions
|
|
8
|
+
# @rbs (IR::Grammar grammar, Array[IR::AutomatonState] states) -> Array[IR::AutomatonState]
|
|
9
|
+
def self?.apply: (IR::Grammar grammar, Array[IR::AutomatonState] states) -> Array[IR::AutomatonState]
|
|
10
|
+
|
|
11
|
+
# @rbs (IR::Grammar grammar) -> Hash[Integer, Integer]
|
|
12
|
+
def self?.reduction_priorities: (IR::Grammar grammar) -> Hash[Integer, Integer]
|
|
13
|
+
|
|
14
|
+
# @rbs (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities,
|
|
15
|
+
# Array[Integer] terminal_ids) -> IR::AutomatonState
|
|
16
|
+
def apply_state: (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities, Array[Integer] terminal_ids) -> IR::AutomatonState
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities) -> Integer?
|
|
19
|
+
def selected_production: (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities) -> Integer?
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/unreachable_states.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Optional post-resolution compaction. It is intentionally off by
|
|
6
|
+
# default because state numbers are part of diagnostics and golden output.
|
|
7
|
+
module UnreachableStates
|
|
8
|
+
# @rbs (Array[IR::AutomatonState] states, Array[Integer] start_states) ->
|
|
9
|
+
# [Array[IR::AutomatonState], Hash[Integer, Integer]]
|
|
10
|
+
def self?.remove: (Array[IR::AutomatonState] states, Array[Integer] start_states) -> [ Array[IR::AutomatonState], Hash[Integer, Integer] ]
|
|
11
|
+
|
|
12
|
+
# @rbs (Array[IR::AutomatonState], Array[Integer]) -> Array[Integer]
|
|
13
|
+
def self?.reachable_states: (Array[IR::AutomatonState], Array[Integer]) -> Array[Integer]
|
|
14
|
+
|
|
15
|
+
# @rbs (Hash[Integer, Integer], Hash[Integer, Integer]) -> Hash[Integer, Integer]
|
|
16
|
+
def self?.remap_edges: (Hash[Integer, Integer], Hash[Integer, Integer]) -> Hash[Integer, Integer]
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::parser_action?, Hash[Integer, Integer]) -> IR::parser_action?
|
|
19
|
+
def self?.remap_action: (IR::parser_action?, Hash[Integer, Integer]) -> IR::parser_action?
|
|
20
|
+
|
|
21
|
+
# @rbs (IR::conflict, Hash[Integer, Integer]) -> IR::conflict
|
|
22
|
+
def self?.remap_conflict: (IR::conflict, Hash[Integer, Integer]) -> IR::conflict
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
data/sig/ibex/lalr.rbs
CHANGED
|
@@ -6,18 +6,34 @@ module Ibex
|
|
|
6
6
|
|
|
7
7
|
type item_core = [ Integer, Integer ]
|
|
8
8
|
|
|
9
|
+
type core_set = Set[item_core]
|
|
10
|
+
|
|
9
11
|
type item_set = Set[lr_item]
|
|
10
12
|
|
|
11
13
|
type packed_items = Hash[item_core, Set[Integer]]
|
|
12
14
|
|
|
13
15
|
type transitions = Array[Hash[Integer, Integer]]
|
|
14
16
|
|
|
15
|
-
type
|
|
17
|
+
type build_collection = { construction_states: Integer, canonical_states: Integer?, strategy: Symbol, lr0_states: Integer?, lr0_items: Integer?, canonical_items: Integer?, propagation_edges: Integer?, ielr_initial_partitions: Integer?, ielr_final_partitions: Integer?, ielr_annotations: Integer?, ielr_annotated_states: Integer?, ielr_inadequacies: Integer?, ielr_split_stable_discarded: Integer?, ielr_lalr_states: Integer?, ielr_split_states: Integer?, ielr_unreachable_removed: Integer?, ielr_remergeable_candidates: Integer? }
|
|
18
|
+
|
|
19
|
+
type conflict_fingerprint = [ Symbol, String, Array[Integer] ]
|
|
20
|
+
|
|
21
|
+
type lookahead_node = [ Integer, Integer, Integer ]
|
|
22
|
+
|
|
23
|
+
type state_partition = Array[Integer]
|
|
24
|
+
|
|
25
|
+
type derivation_node = Hash[Symbol, Object?]
|
|
16
26
|
|
|
17
27
|
type search_status = :conflict | :shifted | :accepted
|
|
18
28
|
|
|
19
29
|
type search_entry = [ search_status, ConflictSearch::Configuration ]
|
|
20
30
|
|
|
21
31
|
type search_result = { sentence_ids: Array[Integer], lookahead_index: Integer, interpretations: Array[IR::interpretation] }
|
|
32
|
+
|
|
33
|
+
type search_bounds = { max_tokens: Integer, max_configurations: Integer }
|
|
34
|
+
|
|
35
|
+
type search_outcome = { status: :found | :not_found | :exhausted, result: search_result?, explored: Integer, exhausted: bool, bounds: search_bounds }
|
|
36
|
+
|
|
37
|
+
type search_counterexample = { state: Integer, type: Symbol, symbol_path: Array[String], sentence: Array[String], lookahead_index: Integer, unifying: bool, inconclusive: bool, search: search_outcome, interpretations: Array[IR::interpretation] }
|
|
22
38
|
end
|
|
23
39
|
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Generated from lib/ibex/location.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Immutable source range suitable for lexer tokens and parser diagnostics.
|
|
5
|
+
#
|
|
6
|
+
# Coordinates are one-based. Byte offsets are optional, zero-based, and
|
|
7
|
+
# half-open. Keeping both forms lets Unicode-aware lexers report human
|
|
8
|
+
# columns without losing an exact source slice.
|
|
9
|
+
class Location
|
|
10
|
+
attr_reader file: String?
|
|
11
|
+
|
|
12
|
+
attr_reader line: Integer
|
|
13
|
+
|
|
14
|
+
attr_reader column: Integer
|
|
15
|
+
|
|
16
|
+
attr_reader end_line: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader end_column: Integer
|
|
19
|
+
|
|
20
|
+
attr_reader start_byte: Integer?
|
|
21
|
+
|
|
22
|
+
attr_reader end_byte: Integer?
|
|
23
|
+
|
|
24
|
+
attr_reader source_line: String?
|
|
25
|
+
|
|
26
|
+
# @rbs (?file: String?, line: Integer, column: Integer, ?end_line: Integer?,
|
|
27
|
+
# ?end_column: Integer?, ?start_byte: Integer?, ?end_byte: Integer?, ?source_line: String?) -> void
|
|
28
|
+
def initialize: (line: Integer, column: Integer, ?file: String?, ?end_line: Integer?, ?end_column: Integer?, ?start_byte: Integer?, ?end_byte: Integer?, ?source_line: String?) -> void
|
|
29
|
+
|
|
30
|
+
# Return the smallest range covering both locations.
|
|
31
|
+
# @rbs (Location other) -> Location
|
|
32
|
+
def join: (Location other) -> Location
|
|
33
|
+
|
|
34
|
+
# Fold a nonempty collection into one covering range.
|
|
35
|
+
# @rbs (Enumerable[Location] locations) -> Location
|
|
36
|
+
def self.join: (Enumerable[Location] locations) -> Location
|
|
37
|
+
|
|
38
|
+
# @rbs () -> bool
|
|
39
|
+
def empty?: () -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs () -> Hash[Symbol, String | Integer]
|
|
42
|
+
def to_h: () -> Hash[Symbol, String | Integer]
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
# @rbs (Symbol name, Object? value) -> Integer
|
|
47
|
+
def positive_coordinate: (Symbol name, Object? value) -> Integer
|
|
48
|
+
|
|
49
|
+
# @rbs (Symbol name, Object? value) -> Integer?
|
|
50
|
+
def optional_offset: (Symbol name, Object? value) -> Integer?
|
|
51
|
+
|
|
52
|
+
# @rbs () -> void
|
|
53
|
+
def validate_order!: () -> void
|
|
54
|
+
|
|
55
|
+
# @rbs (Location left, Location right) -> bool
|
|
56
|
+
def before_or_equal?: (Location left, Location right) -> bool
|
|
57
|
+
|
|
58
|
+
# @rbs (Location left, Location right) -> bool
|
|
59
|
+
def before_or_equal_end?: (Location left, Location right) -> bool
|
|
60
|
+
|
|
61
|
+
# @rbs (Location other) -> Integer?
|
|
62
|
+
def joined_start_byte: (Location other) -> Integer?
|
|
63
|
+
|
|
64
|
+
# @rbs (Location other) -> Integer?
|
|
65
|
+
def joined_end_byte: (Location other) -> Integer?
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/document_handlers.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Applies full-text LSP document notifications to the overlay-backed store.
|
|
6
|
+
module DocumentHandlers
|
|
7
|
+
include RequestSupport
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
12
|
+
def did_open: (lsp_value? raw_params) -> nil
|
|
13
|
+
|
|
14
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
15
|
+
def did_change: (lsp_value? raw_params) -> nil
|
|
16
|
+
|
|
17
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
18
|
+
def did_save: (lsp_value? raw_params) -> nil
|
|
19
|
+
|
|
20
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
21
|
+
def did_close: (lsp_value? raw_params) -> nil
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|