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/generation_input.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Digest and identity of source bytes actually consumed by one generation.
|
|
5
|
+
class GenerationInput
|
|
6
|
+
attr_reader path: String
|
|
7
|
+
|
|
8
|
+
attr_reader sha256: String
|
|
9
|
+
|
|
10
|
+
attr_reader bytesize: Integer
|
|
11
|
+
|
|
12
|
+
attr_reader dev: Integer
|
|
13
|
+
|
|
14
|
+
attr_reader ino: Integer
|
|
15
|
+
|
|
16
|
+
attr_reader access_paths: Array[String]
|
|
17
|
+
|
|
18
|
+
# @rbs (String path, String source, ?access_path: String) -> void
|
|
19
|
+
def initialize: (String path, String source, ?access_path: String) -> void
|
|
20
|
+
|
|
21
|
+
# Record another lexical path that supplied these canonical bytes.
|
|
22
|
+
# @rbs (String path) -> void
|
|
23
|
+
def add_access_path: (String path) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Hash[String, String | Integer]
|
|
26
|
+
def to_h: () -> Hash[String, String | Integer]
|
|
27
|
+
|
|
28
|
+
# Detect content changes even when size and timestamps are preserved.
|
|
29
|
+
# @rbs () -> bool
|
|
30
|
+
def current?: () -> bool
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
# @rbs () -> bool
|
|
35
|
+
def lexical_paths_current?: () -> bool
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_manifest.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Deterministic description of one published parser generation.
|
|
5
|
+
# rubocop:disable Metrics/ModuleLength -- manifest schema validation is kept in one auditable unit.
|
|
6
|
+
module GenerationManifest
|
|
7
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
8
|
+
|
|
9
|
+
SCHEMA_VERSION: Integer
|
|
10
|
+
|
|
11
|
+
IDENTIFIER: String
|
|
12
|
+
|
|
13
|
+
ROOT_KEYS: Array[String]
|
|
14
|
+
|
|
15
|
+
INPUT_KEYS: Array[String]
|
|
16
|
+
|
|
17
|
+
FILE_KEYS: Array[String]
|
|
18
|
+
|
|
19
|
+
ARTIFACT_KEYS: Array[String]
|
|
20
|
+
|
|
21
|
+
# @rbs (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, Object?]) -> String
|
|
22
|
+
def self?.render: (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, Object?]) -> String
|
|
23
|
+
|
|
24
|
+
# Validate the manifest shape and, by default, every published artifact digest.
|
|
25
|
+
# @rbs (String source, ?verify_artifacts: bool) -> Hash[String, json_value]
|
|
26
|
+
def self?.validate: (String source, ?verify_artifacts: bool) -> Hash[String, json_value]
|
|
27
|
+
|
|
28
|
+
# @rbs (String path, ?verify_artifacts: bool) -> Hash[String, json_value]
|
|
29
|
+
def self?.validate_file: (String path, ?verify_artifacts: bool) -> Hash[String, json_value]
|
|
30
|
+
|
|
31
|
+
# @rbs (Artifact artifact) -> Hash[String, json_value]
|
|
32
|
+
def self?.artifact_entry: (Artifact artifact) -> Hash[String, json_value]
|
|
33
|
+
|
|
34
|
+
# @rbs (Array[Hash[String, json_value]] files) -> String
|
|
35
|
+
def self?.input_digest: (Array[Hash[String, json_value]] files) -> String
|
|
36
|
+
|
|
37
|
+
# @rbs (Hash[String, Object?] value) -> Hash[String, Object?]
|
|
38
|
+
def self?.sorted_hash: (Hash[String, Object?] value) -> Hash[String, Object?]
|
|
39
|
+
|
|
40
|
+
# @rbs (Object? document) -> void
|
|
41
|
+
def self?.validate_document: (Object? document) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (Hash[Object?, Object?] document) -> void
|
|
44
|
+
def self?.validate_identity: (Hash[Object?, Object?] document) -> void
|
|
45
|
+
|
|
46
|
+
# @rbs (Object? input) -> void
|
|
47
|
+
def self?.validate_input: (Object? input) -> void
|
|
48
|
+
|
|
49
|
+
# @rbs (Array[Object?] entries, String label, ?require_kind: bool) -> void
|
|
50
|
+
def self?.validate_entries: (Array[Object?] entries, String label, ?require_kind: bool) -> void
|
|
51
|
+
|
|
52
|
+
# @rbs (Object? entry, String label, bool require_kind) -> void
|
|
53
|
+
def self?.validate_entry: (Object? entry, String label, bool require_kind) -> void
|
|
54
|
+
|
|
55
|
+
# @rbs (Object? path, String label) -> void
|
|
56
|
+
def self?.validate_path: (Object? path, String label) -> void
|
|
57
|
+
|
|
58
|
+
# @rbs (Object? kind, String label) -> void
|
|
59
|
+
def self?.validate_kind: (Object? kind, String label) -> void
|
|
60
|
+
|
|
61
|
+
# @rbs (Object? digest, String label) -> void
|
|
62
|
+
def self?.validate_digest: (Object? digest, String label) -> void
|
|
63
|
+
|
|
64
|
+
# @rbs (Hash[Object?, Object?] value, Array[String] expected, String label) -> void
|
|
65
|
+
def self?.exact_keys!: (Hash[Object?, Object?] value, Array[String] expected, String label) -> void
|
|
66
|
+
|
|
67
|
+
# @rbs (Array[Object?] entries) -> void
|
|
68
|
+
def self?.verify_entries: (Array[Object?] entries) -> void
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_transaction.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Publishes a rendered ArtifactSet with rollback and a manifest-last marker.
|
|
5
|
+
class GenerationTransaction
|
|
6
|
+
include GenerationTransactionRecovery
|
|
7
|
+
|
|
8
|
+
include GenerationTransactionValidation
|
|
9
|
+
|
|
10
|
+
class SourceChanged < Ibex::Error
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class Error < Ibex::Error
|
|
14
|
+
attr_reader rollback_failed: bool
|
|
15
|
+
|
|
16
|
+
attr_reader recovery_artifacts: Array[String]
|
|
17
|
+
|
|
18
|
+
# @rbs (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
|
|
19
|
+
def initialize: (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# rubocop:disable Layout/LineLength
|
|
23
|
+
# @rbs (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
|
|
24
|
+
def initialize: (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs () -> void
|
|
27
|
+
def commit: () -> void
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
# @rbs () -> void
|
|
32
|
+
def prepare_records: () -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (Artifact artifact, String target) -> Integer
|
|
35
|
+
def target_mode: (Artifact artifact, String target) -> Integer
|
|
36
|
+
|
|
37
|
+
# @rbs () -> void
|
|
38
|
+
def acquire_locks: () -> void
|
|
39
|
+
|
|
40
|
+
# @rbs (File lock, String path) -> void
|
|
41
|
+
def acquire_lock: (File lock, String path) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (String target) -> String
|
|
44
|
+
def lock_path: (String target) -> String
|
|
45
|
+
|
|
46
|
+
# @rbs () -> void
|
|
47
|
+
def stage_records: () -> void
|
|
48
|
+
|
|
49
|
+
# @rbs () -> void
|
|
50
|
+
def backup_records: () -> void
|
|
51
|
+
|
|
52
|
+
# @rbs (String directory, String suffix) -> File
|
|
53
|
+
def create_temporary_file: (String directory, String suffix) -> File
|
|
54
|
+
|
|
55
|
+
# @rbs (String target, String directory) -> String
|
|
56
|
+
def create_backup_link: (String target, String directory) -> String
|
|
57
|
+
|
|
58
|
+
# @rbs (String directory, String suffix) { (String) -> void } -> void
|
|
59
|
+
def with_temporary_path: (String directory, String suffix) { (String) -> void } -> void
|
|
60
|
+
|
|
61
|
+
# @rbs (Symbol group) -> void
|
|
62
|
+
def install_group: (Symbol group) -> void
|
|
63
|
+
|
|
64
|
+
# @rbs (Artifact artifact) -> Symbol
|
|
65
|
+
def publication_group: (Artifact artifact) -> Symbol
|
|
66
|
+
|
|
67
|
+
# @rbs () -> void
|
|
68
|
+
def sync_directories!: () -> void
|
|
69
|
+
|
|
70
|
+
# @rbs () -> void
|
|
71
|
+
def cleanup_success: () -> void
|
|
72
|
+
|
|
73
|
+
# @rbs (Exception error) -> void
|
|
74
|
+
def report_post_commit_failure: (Exception error) -> void
|
|
75
|
+
|
|
76
|
+
# @rbs (String message) -> void
|
|
77
|
+
def warn_best_effort: (String message) -> void
|
|
78
|
+
|
|
79
|
+
# @rbs () -> void
|
|
80
|
+
def release_locks: () -> void
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_transaction_recovery.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Failure recovery and best-effort cleanup for GenerationTransaction.
|
|
5
|
+
module GenerationTransactionRecovery
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Exception cause) -> bot
|
|
9
|
+
def handle_failure: (Exception cause) -> bot
|
|
10
|
+
|
|
11
|
+
# @rbs (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync) -> bool
|
|
12
|
+
def source_change_clean?: (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync) -> bool
|
|
13
|
+
|
|
14
|
+
# rubocop:disable Layout/LineLength
|
|
15
|
+
# @rbs (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync, Array[String] recovery) -> Array[String]
|
|
16
|
+
def failure_details: (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync, Array[String] recovery) -> Array[String]
|
|
17
|
+
|
|
18
|
+
# @rbs () -> Array[String]
|
|
19
|
+
def recovery_artifacts: () -> Array[String]
|
|
20
|
+
|
|
21
|
+
# @rbs () -> Array[String]
|
|
22
|
+
def rollback: () -> Array[String]
|
|
23
|
+
|
|
24
|
+
# @rbs (Hash[Symbol, Object?] record) -> void
|
|
25
|
+
def rollback_record: (Hash[Symbol, Object?] record) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs (preserve_backups: bool) -> Array[String]
|
|
28
|
+
def cleanup_artifacts: (preserve_backups: bool) -> Array[String]
|
|
29
|
+
|
|
30
|
+
# @rbs (String path, Array[String] failures) -> void
|
|
31
|
+
def remove_artifact: (String path, Array[String] failures) -> void
|
|
32
|
+
|
|
33
|
+
# @rbs () -> Array[String]
|
|
34
|
+
def sync_directories_best_effort: () -> Array[String]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_transaction_validation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Canonical target, source, symlink, and lock identity checks for generation.
|
|
5
|
+
module GenerationTransactionValidation
|
|
6
|
+
private def lock_path: (String) -> String
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# Follow a final symlink while preserving the symlink path itself during publication.
|
|
11
|
+
# @rbs (String path, ?Hash[String, bool] seen, ?validate_links: bool) -> String
|
|
12
|
+
def resolved_target: (String path, ?Hash[String, bool] seen, ?validate_links: bool) -> String
|
|
13
|
+
|
|
14
|
+
# @rbs (String expanded, bool validate_links) -> String
|
|
15
|
+
def existing_target: (String expanded, bool validate_links) -> String
|
|
16
|
+
|
|
17
|
+
# @rbs (String target) -> void
|
|
18
|
+
def validate_existing_target!: (String target) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs () -> void
|
|
21
|
+
def validate_source_boundaries!: () -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (Array[String] lock_paths) -> void
|
|
24
|
+
def validate_lock_boundaries!: (Array[String] lock_paths) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (String path, File lock) -> void
|
|
27
|
+
def validate_lock_identity!: (String path, File lock) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs () -> Array[String]
|
|
30
|
+
def protected_generation_paths: () -> Array[String]
|
|
31
|
+
|
|
32
|
+
# @rbs () -> Array[File::Stat]
|
|
33
|
+
def protected_generation_stats: () -> Array[File::Stat]
|
|
34
|
+
|
|
35
|
+
# @rbs (File::Stat path_stat, File::Stat lock_stat) -> bool
|
|
36
|
+
def stable_lock_identity?: (File::Stat path_stat, File::Stat lock_stat) -> bool
|
|
37
|
+
|
|
38
|
+
# @rbs (File::Stat left, File::Stat right) -> bool
|
|
39
|
+
def same_inode?: (File::Stat left, File::Stat right) -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs (String left, String right) -> bool
|
|
42
|
+
def paths_alias?: (String left, String right) -> bool
|
|
43
|
+
|
|
44
|
+
# Reject target names that collide on common case-insensitive or
|
|
45
|
+
# normalization-insensitive filesystems, even when the current filesystem
|
|
46
|
+
# would permit both names.
|
|
47
|
+
# @rbs (String path) -> [String, String]
|
|
48
|
+
def portable_target_key: (String path) -> [ String, String ]
|
|
49
|
+
|
|
50
|
+
# @rbs (String phase) -> void
|
|
51
|
+
def ensure_sources_stable!: (String phase) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (String phase) -> void
|
|
54
|
+
def validate_active_locks!: (String phase) -> void
|
|
55
|
+
|
|
56
|
+
# @rbs (String phase) -> void
|
|
57
|
+
def validate_current_targets!: (String phase) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (Hash[Symbol, Object?] record, Array[String] sources, String phase) -> void
|
|
60
|
+
def validate_current_target!: (Hash[Symbol, Object?] record, Array[String] sources, String phase) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs () -> void
|
|
63
|
+
def validate_locked_targets!: () -> void
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Generated from lib/ibex/grammar_tests.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Executes grammar-declared source examples against one generated parser.
|
|
5
|
+
module GrammarTests
|
|
6
|
+
DEFAULT_TIMEOUT: ::Integer
|
|
7
|
+
|
|
8
|
+
RESULT_MARKER: ::String
|
|
9
|
+
|
|
10
|
+
class Result < Struct[Symbol | String? | IR::location | Array[Integer]]
|
|
11
|
+
attr_accessor expectation(): Symbol
|
|
12
|
+
|
|
13
|
+
attr_accessor actual(): Symbol
|
|
14
|
+
|
|
15
|
+
attr_accessor error_class(): String?
|
|
16
|
+
|
|
17
|
+
attr_accessor error_message(): String?
|
|
18
|
+
|
|
19
|
+
attr_accessor location(): IR::location
|
|
20
|
+
|
|
21
|
+
attr_accessor production_ids(): Array[Integer]
|
|
22
|
+
|
|
23
|
+
def self.new: (?expectation: Symbol, ?actual: Symbol, ?error_class: String?, ?error_message: String?, ?location: IR::location, ?production_ids: Array[Integer]) -> instance
|
|
24
|
+
| ({ ?expectation: Symbol, ?actual: Symbol, ?error_class: String?, ?error_message: String?, ?location: IR::location, ?production_ids: Array[Integer] }) -> instance
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Result
|
|
28
|
+
# @rbs () -> bool
|
|
29
|
+
def passed?: () -> bool
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class ProductionCoverage < Struct[Array[Integer] | Integer]
|
|
33
|
+
attr_accessor covered_ids(): Array[Integer]
|
|
34
|
+
|
|
35
|
+
attr_accessor missing_ids(): Array[Integer]
|
|
36
|
+
|
|
37
|
+
attr_accessor production_count(): Integer
|
|
38
|
+
|
|
39
|
+
def self.new: (?covered_ids: Array[Integer], ?missing_ids: Array[Integer], ?production_count: Integer) -> instance
|
|
40
|
+
| ({ ?covered_ids: Array[Integer], ?missing_ids: Array[Integer], ?production_count: Integer }) -> instance
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class ProductionCoverage
|
|
44
|
+
# @rbs () -> Float
|
|
45
|
+
def percentage: () -> Float
|
|
46
|
+
|
|
47
|
+
# @rbs (Integer minimum) -> bool
|
|
48
|
+
def meets?: (Integer minimum) -> bool
|
|
49
|
+
|
|
50
|
+
# @rbs () -> bool
|
|
51
|
+
def complete?: () -> bool
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Runs all examples in one isolated process while creating a fresh parser
|
|
55
|
+
# instance for every case.
|
|
56
|
+
class Runner
|
|
57
|
+
CHILD_RUNNER: ::String
|
|
58
|
+
|
|
59
|
+
@automaton: IR::Automaton
|
|
60
|
+
|
|
61
|
+
@timeout: Integer
|
|
62
|
+
|
|
63
|
+
# @rbs (IR::Automaton automaton, ?timeout: Integer) -> void
|
|
64
|
+
def initialize: (IR::Automaton automaton, ?timeout: Integer) -> void
|
|
65
|
+
|
|
66
|
+
# @rbs () -> Array[Result]
|
|
67
|
+
def run: () -> Array[Result]
|
|
68
|
+
|
|
69
|
+
# @rbs (Array[Result] results) -> ProductionCoverage
|
|
70
|
+
def production_coverage: (Array[Result] results) -> ProductionCoverage
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
# @rbs () -> String
|
|
75
|
+
def generated_parser: () -> String
|
|
76
|
+
|
|
77
|
+
# @rbs (String parser_path, String runner_path) -> Array[Result]
|
|
78
|
+
def execute_child: (String parser_path, String runner_path) -> Array[Result]
|
|
79
|
+
|
|
80
|
+
# @rbs (Integer pid) -> Process::Status
|
|
81
|
+
def wait_for_child: (Integer pid) -> Process::Status
|
|
82
|
+
|
|
83
|
+
# @rbs (Process::Status status, String errors) -> bot
|
|
84
|
+
def raise_child_failure: (Process::Status status, String errors) -> bot
|
|
85
|
+
|
|
86
|
+
# @rbs (String output) -> Array[Result]
|
|
87
|
+
def decode_results: (String output) -> Array[Result]
|
|
88
|
+
|
|
89
|
+
# @rbs (IR::grammar_test test, Object? document) -> Result
|
|
90
|
+
def build_result: (IR::grammar_test test, Object? document) -> Result
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -13,8 +13,8 @@ module Ibex
|
|
|
13
13
|
# @rbs (production: Integer, dot: Integer, lookaheads: Array[Integer]) -> void
|
|
14
14
|
def initialize: (production: Integer, dot: Integer, lookaheads: Array[Integer]) -> void
|
|
15
15
|
|
|
16
|
-
# @rbs (Grammar grammar) -> Hash[Symbol,
|
|
17
|
-
def to_h: (Grammar grammar) -> Hash[Symbol,
|
|
16
|
+
# @rbs (Grammar grammar) -> Hash[Symbol, Object?]
|
|
17
|
+
def to_h: (Grammar grammar) -> Hash[Symbol, Object?]
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# A deterministic LALR automaton state.
|
|
@@ -38,13 +38,13 @@ module Ibex
|
|
|
38
38
|
# ?conflicts: Array[conflict]) -> void
|
|
39
39
|
def initialize: (id: Integer, items: Array[AutomatonItem], transitions: Hash[Integer, Integer], actions: Hash[Integer, parser_action], gotos: Hash[Integer, Integer], ?default_action: parser_action?, ?conflicts: Array[conflict]) -> void
|
|
40
40
|
|
|
41
|
-
# @rbs (Grammar grammar) -> Hash[Symbol,
|
|
42
|
-
def to_h: (Grammar grammar) -> Hash[Symbol,
|
|
41
|
+
# @rbs (Grammar grammar) -> Hash[Symbol, Object?]
|
|
42
|
+
def to_h: (Grammar grammar) -> Hash[Symbol, Object?]
|
|
43
43
|
|
|
44
44
|
private
|
|
45
45
|
|
|
46
|
-
# @rbs (Hash[Integer,
|
|
47
|
-
def named_keys: (Hash[Integer,
|
|
46
|
+
# @rbs (Hash[Integer, Object?] values, Grammar grammar) -> Hash[String, Object?]
|
|
47
|
+
def named_keys: (Hash[Integer, Object?] values, Grammar grammar) -> Hash[String, Object?]
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
# Immutable LALR automaton and its source grammar.
|
|
@@ -57,21 +57,46 @@ module Ibex
|
|
|
57
57
|
|
|
58
58
|
attr_reader states: Array[AutomatonState]
|
|
59
59
|
|
|
60
|
+
attr_reader entry_states: Hash[String, Integer]
|
|
61
|
+
|
|
60
62
|
attr_reader conflict_summary: conflict_summary
|
|
61
63
|
|
|
62
64
|
attr_reader schema_version: Integer
|
|
63
65
|
|
|
66
|
+
attr_reader entry_construction: String
|
|
67
|
+
|
|
64
68
|
# @rbs (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary,
|
|
65
|
-
# ?algorithm: String, ?grammar_digest: String?, ?
|
|
66
|
-
|
|
69
|
+
# ?algorithm: String, ?grammar_digest: String?, ?entry_states: Hash[String, Integer]?,
|
|
70
|
+
# ?entry_construction: String) -> void
|
|
71
|
+
def initialize: (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary, ?algorithm: String, ?grammar_digest: String?, ?entry_states: Hash[String, Integer]?, ?entry_construction: String) -> void
|
|
67
72
|
|
|
68
|
-
# @rbs (
|
|
69
|
-
|
|
73
|
+
# @rbs (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary,
|
|
74
|
+
# algorithm: String, grammar_digest: String?, entry_states: Hash[String, Integer]?,
|
|
75
|
+
# entry_construction: String) -> void
|
|
76
|
+
def initialize_current: (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary, algorithm: String, grammar_digest: String?, entry_states: Hash[String, Integer]?, entry_construction: String) -> void
|
|
77
|
+
|
|
78
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
79
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
70
80
|
|
|
71
81
|
private
|
|
72
82
|
|
|
83
|
+
# @rbs () -> void
|
|
84
|
+
def validate_entry_states: () -> void
|
|
85
|
+
|
|
73
86
|
# @rbs (Grammar grammar) -> String
|
|
74
87
|
def digest_for: (Grammar grammar) -> String
|
|
88
|
+
|
|
89
|
+
# @rbs (String value) -> String
|
|
90
|
+
def validate_entry_construction: (String value) -> String
|
|
91
|
+
|
|
92
|
+
# @rbs () -> void
|
|
93
|
+
def validate_parser_contract: () -> void
|
|
94
|
+
|
|
95
|
+
# @rbs (ParserContract contract) -> void
|
|
96
|
+
def validate_parser_algorithm: (ParserContract contract) -> void
|
|
97
|
+
|
|
98
|
+
# @rbs (ParserContract contract) -> void
|
|
99
|
+
def validate_parser_entries: (ParserContract contract) -> void
|
|
75
100
|
end
|
|
76
101
|
end
|
|
77
102
|
end
|
data/sig/ibex/ir/grammar_ir.rbs
CHANGED
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module IR
|
|
5
|
+
# Grammar IR has one active wire format. A future incompatible format
|
|
6
|
+
# change may advance this number, but the runtime never treats old
|
|
7
|
+
# formats as an alternate compatibility surface.
|
|
5
8
|
SCHEMA_VERSION: ::Integer
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
SUPPORTED_SCHEMA_VERSIONS: Array[Integer]
|
|
11
|
+
|
|
12
|
+
# @rbs (Object? value) -> Object?
|
|
13
|
+
def self?.deep_freeze: (Object? value) -> Object?
|
|
9
14
|
|
|
10
15
|
# An interned terminal or nonterminal.
|
|
11
16
|
class GrammarSymbol
|
|
@@ -21,9 +26,15 @@ module Ibex
|
|
|
21
26
|
|
|
22
27
|
attr_reader location: location?
|
|
23
28
|
|
|
29
|
+
attr_reader display_name: String?
|
|
30
|
+
|
|
31
|
+
attr_reader semantic_type: String?
|
|
32
|
+
|
|
33
|
+
attr_reader documentation: String?
|
|
34
|
+
|
|
24
35
|
# @rbs (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?,
|
|
25
|
-
# ?location: location?) -> void
|
|
26
|
-
def initialize: (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?, ?location: location?) -> void
|
|
36
|
+
# ?location: location?, ?display_name: String?, ?semantic_type: String?, ?documentation: String?) -> void
|
|
37
|
+
def initialize: (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?, ?location: location?, ?display_name: String?, ?semantic_type: String?, ?documentation: String?) -> void
|
|
27
38
|
|
|
28
39
|
# @rbs () -> bool
|
|
29
40
|
def terminal?: () -> bool
|
|
@@ -31,8 +42,8 @@ module Ibex
|
|
|
31
42
|
# @rbs () -> bool
|
|
32
43
|
def nonterminal?: () -> bool
|
|
33
44
|
|
|
34
|
-
# @rbs () -> Hash[Symbol,
|
|
35
|
-
def to_h: () -> Hash[Symbol,
|
|
45
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
46
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
36
47
|
end
|
|
37
48
|
|
|
38
49
|
# Opaque Ruby semantic action metadata.
|
|
@@ -45,11 +56,14 @@ module Ibex
|
|
|
45
56
|
|
|
46
57
|
attr_reader context_length: Integer
|
|
47
58
|
|
|
48
|
-
|
|
49
|
-
def initialize: (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer) -> void
|
|
59
|
+
attr_reader composition: action_composition?
|
|
50
60
|
|
|
51
|
-
# @rbs (
|
|
52
|
-
|
|
61
|
+
# @rbs (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer,
|
|
62
|
+
# ?composition: action_composition?) -> void
|
|
63
|
+
def initialize: (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer, ?composition: action_composition?) -> void
|
|
64
|
+
|
|
65
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
66
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
53
67
|
end
|
|
54
68
|
|
|
55
69
|
# A normalized BNF production using symbol ids.
|
|
@@ -64,14 +78,21 @@ module Ibex
|
|
|
64
78
|
|
|
65
79
|
attr_reader precedence_override: Integer?
|
|
66
80
|
|
|
67
|
-
attr_reader origin: Hash[Symbol,
|
|
81
|
+
attr_reader origin: Hash[Symbol, Object?]
|
|
82
|
+
|
|
83
|
+
attr_reader documentation: String?
|
|
84
|
+
|
|
85
|
+
attr_reader expansion: production_expansion?
|
|
86
|
+
|
|
87
|
+
attr_reader node: node_annotation?
|
|
68
88
|
|
|
69
89
|
# @rbs (id: Integer, lhs: Integer, rhs: Array[Integer], action: Action?, precedence_override: Integer?,
|
|
70
|
-
# origin: Hash[Symbol,
|
|
71
|
-
|
|
90
|
+
# origin: Hash[Symbol, Object?], ?documentation: String?, ?expansion: production_expansion?,
|
|
91
|
+
# ?node: node_annotation?) -> void
|
|
92
|
+
def initialize: (id: Integer, lhs: Integer, rhs: Array[Integer], action: Action?, precedence_override: Integer?, origin: Hash[Symbol, Object?], ?documentation: String?, ?expansion: production_expansion?, ?node: node_annotation?) -> void
|
|
72
93
|
|
|
73
|
-
# @rbs () -> Hash[Symbol,
|
|
74
|
-
def to_h: () -> Hash[Symbol,
|
|
94
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
95
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
75
96
|
end
|
|
76
97
|
|
|
77
98
|
# One opaque user-code block and the location of its first code line.
|
|
@@ -83,8 +104,8 @@ module Ibex
|
|
|
83
104
|
# @rbs (code: String, location: location) -> void
|
|
84
105
|
def initialize: (code: String, location: location) -> void
|
|
85
106
|
|
|
86
|
-
# @rbs () -> Hash[Symbol,
|
|
87
|
-
def to_h: () -> Hash[Symbol,
|
|
107
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
108
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
88
109
|
end
|
|
89
110
|
|
|
90
111
|
# Immutable normalized grammar exchanged between pipeline stages.
|
|
@@ -95,8 +116,24 @@ module Ibex
|
|
|
95
116
|
|
|
96
117
|
attr_reader start: String
|
|
97
118
|
|
|
119
|
+
attr_reader starts: Array[String]
|
|
120
|
+
|
|
121
|
+
attr_reader mode: grammar_mode
|
|
122
|
+
|
|
98
123
|
attr_reader expect: Integer
|
|
99
124
|
|
|
125
|
+
attr_reader expect_rr: Integer?
|
|
126
|
+
|
|
127
|
+
attr_reader parser_parameters: Array[parser_parameter]
|
|
128
|
+
|
|
129
|
+
attr_reader value_printers: Array[value_printer]
|
|
130
|
+
|
|
131
|
+
attr_reader grammar_tests: Array[grammar_test]
|
|
132
|
+
|
|
133
|
+
attr_reader lexer: Lexer?
|
|
134
|
+
|
|
135
|
+
attr_reader recovery: recovery_policy
|
|
136
|
+
|
|
100
137
|
attr_reader options: grammar_options
|
|
101
138
|
|
|
102
139
|
attr_reader symbols: Array[GrammarSymbol]
|
|
@@ -113,11 +150,30 @@ module Ibex
|
|
|
113
150
|
|
|
114
151
|
attr_reader schema_version: Integer
|
|
115
152
|
|
|
116
|
-
|
|
153
|
+
attr_reader source_provenance: source_provenance?
|
|
154
|
+
|
|
155
|
+
attr_reader parser_contract: ParserContract
|
|
156
|
+
|
|
157
|
+
# @rbs (class_name: String, superclass: String?, start: String, expect: Integer, ?expect_rr: Integer?,
|
|
158
|
+
# options: grammar_options,
|
|
117
159
|
# symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String],
|
|
118
160
|
# conversions: Hash[String, String], warnings: Array[grammar_warning], ?user_code_chunks: user_code_chunks?,
|
|
119
|
-
# ?
|
|
120
|
-
|
|
161
|
+
# ?parser_parameters: Array[parser_parameter],
|
|
162
|
+
# ?value_printers: Array[value_printer], ?grammar_tests: Array[grammar_test],
|
|
163
|
+
# ?recovery: recovery_policy?, ?lexer: Lexer?,
|
|
164
|
+
# ?mode: grammar_mode, ?starts: Array[String]?, ?parser_contract: ParserContract,
|
|
165
|
+
# ?source_provenance: source_provenance?) -> void
|
|
166
|
+
# rubocop:disable Metrics/AbcSize, Metrics/ParameterLists
|
|
167
|
+
# Immutable current IR is constructed from explicit public fields.
|
|
168
|
+
def initialize: (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options, symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String], conversions: Hash[String, String], warnings: Array[grammar_warning], ?expect_rr: Integer?, ?user_code_chunks: user_code_chunks?, ?parser_parameters: Array[parser_parameter], ?value_printers: Array[value_printer], ?grammar_tests: Array[grammar_test], ?recovery: recovery_policy?, ?lexer: Lexer?, ?mode: grammar_mode, ?starts: Array[String]?, ?parser_contract: ParserContract, ?source_provenance: source_provenance?) -> void
|
|
169
|
+
|
|
170
|
+
# @rbs (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options,
|
|
171
|
+
# symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String],
|
|
172
|
+
# conversions: Hash[String, String], warnings: Array[grammar_warning], user_code_chunks: user_code_chunks?,
|
|
173
|
+
# source_provenance: source_provenance?, expect_rr: Integer?, parser_parameters: Array[parser_parameter],
|
|
174
|
+
# value_printers: Array[value_printer], grammar_tests: Array[grammar_test], recovery: recovery_policy?,
|
|
175
|
+
# lexer: Lexer?, mode: grammar_mode, starts: Array[String]?, parser_contract: ParserContract) -> void
|
|
176
|
+
def initialize_current: (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options, symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String], conversions: Hash[String, String], warnings: Array[grammar_warning], user_code_chunks: user_code_chunks?, source_provenance: source_provenance?, expect_rr: Integer?, parser_parameters: Array[parser_parameter], value_printers: Array[value_printer], grammar_tests: Array[grammar_test], recovery: recovery_policy?, lexer: Lexer?, mode: grammar_mode, starts: Array[String]?, parser_contract: ParserContract) -> void
|
|
121
177
|
|
|
122
178
|
# @rbs (String name) -> GrammarSymbol?
|
|
123
179
|
def symbol: (String name) -> GrammarSymbol?
|
|
@@ -131,13 +187,31 @@ module Ibex
|
|
|
131
187
|
# @rbs () -> Array[GrammarSymbol]
|
|
132
188
|
def nonterminals: () -> Array[GrammarSymbol]
|
|
133
189
|
|
|
134
|
-
# @rbs () -> Hash[Symbol,
|
|
135
|
-
def to_h: () -> Hash[Symbol,
|
|
190
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
191
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
136
192
|
|
|
137
193
|
private
|
|
138
194
|
|
|
195
|
+
# @rbs (grammar_mode mode) -> void
|
|
196
|
+
def validate_mode: (grammar_mode mode) -> void
|
|
197
|
+
|
|
198
|
+
# @rbs (String start, Array[String]? starts, grammar_mode mode) -> Array[String]
|
|
199
|
+
def validate_starts: (String start, Array[String]? starts, grammar_mode mode) -> Array[String]
|
|
200
|
+
|
|
201
|
+
# @rbs (Hash[Symbol, Object?] value) -> void
|
|
202
|
+
def append_optional_metadata: (Hash[Symbol, Object?] value) -> void
|
|
203
|
+
|
|
204
|
+
# @rbs (Hash[Symbol, Object?] value) -> void
|
|
205
|
+
def append_parser_metadata: (Hash[Symbol, Object?] value) -> void
|
|
206
|
+
|
|
207
|
+
# @rbs (Hash[Symbol, Object?] value) -> void
|
|
208
|
+
def append_recovery_metadata: (Hash[Symbol, Object?] value) -> void
|
|
209
|
+
|
|
139
210
|
# @rbs () -> void
|
|
140
211
|
def validate_user_code_chunks: () -> void
|
|
212
|
+
|
|
213
|
+
# @rbs (ParserContract parser_contract) -> void
|
|
214
|
+
def validate_current_metadata: (ParserContract parser_contract) -> void
|
|
141
215
|
end
|
|
142
216
|
end
|
|
143
217
|
end
|