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,31 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/symbol_occurrence.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
type symbol_key = [ :symbol, String ] | [ :parameter, String, Integer, String ] | [ :include, String ]
|
|
6
|
+
|
|
7
|
+
type symbol_data_value = String | Symbol | Integer | bool | nil | Array[String] | Hash[Symbol, symbol_data_value]
|
|
8
|
+
|
|
9
|
+
type symbol_data = Hash[Symbol, symbol_data_value]
|
|
10
|
+
|
|
11
|
+
# A source-backed grammar symbol definition or reference.
|
|
12
|
+
class SymbolOccurrence < Struct[String | Symbol | symbol_key | Frontend::SourceSpan | symbol_data]
|
|
13
|
+
attr_accessor name(): String
|
|
14
|
+
|
|
15
|
+
attr_accessor kind(): Symbol
|
|
16
|
+
|
|
17
|
+
attr_accessor role(): Symbol
|
|
18
|
+
|
|
19
|
+
attr_accessor key(): symbol_key
|
|
20
|
+
|
|
21
|
+
attr_accessor path(): String
|
|
22
|
+
|
|
23
|
+
attr_accessor span(): Frontend::SourceSpan
|
|
24
|
+
|
|
25
|
+
attr_accessor data(): symbol_data
|
|
26
|
+
|
|
27
|
+
def self.new: (?name: String, ?kind: Symbol, ?role: Symbol, ?key: symbol_key, ?path: String, ?span: Frontend::SourceSpan, ?data: symbol_data) -> instance
|
|
28
|
+
| ({ ?name: String, ?kind: Symbol, ?role: Symbol, ?key: symbol_key, ?path: String, ?span: Frontend::SourceSpan, ?data: symbol_data }) -> instance
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/transport.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Reads and writes bounded LSP JSON-RPC messages over Content-Length framing.
|
|
6
|
+
class Transport
|
|
7
|
+
interface _Input
|
|
8
|
+
def read: (Integer length) -> String?
|
|
9
|
+
|
|
10
|
+
def readpartial: (Integer length) -> String
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
interface _Output
|
|
14
|
+
def write: (String value) -> Object?
|
|
15
|
+
|
|
16
|
+
def flush: () -> Object?
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
HEADER_SEPARATOR: ::String
|
|
20
|
+
|
|
21
|
+
# @rbs (_Input input, _Output output) -> void
|
|
22
|
+
def initialize: (_Input input, _Output output) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs () -> LSP::lsp_object?
|
|
25
|
+
def read_message: () -> LSP::lsp_object?
|
|
26
|
+
|
|
27
|
+
# @rbs (LSP::lsp_object message) -> void
|
|
28
|
+
def write_message: (LSP::lsp_object message) -> void
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
# @rbs () -> String?
|
|
33
|
+
def read_header: () -> String?
|
|
34
|
+
|
|
35
|
+
# @rbs (String header) -> Integer
|
|
36
|
+
def content_length: (String header) -> Integer
|
|
37
|
+
|
|
38
|
+
# @rbs (Integer length) -> String
|
|
39
|
+
def read_bytes: (Integer length) -> String
|
|
40
|
+
|
|
41
|
+
# IO#read(length) may wait for the entire length on a live pipe. readpartial
|
|
42
|
+
# lets the stdio server process the bytes that are already available.
|
|
43
|
+
# @rbs (Integer length) -> String?
|
|
44
|
+
def read_chunk: (Integer length) -> String?
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/workspace.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Converts file URIs to canonical paths constrained to initialized workspace roots.
|
|
6
|
+
class Workspace
|
|
7
|
+
attr_reader roots: Array[String]
|
|
8
|
+
|
|
9
|
+
# @rbs (Array[String] root_uris, Frontend::SourceLoader loader) -> void
|
|
10
|
+
def initialize: (Array[String] root_uris, Frontend::SourceLoader loader) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (String uri, ?allow_missing: bool) -> String
|
|
13
|
+
def path: (String uri, ?allow_missing: bool) -> String
|
|
14
|
+
|
|
15
|
+
# @rbs (String path) -> String
|
|
16
|
+
def uri: (String path) -> String
|
|
17
|
+
|
|
18
|
+
# @rbs (String path) -> String?
|
|
19
|
+
def root_for: (String path) -> String?
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
# URI is a stdlib boundary whose implementation class varies by scheme.
|
|
24
|
+
# URI parsing returns a scheme-specific URI::Generic subclass.
|
|
25
|
+
# @rbs (String uri) -> URI::Generic
|
|
26
|
+
def parse_file_uri: (String uri) -> URI::Generic
|
|
27
|
+
|
|
28
|
+
# Ruby's URI::File may discard userinfo and port, so validate the raw authority first.
|
|
29
|
+
# @rbs (String uri) -> void
|
|
30
|
+
def validate_raw_authority!: (String uri) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (String uri) -> String
|
|
33
|
+
def canonical_root: (String uri) -> String
|
|
34
|
+
|
|
35
|
+
# @rbs (String encoded) -> String
|
|
36
|
+
def decode_path: (String encoded) -> String
|
|
37
|
+
|
|
38
|
+
# @rbs (String path, String root) -> bool
|
|
39
|
+
def inside?: (String path, String root) -> bool
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/workspace_analyzer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Parses workspace sources, discovers safe include closures, and renders diagnostics.
|
|
6
|
+
class WorkspaceAnalyzer
|
|
7
|
+
GLOB_CHARACTERS: Regexp
|
|
8
|
+
|
|
9
|
+
WINDOWS_ABSOLUTE: Regexp
|
|
10
|
+
|
|
11
|
+
type lsp_diagnostic = lsp_object
|
|
12
|
+
|
|
13
|
+
type analyzed_document = { source: String, document: Frontend::SourceDocument?, diagnostics: Array[lsp_diagnostic] }
|
|
14
|
+
|
|
15
|
+
# @rbs (Workspace workspace, Frontend::SourceLoader loader) -> void
|
|
16
|
+
def initialize: (Workspace workspace, Frontend::SourceLoader loader) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (String path) -> analyzed_document
|
|
19
|
+
def analyze: (String path) -> analyzed_document
|
|
20
|
+
|
|
21
|
+
# @rbs (String root) -> [Array[String], Hash[String, analyzed_document]]
|
|
22
|
+
def closure: (String root) -> [ Array[String], Hash[String, analyzed_document] ]
|
|
23
|
+
|
|
24
|
+
# @rbs (String root) -> [Frontend::Resolution?, Array[lsp_diagnostic]]
|
|
25
|
+
def resolve: (String root) -> [ Frontend::Resolution?, Array[lsp_diagnostic] ]
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
# @rbs (String path, String source) -> analyzed_document
|
|
30
|
+
def analyze_root: (String path, String source) -> analyzed_document
|
|
31
|
+
|
|
32
|
+
# @rbs (String path, String source) -> analyzed_document
|
|
33
|
+
def analyze_fragment: (String path, String source) -> analyzed_document
|
|
34
|
+
|
|
35
|
+
# @rbs (String source, String path) -> bool
|
|
36
|
+
def fragment_source?: (String source, String path) -> bool
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::SourceDocument? document) -> Array[String]
|
|
39
|
+
def dependencies: (Frontend::SourceDocument? document) -> Array[String]
|
|
40
|
+
|
|
41
|
+
# @rbs (Frontend::AST::Include include_node) -> String
|
|
42
|
+
def canonical_include: (Frontend::AST::Include include_node) -> String
|
|
43
|
+
|
|
44
|
+
# @rbs (Frontend::AST::Include include_node) -> bot
|
|
45
|
+
def invalid_include: (Frontend::AST::Include include_node) -> bot
|
|
46
|
+
|
|
47
|
+
# @rbs (String message, String source, String fallback_path) -> lsp_diagnostic
|
|
48
|
+
def diagnostic: (String message, String source, String fallback_path) -> lsp_diagnostic
|
|
49
|
+
|
|
50
|
+
# @rbs (Frontend::Diagnostic diagnostic, String source) -> lsp_diagnostic
|
|
51
|
+
def frontend_diagnostic: (Frontend::Diagnostic diagnostic, String source) -> lsp_diagnostic
|
|
52
|
+
|
|
53
|
+
# @rbs (String message, String fallback_path) -> [String, Integer, Integer, String]
|
|
54
|
+
def diagnostic_parts: (String message, String fallback_path) -> [ String, Integer, Integer, String ]
|
|
55
|
+
|
|
56
|
+
# @rbs (String source, Integer line, Integer column) -> Hash[String, Hash[String, Integer]]
|
|
57
|
+
def diagnostic_range: (String source, Integer line, Integer column) -> Hash[String, Hash[String, Integer]]
|
|
58
|
+
|
|
59
|
+
# @rbs (String path) -> String
|
|
60
|
+
def readable_source: (String path) -> String
|
|
61
|
+
|
|
62
|
+
# @rbs (String message, String fallback) -> String
|
|
63
|
+
def file_for_error: (String message, String fallback) -> String
|
|
64
|
+
|
|
65
|
+
# @rbs (String message, String fallback) -> String
|
|
66
|
+
def source_for_error: (String message, String fallback) -> String
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data/sig/ibex/lsp.rbs
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated from lib/ibex/messages.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Immutable built-in diagnostic translations, separate from user E00xx
|
|
5
|
+
# sentence-keyed parser error catalogs.
|
|
6
|
+
module Messages
|
|
7
|
+
ROOT: String
|
|
8
|
+
|
|
9
|
+
LANGUAGES: Array[String]
|
|
10
|
+
|
|
11
|
+
# @rbs (String? requested) -> String
|
|
12
|
+
def self?.language: (String? requested) -> String
|
|
13
|
+
|
|
14
|
+
# @rbs (String id, ?language: String, **Object? values) -> String
|
|
15
|
+
def self?.translate: (String id, ?language: String, **Object? values) -> String
|
|
16
|
+
|
|
17
|
+
# @rbs (String id) -> bool
|
|
18
|
+
def self?.known?: (String id) -> bool
|
|
19
|
+
|
|
20
|
+
# @rbs (String language) -> Hash[String, String]
|
|
21
|
+
def self?.catalog: (String language) -> Hash[String, String]
|
|
22
|
+
|
|
23
|
+
# @rbs (String language) -> Hash[String, String]
|
|
24
|
+
def self?.load_catalog: (String language) -> Hash[String, String]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Generated from lib/ibex/metrics.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Deterministic structural metrics over normalized Grammar and Automaton IR.
|
|
5
|
+
class Metrics
|
|
6
|
+
type report_value = String | Integer | Float | Array[report_value] | Hash[Symbol, report_value]
|
|
7
|
+
|
|
8
|
+
# @rbs (IR::Automaton automaton) -> void
|
|
9
|
+
def initialize: (IR::Automaton automaton) -> void
|
|
10
|
+
|
|
11
|
+
# @rbs () -> Hash[Symbol, report_value]
|
|
12
|
+
def to_h: () -> Hash[Symbol, report_value]
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
17
|
+
def symbol_metrics: () -> Hash[Symbol, Integer]
|
|
18
|
+
|
|
19
|
+
# @rbs () -> Hash[Symbol, report_value]
|
|
20
|
+
def grammar_metrics: () -> Hash[Symbol, report_value]
|
|
21
|
+
|
|
22
|
+
# @rbs () -> Hash[Symbol, report_value]
|
|
23
|
+
def automaton_metrics: () -> Hash[Symbol, report_value]
|
|
24
|
+
|
|
25
|
+
# @rbs (Array[Integer] values) -> Float
|
|
26
|
+
def average: (Array[Integer] values) -> Float
|
|
27
|
+
|
|
28
|
+
# @rbs () -> Hash[Integer, Array[Integer]]
|
|
29
|
+
def dependency_graph: () -> Hash[Integer, Array[Integer]]
|
|
30
|
+
|
|
31
|
+
# @rbs () -> Hash[Integer, Set[Integer]]
|
|
32
|
+
def reachability: () -> Hash[Integer, Set[Integer]]
|
|
33
|
+
|
|
34
|
+
# @rbs () -> Array[Array[Integer]]
|
|
35
|
+
def recursion_components: () -> Array[Array[Integer]]
|
|
36
|
+
|
|
37
|
+
# @rbs () -> Array[Integer]
|
|
38
|
+
def recursive_nonterminal_ids: () -> Array[Integer]
|
|
39
|
+
|
|
40
|
+
# Longest path after collapsing mutually recursive nonterminals.
|
|
41
|
+
# @rbs () -> Integer
|
|
42
|
+
def recursion_component_depth: () -> Integer
|
|
43
|
+
|
|
44
|
+
# @rbs (Array[Set[Integer]] edges) -> Integer
|
|
45
|
+
def longest_dag_path: (Array[Set[Integer]] edges) -> Integer
|
|
46
|
+
|
|
47
|
+
# @rbs (Integer id) -> String
|
|
48
|
+
def symbol_name: (Integer id) -> String
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -11,6 +11,37 @@ module Ibex
|
|
|
11
11
|
# @rbs (Frontend::AST::declaration declaration) -> void
|
|
12
12
|
def read_declaration: (Frontend::AST::declaration declaration) -> void
|
|
13
13
|
|
|
14
|
+
# @rbs (Frontend::AST::Start declaration) -> void
|
|
15
|
+
def read_start_declaration: (Frontend::AST::Start declaration) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::AST::symbol_metadata | Frontend::AST::Parameter | Frontend::AST::Printer declaration) -> void
|
|
18
|
+
def read_extended_declaration: (Frontend::AST::symbol_metadata | Frontend::AST::Parameter | Frontend::AST::Printer declaration) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs (Frontend::AST::Printer declaration) -> void
|
|
21
|
+
def read_value_printer: (Frontend::AST::Printer declaration) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs () -> void
|
|
24
|
+
def validate_value_printers: () -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::Parameter declaration) -> void
|
|
27
|
+
def read_parser_parameter: (Frontend::AST::Parameter declaration) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Frontend::AST::Tokens declaration) -> void
|
|
30
|
+
def read_tokens: (Frontend::AST::Tokens declaration) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Frontend::AST::Options declaration) -> void
|
|
33
|
+
def read_options: (Frontend::AST::Options declaration) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (Frontend::AST::Convert declaration) -> void
|
|
36
|
+
def read_conversions: (Frontend::AST::Convert declaration) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::AST::symbol_metadata declaration) -> void
|
|
39
|
+
def read_symbol_metadata_declaration: (Frontend::AST::symbol_metadata declaration) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (Frontend::AST::symbol_metadata declaration, Hash[String, String] values,
|
|
42
|
+
# Hash[String, IR::location] locations, String label) -> void
|
|
43
|
+
def read_symbol_metadata: (Frontend::AST::symbol_metadata declaration, Hash[String, String] values, Hash[String, IR::location] locations, String label) -> void
|
|
44
|
+
|
|
14
45
|
# @rbs (Frontend::AST::Precedence declaration) -> void
|
|
15
46
|
def read_precedence: (Frontend::AST::Precedence declaration) -> void
|
|
16
47
|
|
|
@@ -8,23 +8,32 @@ module Ibex
|
|
|
8
8
|
# @rbs () -> void
|
|
9
9
|
def validate_grammar: () -> void
|
|
10
10
|
|
|
11
|
+
# @rbs () -> void
|
|
12
|
+
def validate_symbol_metadata: () -> void
|
|
13
|
+
|
|
11
14
|
# @rbs () -> void
|
|
12
15
|
def warn_duplicate_productions: () -> void
|
|
13
16
|
|
|
14
17
|
# @rbs () -> void
|
|
15
18
|
def warn_unreachable_nonterminals: () -> void
|
|
16
19
|
|
|
17
|
-
# @rbs () ->
|
|
18
|
-
def reachable_symbol_ids: () ->
|
|
20
|
+
# @rbs () -> Hash[Integer, true]
|
|
21
|
+
def reachable_symbol_ids: () -> Hash[Integer, true]
|
|
19
22
|
|
|
20
23
|
# @rbs () -> void
|
|
21
24
|
def warn_unused_terminals: () -> void
|
|
22
25
|
|
|
26
|
+
# @rbs () -> void
|
|
27
|
+
def warn_unreachable_terminals: () -> void
|
|
28
|
+
|
|
29
|
+
# @rbs () -> void
|
|
30
|
+
def warn_unused_precedence: () -> void
|
|
31
|
+
|
|
23
32
|
# @rbs () -> void
|
|
24
33
|
def warn_empty_language: () -> void
|
|
25
34
|
|
|
26
|
-
# @rbs () ->
|
|
27
|
-
def productive_terminal_ids: () ->
|
|
35
|
+
# @rbs () -> Hash[Integer, true]
|
|
36
|
+
def productive_terminal_ids: () -> Hash[Integer, true]
|
|
28
37
|
|
|
29
38
|
# @rbs (IR::GrammarSymbol grammar_symbol) -> bool
|
|
30
39
|
def productive_terminal?: (IR::GrammarSymbol grammar_symbol) -> bool
|
|
@@ -11,6 +11,9 @@ module Ibex
|
|
|
11
11
|
# @rbs (Frontend::AST::Rule rule, Frontend::AST::Alternative alternative) -> void
|
|
12
12
|
def normalize_alternative: (Frontend::AST::Rule rule, Frontend::AST::Alternative alternative) -> void
|
|
13
13
|
|
|
14
|
+
# @rbs (Frontend::AST::Alternative alternative) -> Array[Frontend::AST::item]
|
|
15
|
+
def normalized_alternative_items: (Frontend::AST::Alternative alternative) -> Array[Frontend::AST::item]
|
|
16
|
+
|
|
14
17
|
# @rbs (Frontend::AST::item item) -> String
|
|
15
18
|
def normalize_item: (Frontend::AST::item item) -> String
|
|
16
19
|
|
|
@@ -20,47 +23,50 @@ module Ibex
|
|
|
20
23
|
# @rbs (Frontend::AST::Optional item) -> String
|
|
21
24
|
def expand_optional: (Frontend::AST::Optional item) -> String
|
|
22
25
|
|
|
26
|
+
# @rbs (Frontend::AST::Optional item, String base) -> String
|
|
27
|
+
def build_optional: (Frontend::AST::Optional item, String base) -> String
|
|
28
|
+
|
|
23
29
|
# @rbs (Frontend::AST::Star item) -> String
|
|
24
30
|
def expand_star: (Frontend::AST::Star item) -> String
|
|
25
31
|
|
|
32
|
+
# @rbs (Frontend::AST::Star item, String base) -> String
|
|
33
|
+
def build_star: (Frontend::AST::Star item, String base) -> String
|
|
34
|
+
|
|
26
35
|
# @rbs (Frontend::AST::Plus item) -> String
|
|
27
36
|
def expand_plus: (Frontend::AST::Plus item) -> String
|
|
28
37
|
|
|
38
|
+
# @rbs (Frontend::AST::Plus item, String base) -> String
|
|
39
|
+
def build_plus: (Frontend::AST::Plus item, String base) -> String
|
|
40
|
+
|
|
29
41
|
# @rbs (Frontend::AST::SeparatedList item) -> String
|
|
30
42
|
def expand_separated_list: (Frontend::AST::SeparatedList item) -> String
|
|
31
43
|
|
|
44
|
+
# @rbs (Frontend::AST::SeparatedList item, String base, String separator) -> String
|
|
45
|
+
def build_separated_list: (Frontend::AST::SeparatedList item, String base, String separator) -> String
|
|
46
|
+
|
|
32
47
|
# @rbs (Frontend::AST::Group item) -> String
|
|
33
48
|
def expand_group: (Frontend::AST::Group item) -> String
|
|
34
49
|
|
|
50
|
+
# @rbs (String helper, Array[String] rhs, Frontend::AST::Group item) -> void
|
|
51
|
+
def add_group_production: (String helper, Array[String] rhs, Frontend::AST::Group item) -> void
|
|
52
|
+
|
|
35
53
|
# @rbs (Integer length) -> String
|
|
36
54
|
def group_value_expression: (Integer length) -> String
|
|
37
55
|
|
|
38
|
-
# @rbs (Frontend::AST::Group group) -> void
|
|
39
|
-
def reject_group_named_references: (Frontend::AST::Group group) -> void
|
|
40
|
-
|
|
41
|
-
# @rbs (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
42
|
-
def named_reference_in: (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
43
|
-
|
|
44
56
|
# @rbs (String kind, Frontend::Location location) -> String
|
|
45
57
|
def new_helper: (String kind, Frontend::Location location) -> String
|
|
46
58
|
|
|
47
59
|
# @rbs (String expression, Frontend::Location location) -> IR::Action
|
|
48
60
|
def synthetic_action: (String expression, Frontend::Location location) -> IR::Action
|
|
49
61
|
|
|
50
|
-
# @rbs (Symbol kind, Frontend::AST::item item) -> Hash[Symbol,
|
|
51
|
-
def synthetic_origin: (Symbol kind, Frontend::AST::item item) -> Hash[Symbol,
|
|
62
|
+
# @rbs (Symbol kind, Frontend::AST::item item) -> Hash[Symbol, Object?]
|
|
63
|
+
def synthetic_origin: (Symbol kind, Frontend::AST::item item) -> Hash[Symbol, Object?]
|
|
52
64
|
|
|
53
65
|
# @rbs (Frontend::AST::InlineAction? action, Array[IR::named_ref] named_refs) -> IR::Action?
|
|
54
66
|
def normalize_action: (Frontend::AST::InlineAction? action, Array[IR::named_ref] named_refs) -> IR::Action?
|
|
55
67
|
|
|
56
|
-
# @rbs (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
57
|
-
def add_named_reference: (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
58
|
-
|
|
59
|
-
# @rbs (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
60
|
-
def unwrap_reference: (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
61
|
-
|
|
62
68
|
# @rbs (String lhs_name, Array[String] rhs_names, IR::Action? action, String? precedence_name,
|
|
63
|
-
# Hash[Symbol, untyped] origin) -> void
|
|
64
|
-
def add_production: (String lhs_name, Array[String] rhs_names, IR::Action? action, String? precedence_name, Hash[Symbol, untyped] origin) -> void
|
|
69
|
+
# Hash[Symbol, untyped] origin, ?String? documentation, ?IR::node_annotation? node) -> void
|
|
70
|
+
def add_production: (String lhs_name, Array[String] rhs_names, IR::Action? action, String? precedence_name, Hash[Symbol, untyped] origin, ?String? documentation, ?IR::node_annotation? node) -> void
|
|
65
71
|
end
|
|
66
72
|
end
|
|
@@ -3,19 +3,21 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
# Deterministically renders frontend EBNF items for production origin metadata.
|
|
5
5
|
module NormalizeExpression
|
|
6
|
-
|
|
6
|
+
type pending_item = String | Frontend::AST::item
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
private def render_group: (Frontend::AST::Group item) -> String
|
|
8
|
+
# @rbs (Frontend::AST::item item) -> String
|
|
9
|
+
def self.render: (Frontend::AST::item item) -> String
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
# @rbs (Array[pending_item] pending, Frontend::AST::item item) -> void
|
|
12
|
+
private def self.push_render_item: (Array[pending_item] pending, Frontend::AST::item item) -> void
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
# @rbs (Array[pending_item] pending, Frontend::AST::ParameterizedReference item) -> void
|
|
15
|
+
private def self.push_render_parameterized_reference: (Array[pending_item] pending, Frontend::AST::ParameterizedReference item) -> void
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
# @rbs (Array[pending_item] pending, Frontend::AST::Group item) -> void
|
|
18
|
+
private def self.push_render_group: (Array[pending_item] pending, Frontend::AST::Group item) -> void
|
|
17
19
|
|
|
18
|
-
# @rbs (Frontend::AST::item
|
|
19
|
-
def self
|
|
20
|
+
# @rbs (Array[pending_item] pending, Array[Frontend::AST::item] items, String separator) -> void
|
|
21
|
+
private def self.push_render_items: (Array[pending_item] pending, Array[Frontend::AST::item] items, String separator) -> void
|
|
20
22
|
end
|
|
21
23
|
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/grammar_builder.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Builds the single current Grammar IR format for every normalized source.
|
|
5
|
+
module NormalizeGrammarBuilder
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (IR::ParserContract? parser_contract) -> IR::Grammar
|
|
9
|
+
def build_grammar: (IR::ParserContract? parser_contract) -> IR::Grammar
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/inline_expansion.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Deterministically substitutes inline-rule productions before LR construction.
|
|
5
|
+
# rubocop:disable Metrics/ModuleLength -- expansion, action plans, and id remapping share one invariant.
|
|
6
|
+
module NormalizeInlineExpansion
|
|
7
|
+
type inline_reference = [ :physical | :step, Integer ]
|
|
8
|
+
|
|
9
|
+
type inline_step = { kind: :inline | :rule, rule: String?, code: String?, loc: IR::location, named_refs: Array[IR::named_ref], context_length: Integer, inputs: Array[inline_reference], stack_inputs: Array[inline_reference], lookahead: Integer, result_var: bool, result_type: String? }
|
|
10
|
+
|
|
11
|
+
type inline_variant = { rhs: Array[Integer], steps: Array[inline_step], logical_refs: Array[inline_reference], output_ref: inline_reference?, inline_used: bool, inline_rule: String?, precedence_override: Integer?, precedence_contributes: bool, parameter: IR::parameter_expansion? }
|
|
12
|
+
|
|
13
|
+
type inline_frame = { production: IR::Production, symbol_id: Integer?, index: Integer, variant: inline_variant }
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
# @rbs () -> void
|
|
18
|
+
def expand_inline_rules: () -> void
|
|
19
|
+
|
|
20
|
+
# Explicit heap frames avoid tying grammar depth to the Ruby call stack.
|
|
21
|
+
# The single-definition path reuses its accumulated arrays, so a long
|
|
22
|
+
# acyclic chain remains linear in the size of its final action plan.
|
|
23
|
+
# @rbs (IR::Production production, Hash[Integer, Array[IR::Production]] definitions) ->
|
|
24
|
+
# Array[inline_variant]
|
|
25
|
+
def expand_inline_production: (IR::Production production, Hash[Integer, Array[IR::Production]] definitions) -> Array[inline_variant]
|
|
26
|
+
|
|
27
|
+
# @rbs (Array[inline_frame] frames, Hash[Integer, Array[IR::Production]] definitions,
|
|
28
|
+
# Array[Array[inline_frame]] worklist, Array[inline_variant] variants,
|
|
29
|
+
# IR::location? location) -> void
|
|
30
|
+
def drain_inline_expansion_frames: (Array[inline_frame] frames, Hash[Integer, Array[IR::Production]] definitions, Array[Array[inline_frame]] worklist, Array[inline_variant] variants, IR::location? location) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Array[inline_frame] frames, Hash[Integer, Array[IR::Production]] definitions,
|
|
33
|
+
# Array[Array[inline_frame]] worklist, Array[inline_variant] variants,
|
|
34
|
+
# IR::location? location) -> bool
|
|
35
|
+
def advance_inline_expansion_frame?: (Array[inline_frame] frames, Hash[Integer, Array[IR::Production]] definitions, Array[Array[inline_frame]] worklist, Array[inline_variant] variants, IR::location? location) -> bool
|
|
36
|
+
|
|
37
|
+
# @rbs (Array[inline_frame] frames, Array[IR::Production] choices, Integer symbol_id,
|
|
38
|
+
# Array[Array[inline_frame]] worklist) -> void
|
|
39
|
+
def schedule_inline_choice_branches: (Array[inline_frame] frames, Array[IR::Production] choices, Integer symbol_id, Array[Array[inline_frame]] worklist) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (Array[inline_frame] frames, Array[inline_variant] variants,
|
|
42
|
+
# Array[Array[inline_frame]] worklist, IR::location? location) -> bool
|
|
43
|
+
def complete_inline_expansion_frame?: (Array[inline_frame] frames, Array[inline_variant] variants, Array[Array[inline_frame]] worklist, IR::location? location) -> bool
|
|
44
|
+
|
|
45
|
+
# @rbs (IR::Production production, Integer? symbol_id) -> inline_frame
|
|
46
|
+
def inline_expansion_frame: (IR::Production production, Integer? symbol_id) -> inline_frame
|
|
47
|
+
|
|
48
|
+
# @rbs (Array[inline_frame] frames) -> Array[inline_frame]
|
|
49
|
+
def clone_inline_expansion_frames: (Array[inline_frame] frames) -> Array[inline_frame]
|
|
50
|
+
|
|
51
|
+
# @rbs (IR::Production production) -> inline_variant
|
|
52
|
+
def empty_inline_variant: (IR::Production production) -> inline_variant
|
|
53
|
+
|
|
54
|
+
# @rbs (inline_variant variant, Integer symbol_id) -> inline_variant
|
|
55
|
+
def append_inline_symbol: (inline_variant variant, Integer symbol_id) -> inline_variant
|
|
56
|
+
|
|
57
|
+
# @rbs (inline_variant parent, inline_variant child) -> inline_variant
|
|
58
|
+
def combine_inline_variant: (inline_variant parent, inline_variant child) -> inline_variant
|
|
59
|
+
|
|
60
|
+
# @rbs (inline_variant parent, inline_variant child,
|
|
61
|
+
# Integer physical_offset, Integer step_offset) -> Array[inline_step]
|
|
62
|
+
def combined_inline_steps: (inline_variant parent, inline_variant child, Integer physical_offset, Integer step_offset) -> Array[inline_step]
|
|
63
|
+
|
|
64
|
+
# The helper is shared by homogeneous integer and step arrays; callers
|
|
65
|
+
# assert the concrete element type at each use site.
|
|
66
|
+
# @rbs (Array[Object?] left, Array[Object?] right) -> Array[Object?]
|
|
67
|
+
def append_inline_array: (Array[Object?] left, Array[Object?] right) -> Array[Object?]
|
|
68
|
+
|
|
69
|
+
# @rbs (inline_variant parent, inline_variant child) -> Integer?
|
|
70
|
+
def combined_inline_precedence: (inline_variant parent, inline_variant child) -> Integer?
|
|
71
|
+
|
|
72
|
+
# @rbs (inline_variant parent, inline_variant child,
|
|
73
|
+
# Integer physical_offset, Integer step_offset) -> Array[inline_step]
|
|
74
|
+
def remap_inline_steps: (inline_variant parent, inline_variant child, Integer physical_offset, Integer step_offset) -> Array[inline_step]
|
|
75
|
+
|
|
76
|
+
# @rbs (Array[Symbol | Integer] reference, Integer physical_offset, Integer step_offset) ->
|
|
77
|
+
# Array[Symbol | Integer]
|
|
78
|
+
def remap_inline_reference: (Array[Symbol | Integer] reference, Integer physical_offset, Integer step_offset) -> Array[Symbol | Integer]
|
|
79
|
+
|
|
80
|
+
# @rbs (inline_variant variant, IR::Production production) -> inline_variant
|
|
81
|
+
def finish_inline_precedence: (inline_variant variant, IR::Production production) -> inline_variant
|
|
82
|
+
|
|
83
|
+
# @rbs (inline_variant variant, IR::Production production, Integer symbol_id) -> inline_variant
|
|
84
|
+
def finish_inline_choice: (inline_variant variant, IR::Production production, Integer symbol_id) -> inline_variant
|
|
85
|
+
|
|
86
|
+
# @rbs (IR::Production production, Array[inline_reference] inputs, Integer lookahead,
|
|
87
|
+
# :inline | :rule kind, String? rule) -> inline_step
|
|
88
|
+
def inline_action_step: (IR::Production production, Array[inline_reference] inputs, Integer lookahead, :inline | :rule kind, String? rule) -> inline_step
|
|
89
|
+
|
|
90
|
+
# @rbs (IR::Production production, inline_variant variant, Integer id) -> IR::Production
|
|
91
|
+
def composed_inline_production: (IR::Production production, inline_variant variant, Integer id) -> IR::Production
|
|
92
|
+
|
|
93
|
+
# @rbs (IR::Production production, Integer physical_length, Array[inline_step]) -> IR::Action
|
|
94
|
+
def composed_inline_action: (IR::Production production, Integer physical_length, Array[inline_step]) -> IR::Action
|
|
95
|
+
|
|
96
|
+
# @rbs (inline_step step, Integer physical_length) -> IR::action_composition_step
|
|
97
|
+
def composition_plan_step: (inline_step step, Integer physical_length) -> IR::action_composition_step
|
|
98
|
+
|
|
99
|
+
# @rbs (Array[Symbol | Integer] reference, Integer physical_length) -> Integer
|
|
100
|
+
def resolve_inline_reference: (Array[Symbol | Integer] reference, Integer physical_length) -> Integer
|
|
101
|
+
|
|
102
|
+
# @rbs (Integer rhs_length) -> String
|
|
103
|
+
def inline_implicit_code: (Integer rhs_length) -> String
|
|
104
|
+
|
|
105
|
+
# @rbs (IR::location location) -> IR::source_provenance
|
|
106
|
+
def inline_source_provenance: (IR::location location) -> IR::source_provenance
|
|
107
|
+
|
|
108
|
+
# @rbs (IR::Production production, inline_variant variant) -> IR::production_expansion
|
|
109
|
+
def inline_production_expansion: (IR::Production production, inline_variant variant) -> IR::production_expansion
|
|
110
|
+
|
|
111
|
+
# @rbs (IR::Production production, Integer id) -> IR::Production
|
|
112
|
+
def copy_inline_production: (IR::Production production, Integer id) -> IR::Production
|
|
113
|
+
|
|
114
|
+
# @rbs (IR::Production production) -> void
|
|
115
|
+
def charge_inline_expansion!: (IR::Production production) -> void
|
|
116
|
+
|
|
117
|
+
# @rbs (Integer count, IR::location? location) -> void
|
|
118
|
+
def enforce_inline_choice_limit!: (Integer count, IR::location? location) -> void
|
|
119
|
+
|
|
120
|
+
# @rbs (Array[IR::Production] productions) -> void
|
|
121
|
+
def rebuild_inline_symbols: (Array[IR::Production] productions) -> void
|
|
122
|
+
|
|
123
|
+
# @rbs (IR::GrammarSymbol definition, Integer id) -> IR::GrammarSymbol
|
|
124
|
+
def remap_inline_symbol: (IR::GrammarSymbol definition, Integer id) -> IR::GrammarSymbol
|
|
125
|
+
|
|
126
|
+
# @rbs (IR::Production production, Integer id, Hash[Integer, Integer] id_map) -> IR::Production
|
|
127
|
+
def remap_inline_production: (IR::Production production, Integer id, Hash[Integer, Integer] id_map) -> IR::Production
|
|
128
|
+
end
|
|
129
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/inline_validation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Static validation and collection for rules eliminated by inline expansion.
|
|
5
|
+
module NormalizeInlineValidation
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs () -> void
|
|
9
|
+
def gather_inline_rules: () -> void
|
|
10
|
+
|
|
11
|
+
# @rbs () -> void
|
|
12
|
+
def validate_inline_terminal_collisions: () -> void
|
|
13
|
+
|
|
14
|
+
# @rbs () -> void
|
|
15
|
+
def validate_inline_start: () -> void
|
|
16
|
+
|
|
17
|
+
# @rbs () -> void
|
|
18
|
+
def validate_inline_cycles: () -> void
|
|
19
|
+
|
|
20
|
+
# A formal is live for cycle analysis only when substituting its actual can
|
|
21
|
+
# introduce a grammar reference. Calls propagate liveness through their
|
|
22
|
+
# callee's live positions until the finite formal set reaches a fixed point.
|
|
23
|
+
# @rbs () -> Hash[String, Set[Integer]]
|
|
24
|
+
def parameter_formal_liveness: () -> Hash[String, Set[Integer]]
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::item item, Array[String] formals,
|
|
27
|
+
# Hash[String, Set[Integer]] liveness, Set[Integer] found) -> void
|
|
28
|
+
def collect_live_formals: (Frontend::AST::item item, Array[String] formals, Hash[String, Set[Integer]] liveness, Set[Integer] found) -> void
|
|
29
|
+
|
|
30
|
+
# Structural AST traversal necessarily branches once for each public item shape.
|
|
31
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
32
|
+
# @rbs (Frontend::AST::item item, Array[String] formals, Set[String] names,
|
|
33
|
+
# Array[[String, Frontend::Location]] edges, Hash[String, Set[Integer]] liveness) -> void
|
|
34
|
+
def collect_inline_edges: (Frontend::AST::item item, Array[String] formals, Set[String] names, Array[[ String, Frontend::Location ]] edges, Hash[String, Set[Integer]] liveness) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs (String name, Hash[String, Array[[String, Frontend::Location]]] graph,
|
|
37
|
+
# Hash[String, Symbol] states) -> void
|
|
38
|
+
def visit_inline_cycle: (String name, Hash[String, Array[[ String, Frontend::Location ]]] graph, Hash[String, Symbol] states) -> void
|
|
39
|
+
end
|
|
40
|
+
end
|