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,37 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/lexer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Lexer declaration normalization and static safety checks.
|
|
5
|
+
module NormalizeLexer
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs () -> IR::Lexer?
|
|
9
|
+
def normalize_lexer: () -> IR::Lexer?
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::LexerState definition, Array[String] states, Array[IR::LexerRule] rules,
|
|
12
|
+
# Array[IR::lexer_warning] warnings) -> void
|
|
13
|
+
def normalize_lexer_state: (Frontend::AST::LexerState definition, Array[String] states, Array[IR::LexerRule] rules, Array[IR::lexer_warning] warnings) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs (Frontend::AST::LexerRule definition, String state, Integer id,
|
|
16
|
+
# Array[IR::lexer_warning] warnings) -> IR::LexerRule
|
|
17
|
+
def normalize_lexer_rule: (Frontend::AST::LexerRule definition, String state, Integer id, Array[IR::lexer_warning] warnings) -> IR::LexerRule
|
|
18
|
+
|
|
19
|
+
# @rbs (Frontend::AST::LexerRule definition) -> void
|
|
20
|
+
def validate_lexer_token: (Frontend::AST::LexerRule definition) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (Frontend::AST::LexerRule definition) -> void
|
|
23
|
+
def validate_lexer_action: (Frontend::AST::LexerRule definition) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (Frontend::AST::LexerRule definition) -> [String, String]
|
|
26
|
+
def normalize_lexer_pattern: (Frontend::AST::LexerRule definition) -> [ String, String ]
|
|
27
|
+
|
|
28
|
+
# @rbs (String raw, Frontend::Location location) -> String
|
|
29
|
+
def decode_lexer_literal: (String raw, Frontend::Location location) -> String
|
|
30
|
+
|
|
31
|
+
# @rbs (Frontend::AST::LexerRule definition, String source, String options) -> void
|
|
32
|
+
def validate_lexer_regexp: (Frontend::AST::LexerRule definition, String source, String options) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (String source) -> bool
|
|
35
|
+
def risky_lexer_pattern?: (String source) -> bool
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/named_references.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Named-reference collection and validation shared by ordinary and parameterized items.
|
|
5
|
+
module NormalizeNamedReferences
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Group group) -> void
|
|
9
|
+
def reject_group_named_references: (Frontend::AST::Group group) -> void
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
12
|
+
def named_reference_in: (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
13
|
+
|
|
14
|
+
# @rbs (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
15
|
+
def add_named_reference: (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
18
|
+
def unwrap_reference: (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/nodes.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Validation and normalization for generated AST node declarations.
|
|
5
|
+
module NormalizeNodes
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Alternative alternative, Array[String] rhs) -> IR::node_annotation?
|
|
9
|
+
def normalize_node_annotation: (Frontend::AST::Alternative alternative, Array[String] rhs) -> IR::node_annotation?
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::NodeAnnotation annotation, Array[String] rhs) -> void
|
|
12
|
+
def validate_node_fields: (Frontend::AST::NodeAnnotation annotation, Array[String] rhs) -> void
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_ebnf_lowering.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Resumable EBNF lowering used inside specialized parameter alternatives.
|
|
5
|
+
module NormalizeParameterEbnfLowering
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (NormalizeParameters::parameter_frame frame,
|
|
9
|
+
# Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
10
|
+
def lower_parameter_suffix: (NormalizeParameters::parameter_frame frame, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (NormalizeParameters::parameter_frame frame,
|
|
13
|
+
# Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
14
|
+
def finish_parameter_suffix: (NormalizeParameters::parameter_frame frame, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
|
|
17
|
+
def lower_parameter_separated_list: (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
|
|
18
|
+
|
|
19
|
+
# @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
|
|
20
|
+
def finish_parameter_separated_list: (NormalizeParameters::parameter_frame frame, Frontend::AST::SeparatedList item) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::Group item) -> void
|
|
23
|
+
def lower_parameter_group: (NormalizeParameters::parameter_frame frame, Frontend::AST::Group item) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (NormalizeParameters::parameter_frame frame, String helper, Frontend::AST::Group item,
|
|
26
|
+
# Array[Frontend::AST::item] alternative) -> void
|
|
27
|
+
def start_parameter_group_alternative: (NormalizeParameters::parameter_frame frame, String helper, Frontend::AST::Group item, Array[Frontend::AST::item] alternative) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (NormalizeParameters::parameter_frame frame, String helper,
|
|
30
|
+
# Frontend::AST::Group item, Integer length) -> void
|
|
31
|
+
def finish_parameter_group_alternative: (NormalizeParameters::parameter_frame frame, String helper, Frontend::AST::Group item, Integer length) -> void
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_lowering.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Resumable, source-ordered lowering for specialized parameter alternatives.
|
|
5
|
+
module NormalizeParameterLowering
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (NormalizeParameters::parameter_frame frame) -> void
|
|
9
|
+
def advance_parameter_alternative: (NormalizeParameters::parameter_frame frame) -> void
|
|
10
|
+
|
|
11
|
+
# @rbs (NormalizeParameters::parameter_frame frame) { () -> void } -> void
|
|
12
|
+
def with_parameter_frame_context: (NormalizeParameters::parameter_frame frame) { () -> void } -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (NormalizeParameters::parameter_frame frame) -> bool
|
|
15
|
+
def parameter_items_remaining?: (NormalizeParameters::parameter_frame frame) -> bool
|
|
16
|
+
|
|
17
|
+
# @rbs (NormalizeParameters::parameter_frame frame) -> void
|
|
18
|
+
def start_parameter_item: (NormalizeParameters::parameter_frame frame) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs (NormalizeParameters::parameter_frame frame, NormalizeParameters::parameter_operation operation) -> void
|
|
21
|
+
def process_parameter_operation: (NormalizeParameters::parameter_frame frame, NormalizeParameters::parameter_operation operation) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
|
|
24
|
+
def lower_parameter_item: (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::ParameterizedReference item) -> void
|
|
27
|
+
def lower_parameter_call: (NormalizeParameters::parameter_frame frame, Frontend::AST::ParameterizedReference item) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
|
|
30
|
+
def finish_parameter_item: (NormalizeParameters::parameter_frame frame, Frontend::AST::item item) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (NormalizeParameters::parameter_frame frame) -> void
|
|
33
|
+
def finish_parameter_alternative: (NormalizeParameters::parameter_frame frame) -> void
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_substitution.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Structural, sharing-preserving substitution for parameterized user rules.
|
|
5
|
+
module NormalizeParameterSubstitution
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) ->
|
|
9
|
+
# Frontend::AST::Alternative
|
|
10
|
+
def substitute_parameter_alternative: (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Alternative
|
|
11
|
+
|
|
12
|
+
# @rbs (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> String?
|
|
13
|
+
def substitute_parameter_precedence: (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> String?
|
|
14
|
+
|
|
15
|
+
# @rbs (Frontend::AST::item item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
16
|
+
def substitute_parameter_item: (Frontend::AST::item item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
17
|
+
|
|
18
|
+
# @rbs (Frontend::AST::SymbolReference formal, Frontend::AST::item argument) -> Frontend::AST::item
|
|
19
|
+
def substitute_formal_reference: (Frontend::AST::SymbolReference formal, Frontend::AST::item argument) -> Frontend::AST::item
|
|
20
|
+
|
|
21
|
+
# @rbs (Frontend::AST::item item, ?Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
22
|
+
def clone_parameter_item: (Frontend::AST::item item, ?Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
23
|
+
|
|
24
|
+
# @rbs (Frontend::AST::SymbolReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
25
|
+
def clone_parameter_symbol: (Frontend::AST::SymbolReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
26
|
+
|
|
27
|
+
# @rbs (Frontend::AST::ParameterizedReference item, Hash[String, Frontend::AST::item] bindings) ->
|
|
28
|
+
# Frontend::AST::ParameterizedReference
|
|
29
|
+
def clone_parameter_call: (Frontend::AST::ParameterizedReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::ParameterizedReference
|
|
30
|
+
|
|
31
|
+
# @rbs (Frontend::AST::Group item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Group
|
|
32
|
+
def clone_parameter_group: (Frontend::AST::Group item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Group
|
|
33
|
+
|
|
34
|
+
# @rbs (Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item,
|
|
35
|
+
# Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
36
|
+
def clone_parameter_suffix: (Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::AST::SeparatedList item, Hash[String, Frontend::AST::item] bindings) ->
|
|
39
|
+
# Frontend::AST::SeparatedList
|
|
40
|
+
def clone_parameter_separated_list: (Frontend::AST::SeparatedList item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::SeparatedList
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_validation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Static validation and collection of parameterized user rule definitions.
|
|
5
|
+
module NormalizeParameterValidation
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs () -> void
|
|
9
|
+
def gather_parameter_templates: () -> void
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::Rule rule, Hash[String, Frontend::AST::Rule] plain_rules) -> void
|
|
12
|
+
def gather_parameterized_rule: (Frontend::AST::Rule rule, Hash[String, Frontend::AST::Rule] plain_rules) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (Frontend::AST::Rule rule) -> void
|
|
15
|
+
def validate_parameter_formals: (Frontend::AST::Rule rule) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::AST::Rule rule) -> bot
|
|
18
|
+
def reject_mixed_parameterized_rule: (Frontend::AST::Rule rule) -> bot
|
|
19
|
+
|
|
20
|
+
# @rbs () -> void
|
|
21
|
+
def validate_parameter_terminal_collisions: () -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (Frontend::AST::Rule rule) -> void
|
|
24
|
+
def validate_parameter_references: (Frontend::AST::Rule rule) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::item item, Array[String] formals, inside_argument: bool) -> void
|
|
27
|
+
def validate_parameter_item: (Frontend::AST::item item, Array[String] formals, inside_argument: bool) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Frontend::AST::ParameterizedReference item, Array[String] formals, inside_argument: bool) -> void
|
|
30
|
+
def validate_parameterized_item: (Frontend::AST::ParameterizedReference item, Array[String] formals, inside_argument: bool) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item) -> bot
|
|
33
|
+
def reject_argument_named_reference: (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item) -> bot
|
|
34
|
+
|
|
35
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> void
|
|
36
|
+
def validate_parameter_call: (Frontend::AST::ParameterizedReference reference) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::AST::Rule rule) -> bool
|
|
39
|
+
def parameterized_rule?: (Frontend::AST::Rule rule) -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs (String name) -> bool
|
|
42
|
+
def parameter_template?: (String name) -> bool
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameters.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Iterative, hygienic specialization of validated parameterized user rules.
|
|
5
|
+
# rubocop:disable Metrics/ModuleLength -- parameter-frame transitions are kept together for auditability.
|
|
6
|
+
module NormalizeParameters
|
|
7
|
+
type parameter_operation = [ :item | :finish_item, Frontend::AST::item ] | [ :value, String ] | [ :finish_suffix, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus ] | [ :finish_separated, Frontend::AST::SeparatedList ] | [ :group_alternative, String, Frontend::AST::Group, Array[Frontend::AST::item] ] | [ :finish_group_alternative, String, Frontend::AST::Group, Integer ]
|
|
8
|
+
|
|
9
|
+
type parameter_frame = { reference: Frontend::AST::ParameterizedReference, arguments: Array[Frontend::AST::item], helper: String, bindings: Hash[String, Frontend::AST::item], rendered_arguments: Array[String], templates: Array[Frontend::AST::Rule], template_index: Integer, alternative_index: Integer, current: [ Frontend::AST::Rule, Frontend::AST::Rule, Frontend::AST::Alternative ]?, item_index: Integer, rhs: Array[String], named_refs: Array[IR::named_ref], operations: Array[parameter_operation], values: Array[String] }
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> String
|
|
14
|
+
def specialize_parameterized_reference: (Frontend::AST::ParameterizedReference reference) -> String
|
|
15
|
+
|
|
16
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> [String, bool]
|
|
17
|
+
def schedule_parameter_specialization: (Frontend::AST::ParameterizedReference reference) -> [ String, bool ]
|
|
18
|
+
|
|
19
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> void
|
|
20
|
+
def enforce_parameter_limits!: (Frontend::AST::ParameterizedReference reference) -> void
|
|
21
|
+
|
|
22
|
+
# A constructor-growing recursive call can create infinitely many distinct
|
|
23
|
+
# specializations. Calls whose arguments shrink or merely change are
|
|
24
|
+
# allowed; they may reach a memoized fixed point after finite expansion.
|
|
25
|
+
# @rbs (Array[Frontend::AST::item] candidates, Array[Frontend::AST::item] ancestors) -> bool
|
|
26
|
+
def growing_parameter_arguments?: (Array[Frontend::AST::item] candidates, Array[Frontend::AST::item] ancestors) -> bool
|
|
27
|
+
|
|
28
|
+
# @rbs (Frontend::AST::item candidate, String target) -> bool
|
|
29
|
+
def parameter_argument_contains?: (Frontend::AST::item candidate, String target) -> bool
|
|
30
|
+
|
|
31
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> String
|
|
32
|
+
def new_parameter_helper: (Frontend::AST::ParameterizedReference reference) -> String
|
|
33
|
+
|
|
34
|
+
# @rbs (Frontend::AST::ParameterizedReference reference, String helper,
|
|
35
|
+
# Array[Frontend::AST::item] arguments, Array[String] rendered_arguments) ->
|
|
36
|
+
# NormalizeParameters::parameter_frame
|
|
37
|
+
def parameter_frame: (Frontend::AST::ParameterizedReference reference, String helper, Array[Frontend::AST::item] arguments, Array[String] rendered_arguments) -> NormalizeParameters::parameter_frame
|
|
38
|
+
|
|
39
|
+
# @rbs () -> void
|
|
40
|
+
def drain_parameter_worklist: () -> void
|
|
41
|
+
|
|
42
|
+
# @rbs (NormalizeParameters::parameter_frame frame) -> bool
|
|
43
|
+
def prepare_parameter_alternative?: (NormalizeParameters::parameter_frame frame) -> bool
|
|
44
|
+
|
|
45
|
+
# @rbs (NormalizeParameters::parameter_frame frame, Frontend::AST::Rule template, Integer index) -> void
|
|
46
|
+
def prepare_parameter_alternative_entry: (NormalizeParameters::parameter_frame frame, Frontend::AST::Rule template, Integer index) -> void
|
|
47
|
+
|
|
48
|
+
# @rbs (NormalizeParameters::parameter_frame frame) -> void
|
|
49
|
+
def clear_parameter_alternative: (NormalizeParameters::parameter_frame frame) -> void
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parser_configuration.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Converts a root parser declaration into the explicit current Grammar IR contract.
|
|
5
|
+
module NormalizeParserConfiguration
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::ParserConfiguration declaration) -> void
|
|
9
|
+
def read_parser_configuration: (Frontend::AST::ParserConfiguration declaration) -> void
|
|
10
|
+
|
|
11
|
+
# @rbs () -> IR::ParserContract?
|
|
12
|
+
def normalized_parser_contract: () -> IR::ParserContract?
|
|
13
|
+
|
|
14
|
+
# @rbs (Frontend::AST::ParserSetting setting) -> Hash[Symbol, Object?]
|
|
15
|
+
def validated_parser_setting_definition: (Frontend::AST::ParserSetting setting) -> Hash[Symbol, Object?]
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::AST::ParserConfiguration declaration) -> void
|
|
18
|
+
def validate_isolated_entries: (Frontend::AST::ParserConfiguration declaration) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs (Frontend::AST::ParserSetting setting) -> Location
|
|
21
|
+
def parser_setting_location: (Frontend::AST::ParserSetting setting) -> Location
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/recovery_declarations.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Recovery declaration extraction and post-interning symbol validation.
|
|
5
|
+
module NormalizeRecoveryDeclarations
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Start | Frontend::AST::Recovery | Frontend::AST::OnErrorReduce |
|
|
9
|
+
# Frontend::AST::GrammarTest declaration) -> void
|
|
10
|
+
def read_parser_control_declaration: (Frontend::AST::Start | Frontend::AST::Recovery | Frontend::AST::OnErrorReduce | Frontend::AST::GrammarTest declaration) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (Frontend::AST::GrammarTest declaration) -> void
|
|
13
|
+
def read_grammar_test: (Frontend::AST::GrammarTest declaration) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs (Frontend::AST::Recovery declaration) -> void
|
|
16
|
+
def read_recovery_declaration: (Frontend::AST::Recovery declaration) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (Frontend::AST::OnErrorReduce declaration) -> void
|
|
19
|
+
def read_on_error_reduce_declaration: (Frontend::AST::OnErrorReduce declaration) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs () -> void
|
|
22
|
+
def validate_recovery_declarations: () -> void
|
|
23
|
+
end
|
|
24
|
+
end
|
data/sig/ibex/normalize.rbs
CHANGED
|
@@ -5,52 +5,147 @@ module Ibex
|
|
|
5
5
|
class Normalizer
|
|
6
6
|
include NormalizeDeclarations
|
|
7
7
|
|
|
8
|
+
include NormalizeParserConfiguration
|
|
9
|
+
|
|
10
|
+
include NormalizeGrammarBuilder
|
|
11
|
+
|
|
12
|
+
include NormalizeLexer
|
|
13
|
+
|
|
14
|
+
include NormalizeRecoveryDeclarations
|
|
15
|
+
|
|
16
|
+
include NormalizeParameterValidation
|
|
17
|
+
|
|
18
|
+
include NormalizeInlineValidation
|
|
19
|
+
|
|
20
|
+
include NormalizeParameterSubstitution
|
|
21
|
+
|
|
22
|
+
include NormalizeParameterEbnfLowering
|
|
23
|
+
|
|
24
|
+
include NormalizeParameterLowering
|
|
25
|
+
|
|
26
|
+
include NormalizeParameters
|
|
27
|
+
|
|
28
|
+
include NormalizeNamedReferences
|
|
29
|
+
|
|
30
|
+
include NormalizeNodes
|
|
31
|
+
|
|
8
32
|
include NormalizeExpander
|
|
9
33
|
|
|
34
|
+
include NormalizeInlineExpansion
|
|
35
|
+
|
|
10
36
|
include NormalizeDiagnostics
|
|
11
37
|
|
|
12
38
|
RESERVED_NAMES: Array[String]
|
|
13
39
|
|
|
14
|
-
|
|
40
|
+
RUBY_KEYWORDS: Array[String]
|
|
15
41
|
|
|
16
|
-
|
|
42
|
+
DEFAULT_MAX_PARAMETER_SPECIALIZATIONS: ::Integer
|
|
17
43
|
|
|
18
|
-
|
|
44
|
+
DEFAULT_MAX_INLINE_EXPANSIONS: ::Integer
|
|
19
45
|
|
|
20
|
-
@
|
|
46
|
+
@explicit_starts: Array[String]?
|
|
21
47
|
|
|
22
|
-
@
|
|
48
|
+
@parser_configuration: Frontend::AST::ParserConfiguration?
|
|
23
49
|
|
|
24
|
-
@
|
|
50
|
+
@lexer_declaration: Frontend::AST::Lexer?
|
|
25
51
|
|
|
26
|
-
@
|
|
52
|
+
@grammar_tests: Array[IR::grammar_test]
|
|
27
53
|
|
|
28
|
-
@
|
|
54
|
+
@on_error_reduce_groups: Array[Array[String]]
|
|
29
55
|
|
|
30
|
-
@
|
|
56
|
+
@recovery_sync_tokens: Array[String]
|
|
31
57
|
|
|
32
|
-
@
|
|
58
|
+
@value_printers: Hash[String, IR::value_printer]
|
|
33
59
|
|
|
34
|
-
@
|
|
60
|
+
@parser_parameters: Array[IR::parser_parameter]
|
|
61
|
+
|
|
62
|
+
@conversions: Hash[String, String]
|
|
63
|
+
|
|
64
|
+
@expected_rr_conflicts: Integer?
|
|
35
65
|
|
|
36
66
|
@expected_conflicts: Integer
|
|
37
67
|
|
|
38
|
-
@
|
|
68
|
+
@options: IR::grammar_options
|
|
39
69
|
|
|
40
|
-
@
|
|
70
|
+
@semantic_type_locations: Hash[String, IR::location]
|
|
41
71
|
|
|
42
|
-
@
|
|
72
|
+
@semantic_types: Hash[String, String]
|
|
73
|
+
|
|
74
|
+
@display_name_locations: Hash[String, IR::location]
|
|
75
|
+
|
|
76
|
+
@display_names: Hash[String, String]
|
|
77
|
+
|
|
78
|
+
@precedence_locations: Hash[String, IR::location]
|
|
79
|
+
|
|
80
|
+
@node_shapes: Hash[String, Array[String]]
|
|
81
|
+
|
|
82
|
+
@inline_expansion_count: Integer
|
|
83
|
+
|
|
84
|
+
@max_inline_expansions: Integer
|
|
85
|
+
|
|
86
|
+
@inline_rule_by_symbol: Hash[Integer, String]
|
|
87
|
+
|
|
88
|
+
@inline_symbol_ids: Set[Integer]
|
|
89
|
+
|
|
90
|
+
@inline_rule_names: Set[String]
|
|
91
|
+
|
|
92
|
+
@rule_documentation: Hash[String, String]
|
|
93
|
+
|
|
94
|
+
@current_parameter_expansion: IR::parameter_expansion?
|
|
95
|
+
|
|
96
|
+
@max_parameter_specializations: Integer
|
|
97
|
+
|
|
98
|
+
@parameter_worklist_active: bool
|
|
99
|
+
|
|
100
|
+
@parameter_worklist: Array[NormalizeParameters::parameter_frame]
|
|
101
|
+
|
|
102
|
+
@parameter_specializations: Hash[[ String, Array[String] ], String]
|
|
103
|
+
|
|
104
|
+
@parameter_formals: Hash[String, Array[String]]
|
|
105
|
+
|
|
106
|
+
@parameter_templates: Hash[String, Array[Frontend::AST::Rule]]
|
|
43
107
|
|
|
44
108
|
@start_location: Frontend::Location?
|
|
45
109
|
|
|
46
|
-
|
|
47
|
-
|
|
110
|
+
@start_name: String
|
|
111
|
+
|
|
112
|
+
@start_names: Array[String]
|
|
113
|
+
|
|
114
|
+
@precedence: Hash[String, IR::precedence]
|
|
115
|
+
|
|
116
|
+
@declared_tokens: Hash[String, IR::location]
|
|
117
|
+
|
|
118
|
+
@helper_sequence: Integer
|
|
119
|
+
|
|
120
|
+
@warnings: Array[IR::grammar_warning]
|
|
121
|
+
|
|
122
|
+
@productions: Array[IR::Production]
|
|
123
|
+
|
|
124
|
+
@symbols_by_name: Hash[String, IR::GrammarSymbol]
|
|
125
|
+
|
|
126
|
+
@symbols: Array[IR::GrammarSymbol]
|
|
127
|
+
|
|
128
|
+
@mode: IR::grammar_mode
|
|
129
|
+
|
|
130
|
+
@current_include_chain: Array[IR::source_provenance]
|
|
131
|
+
|
|
132
|
+
@resolution: Frontend::Resolution?
|
|
133
|
+
|
|
134
|
+
@ast: Frontend::AST::Root
|
|
135
|
+
|
|
136
|
+
# @rbs (Frontend::AST::Root | Frontend::AST::Fragment | Frontend::Resolution input,
|
|
137
|
+
# ?mode: Symbol | String, ?max_parameter_specializations: Integer,
|
|
138
|
+
# ?max_inline_expansions: Integer) -> void
|
|
139
|
+
def initialize: (Frontend::AST::Root | Frontend::AST::Fragment | Frontend::Resolution input, ?mode: Symbol | String, ?max_parameter_specializations: Integer, ?max_inline_expansions: Integer) -> void
|
|
48
140
|
|
|
49
141
|
# @rbs () -> IR::Grammar
|
|
50
142
|
def normalize: () -> IR::Grammar
|
|
51
143
|
|
|
52
144
|
private
|
|
53
145
|
|
|
146
|
+
# @rbs (Symbol name, Object value) -> void
|
|
147
|
+
def validate_positive_limit!: (Symbol name, Object value) -> void
|
|
148
|
+
|
|
54
149
|
# @rbs () -> void
|
|
55
150
|
def intern_reserved_symbols: () -> void
|
|
56
151
|
|
|
@@ -60,8 +155,21 @@ module Ibex
|
|
|
60
155
|
# @rbs () -> void
|
|
61
156
|
def intern_user_nonterminals: () -> void
|
|
62
157
|
|
|
63
|
-
# @rbs (
|
|
64
|
-
def
|
|
158
|
+
# @rbs () -> Array[String]
|
|
159
|
+
def normalized_start_names: () -> Array[String]
|
|
160
|
+
|
|
161
|
+
# @rbs (Frontend::AST::Rule rule) -> bool
|
|
162
|
+
def start_rule_candidate?: (Frontend::AST::Rule rule) -> bool
|
|
163
|
+
|
|
164
|
+
# @rbs (Frontend::AST::Rule rule) -> void
|
|
165
|
+
def intern_user_nonterminal: (Frontend::AST::Rule rule) -> void
|
|
166
|
+
|
|
167
|
+
# @rbs () -> Hash[String, String]
|
|
168
|
+
def validated_rule_documentation: () -> Hash[String, String]
|
|
169
|
+
|
|
170
|
+
# @rbs (String name, Symbol kind, ?reserved: bool, ?location: IR::location?,
|
|
171
|
+
# ?documentation: String?, ?metadata_name: String?) -> IR::GrammarSymbol
|
|
172
|
+
def intern: (String name, Symbol kind, ?reserved: bool, ?location: IR::location?, ?documentation: String?, ?metadata_name: String?) -> IR::GrammarSymbol
|
|
65
173
|
|
|
66
174
|
# @rbs (String name) -> IR::GrammarSymbol?
|
|
67
175
|
def symbol: (String name) -> IR::GrammarSymbol?
|
|
@@ -92,5 +200,8 @@ module Ibex
|
|
|
92
200
|
|
|
93
201
|
# @rbs (IR::location? location, String message) -> bot
|
|
94
202
|
def fail_hash: (IR::location? location, String message) -> bot
|
|
203
|
+
|
|
204
|
+
# @rbs () -> IR::production_expansion?
|
|
205
|
+
def resolved_expansion: () -> IR::production_expansion?
|
|
95
206
|
end
|
|
96
207
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Generated from lib/ibex/racc_migration/checker.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module RaccMigration
|
|
5
|
+
# Checks syntax, normalization, superclass, and runtime-coupling hazards.
|
|
6
|
+
# Semantic action code is treated as opaque data and never executed.
|
|
7
|
+
class Checker
|
|
8
|
+
RACC_REQUIRE: Regexp
|
|
9
|
+
|
|
10
|
+
RACC_CONSTANT: Regexp
|
|
11
|
+
|
|
12
|
+
# @rbs (String source, file: String) -> Report
|
|
13
|
+
def check: (String source, file: String) -> Report
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::Diagnostic diagnostic) -> Finding
|
|
18
|
+
def syntax_finding: (Frontend::Diagnostic diagnostic) -> Finding
|
|
19
|
+
|
|
20
|
+
# @rbs (Frontend::AST::Root ast) -> Array[Finding]
|
|
21
|
+
def superclass_findings: (Frontend::AST::Root ast) -> Array[Finding]
|
|
22
|
+
|
|
23
|
+
# @rbs (Frontend::AST::Root ast) -> Array[Finding]
|
|
24
|
+
def user_code_findings: (Frontend::AST::Root ast) -> Array[Finding]
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::Root ast) -> Array[Finding]
|
|
27
|
+
def normalization_findings: (Frontend::AST::Root ast) -> Array[Finding]
|
|
28
|
+
|
|
29
|
+
# @rbs (String message, Frontend::Location fallback) -> [Frontend::Location, String]
|
|
30
|
+
def error_location: (String message, Frontend::Location fallback) -> [ Frontend::Location, String ]
|
|
31
|
+
|
|
32
|
+
# @rbs (Array[Finding] findings) -> Array[Finding]
|
|
33
|
+
def sort_findings: (Array[Finding] findings) -> Array[Finding]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generated from lib/ibex/racc_migration/harness.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module RaccMigration
|
|
5
|
+
# Emits, but never executes, a subprocess-separated differential harness.
|
|
6
|
+
class Harness
|
|
7
|
+
CLASS_NAME: Regexp
|
|
8
|
+
|
|
9
|
+
# @rbs (String class_name) -> String
|
|
10
|
+
def self.generate: (String class_name) -> String
|
|
11
|
+
|
|
12
|
+
# @rbs () -> String
|
|
13
|
+
def self.template: () -> String
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Generated from lib/ibex/racc_migration/report.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module RaccMigration
|
|
5
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
6
|
+
|
|
7
|
+
# One immutable migration compatibility observation.
|
|
8
|
+
class Finding
|
|
9
|
+
SEVERITIES: Array[Symbol]
|
|
10
|
+
|
|
11
|
+
attr_reader code: String
|
|
12
|
+
|
|
13
|
+
attr_reader severity: Symbol
|
|
14
|
+
|
|
15
|
+
attr_reader message: String
|
|
16
|
+
|
|
17
|
+
attr_reader location: Frontend::Location?
|
|
18
|
+
|
|
19
|
+
attr_reader suggestion: String
|
|
20
|
+
|
|
21
|
+
# @rbs (code: String, severity: Symbol, message: String, location: Frontend::Location?,
|
|
22
|
+
# suggestion: String) -> void
|
|
23
|
+
def initialize: (code: String, severity: Symbol, message: String, location: Frontend::Location?, suggestion: String) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Hash[String, json_value]
|
|
26
|
+
def to_h: () -> Hash[String, json_value]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Versioned result of checking one grammar without executing its code.
|
|
30
|
+
class Report
|
|
31
|
+
SCHEMA_VERSION: Integer
|
|
32
|
+
|
|
33
|
+
attr_reader file: String
|
|
34
|
+
|
|
35
|
+
attr_reader class_name: String?
|
|
36
|
+
|
|
37
|
+
attr_reader findings: Array[Finding]
|
|
38
|
+
|
|
39
|
+
# @rbs (file: String, class_name: String?, findings: Array[Finding]) -> void
|
|
40
|
+
def initialize: (file: String, class_name: String?, findings: Array[Finding]) -> void
|
|
41
|
+
|
|
42
|
+
# @rbs () -> bool
|
|
43
|
+
def compatible?: () -> bool
|
|
44
|
+
|
|
45
|
+
# @rbs () -> Hash[String, json_value]
|
|
46
|
+
def to_h: () -> Hash[String, json_value]
|
|
47
|
+
|
|
48
|
+
# @rbs (*Object?) -> String
|
|
49
|
+
def to_json: (*Object?) -> String
|
|
50
|
+
|
|
51
|
+
# @rbs () -> String
|
|
52
|
+
def to_text: () -> String
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|