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,28 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/verify.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI entry point for bounded, independent Automaton IR verification.
|
|
5
|
+
module CLIVerify
|
|
6
|
+
type verify_options = { paths: Array[String], strict: bool, max_states: Integer, max_items: Integer, ?grammar: String, format: String, ?help: String }
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
11
|
+
def run_verify_command: (Array[String] arguments) -> Integer
|
|
12
|
+
|
|
13
|
+
# @rbs (Array[String] arguments) -> verify_options
|
|
14
|
+
def verify_options: (Array[String] arguments) -> verify_options
|
|
15
|
+
|
|
16
|
+
# @rbs (String path) -> IR::Automaton
|
|
17
|
+
def load_verify_automaton: (String path) -> IR::Automaton
|
|
18
|
+
|
|
19
|
+
# @rbs (IR::Automaton automaton, String path) -> void
|
|
20
|
+
def verify_supplied_grammar!: (IR::Automaton automaton, String path) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (Verify::Result result, String format) -> void
|
|
23
|
+
def write_verify_result: (Verify::Result result, String format) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (Integer value, String name) -> Integer
|
|
26
|
+
def positive_verify_budget: (Integer value, String name) -> Integer
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/watch.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Long-running CLI generation over stable source snapshots.
|
|
5
|
+
module CLIWatch
|
|
6
|
+
private def process_grammar: (String) -> Integer
|
|
7
|
+
|
|
8
|
+
private def generation_artifacts: () -> ArtifactSet
|
|
9
|
+
|
|
10
|
+
private def report_status: (String) -> void
|
|
11
|
+
|
|
12
|
+
# Rendered watch generation awaiting its stability-guarded publication.
|
|
13
|
+
class Build
|
|
14
|
+
attr_reader artifacts: ArtifactSet
|
|
15
|
+
|
|
16
|
+
attr_reader statuses: Array[String]
|
|
17
|
+
|
|
18
|
+
attr_reader source_paths: Array[String]
|
|
19
|
+
|
|
20
|
+
attr_reader attempted_paths: Array[String]
|
|
21
|
+
|
|
22
|
+
attr_reader source_records: Array[GenerationInput]
|
|
23
|
+
|
|
24
|
+
# rubocop:disable Layout/LineLength
|
|
25
|
+
# @rbs (artifacts: ArtifactSet, statuses: Array[String], source_paths: Array[String], attempted_paths: Array[String], source_records: Array[GenerationInput]) -> void
|
|
26
|
+
def initialize: (artifacts: ArtifactSet, statuses: Array[String], source_paths: Array[String], attempted_paths: Array[String], source_records: Array[GenerationInput]) -> void
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
# @rbs (String path) -> Integer
|
|
32
|
+
def run_watch: (String path) -> Integer
|
|
33
|
+
|
|
34
|
+
# @rbs (String path) -> Build
|
|
35
|
+
def prepare_watch_generation: (String path) -> Build
|
|
36
|
+
|
|
37
|
+
# @rbs (Watch::_BuildResult build, Watch::SourceSnapshot snapshot, ^() -> bool continue) -> void
|
|
38
|
+
def publish_watch_generation: (Watch::_BuildResult build, Watch::SourceSnapshot snapshot, ^() -> bool continue) -> void
|
|
39
|
+
|
|
40
|
+
# @rbs (String path) -> Array[String]
|
|
41
|
+
def watch_failure_paths: (String path) -> Array[String]
|
|
42
|
+
end
|
|
43
|
+
end
|
data/sig/ibex/cli.rbs
CHANGED
|
@@ -1,62 +1,188 @@
|
|
|
1
1
|
# Generated from lib/ibex/cli.rb with RBS::Inline
|
|
2
2
|
|
|
3
3
|
module Ibex
|
|
4
|
+
CLI_FEATURE_ROOT: String
|
|
5
|
+
|
|
4
6
|
interface _CLIOutput
|
|
5
|
-
def puts: (*
|
|
7
|
+
def puts: (*Object?) -> Object?
|
|
6
8
|
|
|
7
|
-
def write: (String) ->
|
|
9
|
+
def write: (String) -> Object?
|
|
8
10
|
end
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
interface _CLIInput
|
|
13
|
+
def read: () -> String
|
|
14
|
+
|
|
15
|
+
def gets: () -> String?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
type cli_options = { emit: String, mode: Symbol, table: Symbol, ?cst_trivia: Symbol, line_convert: bool, ?line_convert_all: bool, counterexample_max_tokens: Integer, counterexample_max_configurations: Integer, ?from: String, ?algorithm: Symbol, ?suggest_ielr: bool, ?entry_isolation: bool, ?ielr_strategy: Symbol, ?ielr_report: bool, ?remove_unreachable: bool, ?warnings: Array[Symbol], ?output: String, ?embedded: bool, ?debug: bool, ?verbose: bool, ?rbs: String | true, ?action_source: String | true, ?manifest: String | true, ?watch: bool, ?dot: String, ?mermaid: String, ?html: String, ?railroad: String, ?messages: String, ?messages_update: String | true, ?messages_algorithm_explicit: bool, ?sample_count: Integer, ?sample_seed: Integer, ?sample_max_tokens: Integer, ?sample_max_depth: Integer, ?sample_max_expansions: Integer, ?log_file: String, ?executable: String, ?frozen: bool, ?omit_actions: bool, ?superclass: String, ?verify_output: bool, ?check_only: bool, ?status: bool, ?profile: bool, ?debug_flags: String, ?version: bool, ?runtime_version: bool, ?copyright: bool, ?help: bool, ?explain_state: Integer, ?explain_token: String, ?explain_format: String, ?check_ambiguity: bool, ?check_format: String, ?fuzz_seed: Integer, ?fuzz_count: Integer, ?fuzz_max_tokens: Integer, ?fuzz_max_depth: Integer, ?fuzz_max_expansions: Integer, ?fuzz_max_actions: Integer, ?fuzz_max_stack: Integer, ?fuzz_coverage_guided: bool, ?fuzz_path_length: Integer, ?fuzz_against: String, ?fuzz_against_runtime: String, ?fuzz_against_timeout: Integer, ?fuzz_against_max_output: Integer, ?fuzz_max_reduction_trials: Integer, ?fuzz_regression_dir: String, ?fuzz_save_regression: bool, ?fuzz_format: String, ?reduce_command: String, ?reduce_mode: Symbol, ?reduce_max_trials: Integer, ?reduce_timeout: Integer, ?reduce_max_output_bytes: Integer, ?reduce_max_input_bytes: Integer, ?reduce_format: String }
|
|
11
19
|
|
|
12
20
|
# Command-line pipeline coordinator.
|
|
13
21
|
# rubocop:disable Metrics/ClassLength -- inline type contracts add lines without adding runtime responsibilities.
|
|
14
22
|
class CLI
|
|
23
|
+
SUBCOMMAND_HANDLERS: Hash[String, [ Symbol, Symbol ]]
|
|
24
|
+
|
|
15
25
|
include CLICounterexampleOptions
|
|
16
26
|
|
|
27
|
+
include CLIGenerationErrorMessages
|
|
28
|
+
|
|
29
|
+
include CLIGenerationArtifacts
|
|
30
|
+
|
|
17
31
|
include CLIOutputs
|
|
18
32
|
|
|
19
|
-
@
|
|
33
|
+
@stdout: _CLIOutput
|
|
20
34
|
|
|
21
35
|
@stderr: _CLIOutput
|
|
22
36
|
|
|
23
|
-
@
|
|
37
|
+
@options: cli_options
|
|
38
|
+
|
|
39
|
+
@language: String
|
|
40
|
+
|
|
41
|
+
@configuration_explicit_options: Hash[Symbol, bool]
|
|
24
42
|
|
|
25
|
-
|
|
26
|
-
def self.start: (Array[String] arguments, ?stdout: _CLIOutput, ?stderr: _CLIOutput) -> Integer
|
|
43
|
+
@generation_grammar: IR::Grammar?
|
|
27
44
|
|
|
28
|
-
|
|
29
|
-
|
|
45
|
+
@generation_automaton: IR::Automaton?
|
|
46
|
+
|
|
47
|
+
# rubocop:disable Layout/LineLength
|
|
48
|
+
# @rbs (Array[String] arguments, ?stdin: _CLIInput, ?stdout: _CLIOutput, ?stderr: _CLIOutput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> Integer
|
|
49
|
+
def self.start: (Array[String] arguments, ?stdin: _CLIInput, ?stdout: _CLIOutput, ?stderr: _CLIOutput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> Integer
|
|
50
|
+
|
|
51
|
+
# @rbs (?stdin: _CLIInput, stdout: _CLIOutput, stderr: _CLIOutput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> void
|
|
52
|
+
def initialize: (stdout: _CLIOutput, stderr: _CLIOutput, ?stdin: _CLIInput, ?watch_clock: (^() -> Float)?, ?watch_sleeper: (^(Float) -> void)?, ?watch_iteration_hook: (^(Symbol, Integer, Array[String]) -> (Integer | Symbol | nil))?) -> void
|
|
30
53
|
|
|
31
54
|
# @rbs (Array[String] arguments) -> Integer
|
|
32
55
|
def run: (Array[String] arguments) -> Integer
|
|
33
56
|
|
|
34
57
|
private
|
|
35
58
|
|
|
59
|
+
# @rbs (Symbol name) -> void
|
|
60
|
+
def mark_configuration_option: (Symbol name) -> void
|
|
61
|
+
|
|
62
|
+
# OptionParser accepts a heterogeneous set of operation and configuration
|
|
63
|
+
# values. The CLIAdapter is the validation boundary for this dynamic map.
|
|
64
|
+
# @rbs (Symbol name, untyped value) -> void
|
|
65
|
+
def set_configuration_option: (Symbol name, untyped value) -> void
|
|
66
|
+
|
|
67
|
+
# @rbs (String value) -> void
|
|
68
|
+
def select_configuration_mode: (String value) -> void
|
|
69
|
+
|
|
70
|
+
# @rbs () -> Configuration::Resolver
|
|
71
|
+
def effective_configuration: () -> Configuration::Resolver
|
|
72
|
+
|
|
73
|
+
# Resolve a command-local legacy option hash without promoting it into the
|
|
74
|
+
# reusable CLI instance's generation settings.
|
|
75
|
+
# @rbs (Hash[Symbol, untyped] options, explicit_keys: Array[Symbol]) -> Configuration::Resolver
|
|
76
|
+
def resolve_configuration_options: (Hash[Symbol, untyped] options, explicit_keys: Array[Symbol]) -> Configuration::Resolver
|
|
77
|
+
|
|
78
|
+
# @rbs (Hash[Symbol, untyped] options, String name) -> untyped
|
|
79
|
+
def local_configuration_value: (Hash[Symbol, untyped] options, String name) -> untyped
|
|
80
|
+
|
|
81
|
+
# @rbs (Hash[Symbol, untyped] options, Symbol name, untyped value) -> void
|
|
82
|
+
def set_local_configuration_option: (Hash[Symbol, untyped] options, Symbol name, untyped value) -> void
|
|
83
|
+
|
|
84
|
+
# Configuration values have already been validated by Configuration::Resolver;
|
|
85
|
+
# callers narrow the value according to the option they are consuming.
|
|
86
|
+
# @rbs (String name) -> untyped
|
|
87
|
+
def configuration_value: (String name) -> untyped
|
|
88
|
+
|
|
89
|
+
# @rbs (Array[String] arguments) -> Array[String]
|
|
90
|
+
def extract_language: (Array[String] arguments) -> Array[String]
|
|
91
|
+
|
|
92
|
+
# @rbs (Array[String] arguments) -> Integer?
|
|
93
|
+
def dispatch_subcommand: (Array[String] arguments) -> Integer?
|
|
94
|
+
|
|
95
|
+
# @rbs (Symbol feature) -> void
|
|
96
|
+
def activate_cli_feature: (Symbol feature) -> void
|
|
97
|
+
|
|
98
|
+
# @rbs (String path) -> Integer
|
|
99
|
+
def run_watch_feature: (String path) -> Integer
|
|
100
|
+
|
|
36
101
|
# @rbs () -> OptionParser
|
|
37
102
|
def option_parser: () -> OptionParser
|
|
38
103
|
|
|
39
104
|
# @rbs (OptionParser options) -> void
|
|
105
|
+
def add_subcommand_help: (OptionParser options) -> void
|
|
106
|
+
|
|
107
|
+
# @rbs (OptionParser options) -> void
|
|
108
|
+
# rubocop:disable Metrics/MethodLength -- pipeline flags share one parser boundary.
|
|
40
109
|
def add_pipeline_options: (OptionParser options) -> void
|
|
41
110
|
|
|
42
111
|
# @rbs (OptionParser options) -> void
|
|
43
112
|
def add_output_options: (OptionParser options) -> void
|
|
44
113
|
|
|
114
|
+
# @rbs (OptionParser options) -> void
|
|
115
|
+
def add_signature_output_options: (OptionParser options) -> void
|
|
116
|
+
|
|
45
117
|
# @rbs (OptionParser options) -> void
|
|
46
118
|
def add_compatibility_options: (OptionParser options) -> void
|
|
47
119
|
|
|
48
120
|
# @rbs (OptionParser options) -> void
|
|
49
121
|
def add_information_options: (OptionParser options) -> void
|
|
50
122
|
|
|
123
|
+
@analysis_configuration: Configuration::Resolver?
|
|
124
|
+
|
|
125
|
+
# @rbs (IR::Grammar grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
126
|
+
def activate_analysis_grammar: (IR::Grammar grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
127
|
+
|
|
128
|
+
# @rbs (IR::Grammar grammar, Hash[Symbol, untyped] options, Array[Symbol] explicit_keys) ->
|
|
129
|
+
# [IR::Grammar, Symbol, IR::Automaton]
|
|
130
|
+
def construct_analysis_automaton: (IR::Grammar grammar, Hash[Symbol, untyped] options, Array[Symbol] explicit_keys) -> [ IR::Grammar, Symbol, IR::Automaton ]
|
|
131
|
+
|
|
51
132
|
# @rbs (OptionParser parser) -> Integer?
|
|
52
133
|
def informational_result: (OptionParser parser) -> Integer?
|
|
53
134
|
|
|
54
135
|
# @rbs (Array[String] remaining) -> String
|
|
55
136
|
def input_path: (Array[String] remaining) -> String
|
|
56
137
|
|
|
138
|
+
# @rbs () -> void
|
|
139
|
+
def validate_generation_options: () -> void
|
|
140
|
+
|
|
141
|
+
# @rbs () -> void
|
|
142
|
+
def validate_automaton_construction_options: () -> void
|
|
143
|
+
|
|
144
|
+
# @rbs () -> void
|
|
145
|
+
def validate_manifest_generation_options: () -> void
|
|
146
|
+
|
|
147
|
+
# @rbs () -> void
|
|
148
|
+
def validate_action_source_generation_options: () -> void
|
|
149
|
+
|
|
150
|
+
# @rbs () -> void
|
|
151
|
+
def validate_verification_generation_options: () -> void
|
|
152
|
+
|
|
153
|
+
# @rbs () -> void
|
|
154
|
+
def validate_watch_information_options: () -> void
|
|
155
|
+
|
|
156
|
+
# @rbs () -> void
|
|
157
|
+
def validate_watch_generation_options: () -> void
|
|
158
|
+
|
|
159
|
+
# @rbs (String input_path, ?source_paths: Array[String]) -> void
|
|
160
|
+
def validate_generation_paths!: (String input_path, ?source_paths: Array[String]) -> void
|
|
161
|
+
|
|
162
|
+
# @rbs (String left, String right) -> bool
|
|
163
|
+
def same_file_target?: (String left, String right) -> bool
|
|
164
|
+
|
|
165
|
+
# @rbs (String path) -> [String, String]
|
|
166
|
+
def portable_target_key: (String path) -> [ String, String ]
|
|
167
|
+
|
|
168
|
+
# @rbs (String path, ?Hash[String, bool] seen) -> String
|
|
169
|
+
def canonical_target_path: (String path, ?Hash[String, bool] seen) -> String
|
|
170
|
+
|
|
171
|
+
# @rbs (String input_path) -> Hash[Symbol, String?]
|
|
172
|
+
def generation_paths: (String input_path) -> Hash[Symbol, String?]
|
|
173
|
+
|
|
57
174
|
# @rbs (String path) -> Integer
|
|
58
175
|
def process_grammar: (String path) -> Integer
|
|
59
176
|
|
|
177
|
+
# @rbs (String path) -> Frontend::Resolution
|
|
178
|
+
def resolve_grammar_path: (String path) -> Frontend::Resolution
|
|
179
|
+
|
|
180
|
+
# @rbs (String path) -> IR::Grammar
|
|
181
|
+
def normalize_grammar_path: (String path) -> IR::Grammar
|
|
182
|
+
|
|
183
|
+
# @rbs (String source) -> bool
|
|
184
|
+
def bison_source?: (String source) -> bool
|
|
185
|
+
|
|
60
186
|
# @rbs (String path) -> Integer
|
|
61
187
|
def process_ir: (String path) -> Integer
|
|
62
188
|
|
|
@@ -66,6 +192,15 @@ module Ibex
|
|
|
66
192
|
# @rbs (IR::Automaton automaton, String path) -> Integer
|
|
67
193
|
def dispatch_automaton: (IR::Automaton automaton, String path) -> Integer
|
|
68
194
|
|
|
195
|
+
# @rbs (IR::Grammar grammar) -> void
|
|
196
|
+
def activate_generation_grammar: (IR::Grammar grammar) -> void
|
|
197
|
+
|
|
198
|
+
# @rbs (IR::Grammar grammar, Configuration::Resolver configuration) -> IR::Grammar
|
|
199
|
+
def noncanonical_analysis_grammar: (IR::Grammar grammar, Configuration::Resolver configuration) -> IR::Grammar
|
|
200
|
+
|
|
201
|
+
# @rbs (Configuration::Resolver configuration) -> void
|
|
202
|
+
def report_noncanonical_analysis: (Configuration::Resolver configuration) -> void
|
|
203
|
+
|
|
69
204
|
# @rbs () -> Integer
|
|
70
205
|
def print_version: () -> Integer
|
|
71
206
|
|
|
@@ -81,6 +216,12 @@ module Ibex
|
|
|
81
216
|
# @rbs (IR::Grammar grammar) -> Integer
|
|
82
217
|
def emit_grammar: (IR::Grammar grammar) -> Integer
|
|
83
218
|
|
|
219
|
+
# @rbs (IR::Grammar grammar) -> Integer
|
|
220
|
+
def emit_lexer: (IR::Grammar grammar) -> Integer
|
|
221
|
+
|
|
222
|
+
# @rbs (IR::Grammar grammar) -> Integer
|
|
223
|
+
def emit_sets: (IR::Grammar grammar) -> Integer
|
|
224
|
+
|
|
84
225
|
# @rbs (IR::Grammar grammar, String input_path) -> Integer
|
|
85
226
|
def emit_automaton: (IR::Grammar grammar, String input_path) -> Integer
|
|
86
227
|
|
|
@@ -90,19 +231,51 @@ module Ibex
|
|
|
90
231
|
# @rbs (IR::Automaton automaton, String input_path) -> Integer
|
|
91
232
|
def generate_ruby: (IR::Automaton automaton, String input_path) -> Integer
|
|
92
233
|
|
|
234
|
+
# @rbs (IR::Automaton automaton, String output_path, String source, String? action_source) -> Integer
|
|
235
|
+
def verify_generated_outputs: (IR::Automaton automaton, String output_path, String source, String? action_source) -> Integer
|
|
236
|
+
|
|
237
|
+
# @rbs (String path, String source, String label) -> void
|
|
238
|
+
def verify_file: (String path, String source, String label) -> void
|
|
239
|
+
|
|
93
240
|
# @rbs (IR::Automaton automaton, String output_path) -> void
|
|
94
241
|
def write_rbs: (IR::Automaton automaton, String output_path) -> void
|
|
95
242
|
|
|
243
|
+
# @rbs (String output_path) -> String
|
|
244
|
+
def rbs_output_path: (String output_path) -> String
|
|
245
|
+
|
|
246
|
+
# @rbs (IR::Automaton automaton) -> String
|
|
247
|
+
def rbs_source: (IR::Automaton automaton) -> String
|
|
248
|
+
|
|
249
|
+
# @rbs (String output_path, String source) -> void
|
|
250
|
+
def write_action_source: (String output_path, String source) -> void
|
|
251
|
+
|
|
252
|
+
# @rbs (String output_path) -> String
|
|
253
|
+
def action_source_output_path: (String output_path) -> String
|
|
254
|
+
|
|
255
|
+
# @rbs (IR::Automaton automaton) -> String
|
|
256
|
+
def action_source_source: (IR::Automaton automaton) -> String
|
|
257
|
+
|
|
96
258
|
# @rbs (IR::Automaton automaton, String input_path) -> Integer
|
|
97
259
|
def emit_loaded_automaton: (IR::Automaton automaton, String input_path) -> Integer
|
|
98
260
|
|
|
99
261
|
# @rbs (IR::Grammar grammar, String input_path) -> IR::Automaton
|
|
100
262
|
def build_automaton: (IR::Grammar grammar, String input_path) -> IR::Automaton
|
|
101
263
|
|
|
264
|
+
# @rbs (IR::Grammar grammar, IR::Automaton automaton) -> void
|
|
265
|
+
def write_ielr_report: (IR::Grammar grammar, IR::Automaton automaton) -> void
|
|
266
|
+
|
|
102
267
|
# @rbs (IR::Automaton automaton, String input_path) -> void
|
|
103
268
|
def prepare_loaded_automaton: (IR::Automaton automaton, String input_path) -> void
|
|
104
269
|
|
|
105
270
|
# @rbs (IR::Automaton automaton) -> void
|
|
106
271
|
def write_visualizations: (IR::Automaton automaton) -> void
|
|
272
|
+
|
|
273
|
+
# @rbs (IR::Grammar grammar) -> void
|
|
274
|
+
def write_railroad: (IR::Grammar grammar) -> void
|
|
275
|
+
|
|
276
|
+
# @rbs (String output_path) -> String
|
|
277
|
+
def manifest_output_path_for: (String output_path) -> String
|
|
107
278
|
end
|
|
279
|
+
|
|
280
|
+
CONFIG_SUBCOMMAND_HELP: String
|
|
108
281
|
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/action_locations.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Rewrites semantic-location expressions without touching Ruby literals,
|
|
6
|
+
# comments, heredoc bodies, or ordinary instance/class variables.
|
|
7
|
+
class ActionLocations
|
|
8
|
+
SEMANTIC_HELPERS: Array[String]
|
|
9
|
+
|
|
10
|
+
@source: String
|
|
11
|
+
|
|
12
|
+
@maximum: Integer
|
|
13
|
+
|
|
14
|
+
@location: IR::location
|
|
15
|
+
|
|
16
|
+
# @rbs (String source, maximum: Integer, location: IR::location) -> void
|
|
17
|
+
def initialize: (String source, maximum: Integer, location: IR::location) -> void
|
|
18
|
+
|
|
19
|
+
# @rbs () -> String
|
|
20
|
+
def rewrite: () -> String
|
|
21
|
+
|
|
22
|
+
# @rbs () -> bool
|
|
23
|
+
def references?: () -> bool
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
# @rbs () -> String
|
|
28
|
+
def mutable_binary_source_copy: () -> String
|
|
29
|
+
|
|
30
|
+
# @rbs () -> Array[[Integer, String]]
|
|
31
|
+
def semantic_references: () -> Array[[ Integer, String ]]
|
|
32
|
+
|
|
33
|
+
# Give every Ripper implementation syntactically valid input while
|
|
34
|
+
# preserving byte offsets and lexical string/comment boundaries.
|
|
35
|
+
# @rbs () -> String
|
|
36
|
+
def lexable_source: () -> String
|
|
37
|
+
|
|
38
|
+
# @rbs () -> Array[Integer]
|
|
39
|
+
def line_offsets: () -> Array[Integer]
|
|
40
|
+
|
|
41
|
+
# @rbs (String spelling) -> String
|
|
42
|
+
def replacement_for: (String spelling) -> String
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/action_method_source.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Builds semantic method source shared by runtime and static shadow output.
|
|
6
|
+
class ActionMethodSource
|
|
7
|
+
@generated_action_abi: GeneratedActionABI::Cache
|
|
8
|
+
|
|
9
|
+
@grammar: IR::Grammar
|
|
10
|
+
|
|
11
|
+
# @rbs (IR::Grammar grammar, ?generated_action_abi: GeneratedActionABI::Cache?) -> void
|
|
12
|
+
def initialize: (IR::Grammar grammar, ?generated_action_abi: GeneratedActionABI::Cache?) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (IR::Production production, IR::action_composition_step step, Integer index) -> String
|
|
15
|
+
def composed_fragment_method_source: (IR::Production production, IR::action_composition_step step, Integer index) -> String
|
|
16
|
+
|
|
17
|
+
# @rbs (IR::Production production, Integer index) -> String
|
|
18
|
+
def composed_fragment_name: (IR::Production production, Integer index) -> String
|
|
19
|
+
|
|
20
|
+
# @rbs (IR::Production production) -> String
|
|
21
|
+
def compiled_action_method_source: (IR::Production production) -> String
|
|
22
|
+
|
|
23
|
+
# @rbs (IR::Production production) -> String
|
|
24
|
+
def direct_action_method_source: (IR::Production production) -> String
|
|
25
|
+
|
|
26
|
+
# @rbs (Integer symbol_id, IR::value_printer printer) -> String
|
|
27
|
+
def value_printer_method_source: (Integer symbol_id, IR::value_printer printer) -> String
|
|
28
|
+
|
|
29
|
+
# @rbs (String source) -> bool
|
|
30
|
+
def column_sensitive?: (String source) -> bool
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
# @rbs (IR::Production production) -> String
|
|
35
|
+
def action_parameters: (IR::Production production) -> String
|
|
36
|
+
|
|
37
|
+
# @rbs (IR::Production production, Integer index) -> String
|
|
38
|
+
def value_expression: (IR::Production production, Integer index) -> String
|
|
39
|
+
|
|
40
|
+
# @rbs (String source, ?production: IR::Production?) -> void
|
|
41
|
+
def append_parameter_values: (String source, ?production: IR::Production?) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (Array[String] lines, production: IR::Production) -> void
|
|
44
|
+
def append_direct_parameter_values: (Array[String] lines, production: IR::Production) -> void
|
|
45
|
+
|
|
46
|
+
# @rbs (IR::action_composition_step step) -> String
|
|
47
|
+
def composed_semantic_code: (IR::action_composition_step step) -> String
|
|
48
|
+
|
|
49
|
+
# @rbs (String source, Array[IR::named_ref] named_refs) -> void
|
|
50
|
+
def append_named_values: (String source, Array[IR::named_ref] named_refs) -> void
|
|
51
|
+
|
|
52
|
+
# @rbs (String source, IR::Production production, IR::Action action) -> void
|
|
53
|
+
def append_action_body: (String source, IR::Production production, IR::Action action) -> void
|
|
54
|
+
|
|
55
|
+
# @rbs (Array[String] lines, IR::Production production, IR::Action? action) -> void
|
|
56
|
+
def append_direct_action_body: (Array[String] lines, IR::Production production, IR::Action? action) -> void
|
|
57
|
+
|
|
58
|
+
# @rbs (IR::Production production, IR::Action action) -> String
|
|
59
|
+
def semantic_action_code: (IR::Production production, IR::Action action) -> String
|
|
60
|
+
|
|
61
|
+
# @rbs (IR::Production production) -> String
|
|
62
|
+
def default_value_expression: (IR::Production production) -> String
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/action_source.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Generates static-check-only Ruby containing semantic action methods.
|
|
6
|
+
class ActionSource
|
|
7
|
+
include RubyAST
|
|
8
|
+
|
|
9
|
+
@automaton: IR::Automaton
|
|
10
|
+
|
|
11
|
+
@grammar: IR::Grammar
|
|
12
|
+
|
|
13
|
+
@omit_action_call: bool
|
|
14
|
+
|
|
15
|
+
@method_source: ActionMethodSource
|
|
16
|
+
|
|
17
|
+
# @rbs (IR::Automaton automaton, ?omit_action_call: bool?) -> void
|
|
18
|
+
def initialize: (IR::Automaton automaton, ?omit_action_call: bool?) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs () -> String
|
|
21
|
+
def generate: () -> String
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
# @rbs (Array[String] lines) -> void
|
|
26
|
+
def append_value_printers: (Array[String] lines) -> void
|
|
27
|
+
|
|
28
|
+
# @rbs (Array[String] lines) -> void
|
|
29
|
+
def append_actions: (Array[String] lines) -> void
|
|
30
|
+
|
|
31
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
32
|
+
def append_composed_actions: (Array[String] lines, IR::Production production) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
35
|
+
def append_action: (Array[String] lines, IR::Production production) -> void
|
|
36
|
+
|
|
37
|
+
# @rbs (Array[String] lines, IR::location location, String source) -> void
|
|
38
|
+
def append_method: (Array[String] lines, IR::location location, String source) -> void
|
|
39
|
+
|
|
40
|
+
# @rbs (IR::Production production) -> bool
|
|
41
|
+
def composed_action?: (IR::Production production) -> bool
|
|
42
|
+
|
|
43
|
+
# @rbs () -> [Array[String], String]
|
|
44
|
+
def class_parts: () -> [ Array[String], String ]
|
|
45
|
+
|
|
46
|
+
# @rbs () -> String
|
|
47
|
+
def grammar_digest_comment: () -> String
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ambiguity.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
type ambiguity_search = { max_tokens: Integer, max_configurations: Integer }
|
|
6
|
+
|
|
7
|
+
type ambiguity_summary = { conflicts: Integer, ambiguous: Integer, not_found: Integer, configuration_budget_exhausted: Integer }
|
|
8
|
+
|
|
9
|
+
type ambiguity_check = { state: Integer, type: String, token: String, result: String, sentence: Array[String], lookahead_index: Integer?, interpretations: Array[IR::interpretation], explored_configurations: Integer, configuration_budget_exhausted: bool }
|
|
10
|
+
|
|
11
|
+
type ambiguity_document = { ibex_check: String, schema_version: Integer, algorithm: String, search: ambiguity_search, status: String, summary: ambiguity_summary, conflicts: Array[ambiguity_check] }
|
|
12
|
+
|
|
13
|
+
# Renders a bounded ambiguity search over every parser conflict.
|
|
14
|
+
class Ambiguity
|
|
15
|
+
SCHEMA_VERSION: Integer
|
|
16
|
+
|
|
17
|
+
@checks: Array[ambiguity_check]
|
|
18
|
+
|
|
19
|
+
@max_configurations: Integer
|
|
20
|
+
|
|
21
|
+
@max_tokens: Integer
|
|
22
|
+
|
|
23
|
+
@grammar: IR::Grammar
|
|
24
|
+
|
|
25
|
+
@automaton: IR::Automaton
|
|
26
|
+
|
|
27
|
+
# @rbs (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> void
|
|
28
|
+
def initialize: (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> void
|
|
29
|
+
|
|
30
|
+
# @rbs () -> Integer
|
|
31
|
+
def exit_status: () -> Integer
|
|
32
|
+
|
|
33
|
+
# @rbs () -> ambiguity_document
|
|
34
|
+
def to_h: () -> ambiguity_document
|
|
35
|
+
|
|
36
|
+
# @rbs () -> String
|
|
37
|
+
def render_text: () -> String
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
# @rbs () -> String
|
|
42
|
+
def status: () -> String
|
|
43
|
+
|
|
44
|
+
# @rbs () -> ambiguity_summary
|
|
45
|
+
def summary: () -> ambiguity_summary
|
|
46
|
+
|
|
47
|
+
# @rbs () -> Array[ambiguity_check]
|
|
48
|
+
def check_conflicts: () -> Array[ambiguity_check]
|
|
49
|
+
|
|
50
|
+
# @rbs (IR::AutomatonState state, IR::conflict conflict) -> ambiguity_check
|
|
51
|
+
def check_conflict: (IR::AutomatonState state, IR::conflict conflict) -> ambiguity_check
|
|
52
|
+
|
|
53
|
+
# @rbs (Array[Integer] ids) -> Array[String]
|
|
54
|
+
def symbol_names: (Array[Integer] ids) -> Array[String]
|
|
55
|
+
|
|
56
|
+
# @rbs (Array[String] lines, ambiguity_check check, Integer number) -> void
|
|
57
|
+
def append_check: (Array[String] lines, ambiguity_check check, Integer number) -> void
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/cst_metadata.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Builds the deterministic kind space embedded in CST-aware parser tables.
|
|
6
|
+
class CSTMetadata
|
|
7
|
+
type kind_map = Hash[String, Integer]
|
|
8
|
+
|
|
9
|
+
type kinds = { names: Array[String], terminal_range: Array[Integer], nonterminal_range: Array[Integer], named: kind_map, named_nonterminals: Hash[Integer, Integer], trivia: kind_map, synthetic: kind_map }
|
|
10
|
+
|
|
11
|
+
type field_slot = Integer | { index: Integer, extraction: Symbol }
|
|
12
|
+
|
|
13
|
+
type slot = { node_kind: Integer, node_name: String, fields: Hash[String, field_slot] }
|
|
14
|
+
|
|
15
|
+
type metadata = { version: Integer, trivia_policy: Symbol, kinds: kinds, slots: Hash[Integer, slot] }
|
|
16
|
+
|
|
17
|
+
TRIVIA_KINDS: Array[String]
|
|
18
|
+
|
|
19
|
+
SYNTHETIC_KINDS: Array[String]
|
|
20
|
+
|
|
21
|
+
@grammar: IR::Grammar
|
|
22
|
+
|
|
23
|
+
@trivia_policy: Symbol
|
|
24
|
+
|
|
25
|
+
# @rbs (IR::Grammar grammar, ?trivia_policy: Symbol | String) -> void
|
|
26
|
+
def initialize: (IR::Grammar grammar, ?trivia_policy: Symbol | String) -> void
|
|
27
|
+
|
|
28
|
+
# Return table-ready CST metadata with stable insertion order.
|
|
29
|
+
# @rbs () -> metadata
|
|
30
|
+
def build: () -> metadata
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
# @rbs (Symbol | String policy) -> Symbol
|
|
35
|
+
def normalize_trivia_policy: (Symbol | String policy) -> Symbol
|
|
36
|
+
|
|
37
|
+
# @rbs (Array[String] names) -> Hash[String, Integer]
|
|
38
|
+
def append_named_kinds: (Array[String] names) -> Hash[String, Integer]
|
|
39
|
+
|
|
40
|
+
# @rbs (Array[String] names, Array[String] additions) -> Hash[String, Integer]
|
|
41
|
+
def append_kinds: (Array[String] names, Array[String] additions) -> Hash[String, Integer]
|
|
42
|
+
|
|
43
|
+
# @rbs (Array[Integer] ids) -> Array[Integer]
|
|
44
|
+
def half_open_range: (Array[Integer] ids) -> Array[Integer]
|
|
45
|
+
|
|
46
|
+
# @rbs (Hash[String, Integer] named) -> Hash[Integer, Integer]
|
|
47
|
+
def named_nonterminals: (Hash[String, Integer] named) -> Hash[Integer, Integer]
|
|
48
|
+
|
|
49
|
+
# @rbs (Hash[String, Integer] named) -> Hash[Integer, slot]
|
|
50
|
+
def slot_metadata: (Hash[String, Integer] named) -> Hash[Integer, slot]
|
|
51
|
+
|
|
52
|
+
# @rbs (Integer index, Integer symbol_id) -> field_slot
|
|
53
|
+
def field_slot: (Integer index, Integer symbol_id) -> field_slot
|
|
54
|
+
|
|
55
|
+
# @rbs (Integer symbol_id) -> Symbol?
|
|
56
|
+
def repetition_extraction: (Integer symbol_id) -> Symbol?
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|