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,57 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/lexer_ir.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
LEXER_SCHEMA_VERSION: ::Integer
|
|
6
|
+
|
|
7
|
+
SUPPORTED_LEXER_SCHEMA_VERSIONS: Array[Integer]
|
|
8
|
+
|
|
9
|
+
# One normalized, state-scoped lexer rule.
|
|
10
|
+
class LexerRule
|
|
11
|
+
attr_reader id: Integer
|
|
12
|
+
|
|
13
|
+
attr_reader state: String
|
|
14
|
+
|
|
15
|
+
attr_reader kind: Symbol
|
|
16
|
+
|
|
17
|
+
attr_reader token: String?
|
|
18
|
+
|
|
19
|
+
attr_reader pattern: String
|
|
20
|
+
|
|
21
|
+
attr_reader pattern_kind: Symbol
|
|
22
|
+
|
|
23
|
+
attr_reader options: String
|
|
24
|
+
|
|
25
|
+
attr_reader action: String?
|
|
26
|
+
|
|
27
|
+
attr_reader location: location
|
|
28
|
+
|
|
29
|
+
# @rbs (id: Integer, state: String, kind: Symbol, token: String?, pattern: String, pattern_kind: Symbol,
|
|
30
|
+
# options: String, action: String?, location: location) -> void
|
|
31
|
+
def initialize: (id: Integer, state: String, kind: Symbol, token: String?, pattern: String, pattern_kind: Symbol, options: String, action: String?, location: location) -> void
|
|
32
|
+
|
|
33
|
+
# @rbs () -> Hash[Symbol, lexer_rule_document_value]
|
|
34
|
+
def to_h: () -> Hash[Symbol, lexer_rule_document_value]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Independently versioned lexer contract embedded by the current Grammar IR.
|
|
38
|
+
class Lexer
|
|
39
|
+
attr_reader states: Array[String]
|
|
40
|
+
|
|
41
|
+
attr_reader rules: Array[LexerRule]
|
|
42
|
+
|
|
43
|
+
attr_reader warnings: Array[lexer_warning]
|
|
44
|
+
|
|
45
|
+
attr_reader schema_version: Integer
|
|
46
|
+
|
|
47
|
+
attr_reader source_provenance: source_provenance?
|
|
48
|
+
|
|
49
|
+
# @rbs (states: Array[String], rules: Array[LexerRule], warnings: Array[lexer_warning],
|
|
50
|
+
# ?schema_version: Integer, ?source_provenance: source_provenance?) -> void
|
|
51
|
+
def initialize: (states: Array[String], rules: Array[LexerRule], warnings: Array[lexer_warning], ?schema_version: Integer, ?source_provenance: source_provenance?) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs () -> Hash[Symbol, lexer_document_value]
|
|
54
|
+
def to_h: () -> Hash[Symbol, lexer_document_value]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/parser_contract.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
# Root-owned parser configuration persisted by the current Grammar IR.
|
|
6
|
+
class ParserContract
|
|
7
|
+
type definition = { configuration: String, values: Array[Symbol] }
|
|
8
|
+
|
|
9
|
+
type entry_location = { file: String?, line: Integer, column: Integer }
|
|
10
|
+
|
|
11
|
+
type entry_value = String? | bool | entry_location?
|
|
12
|
+
|
|
13
|
+
DEFINITIONS: Hash[Symbol, definition]
|
|
14
|
+
|
|
15
|
+
# One specified or explicitly unspecified contract field.
|
|
16
|
+
class Entry
|
|
17
|
+
attr_reader key: Symbol
|
|
18
|
+
|
|
19
|
+
attr_reader value: Symbol?
|
|
20
|
+
|
|
21
|
+
attr_reader location: Location?
|
|
22
|
+
|
|
23
|
+
attr_reader explicit: bool
|
|
24
|
+
|
|
25
|
+
# @rbs (Symbol key, ?value: Symbol?, ?location: Location?, ?explicit: bool) -> void
|
|
26
|
+
def initialize: (Symbol key, ?value: Symbol?, ?location: Location?, ?explicit: bool) -> void
|
|
27
|
+
|
|
28
|
+
# @rbs () -> Hash[Symbol, entry_value]
|
|
29
|
+
def to_h: () -> Hash[Symbol, entry_value]
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
# @rbs (Symbol key, Array[Symbol] allowed, Symbol? value, Location? location, bool explicit) -> void
|
|
34
|
+
def validate_state!: (Symbol key, Array[Symbol] allowed, Symbol? value, Location? location, bool explicit) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs () -> entry_location?
|
|
37
|
+
def serialized_location: () -> entry_location?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
attr_reader algorithm: Entry
|
|
41
|
+
|
|
42
|
+
attr_reader entries: Entry
|
|
43
|
+
|
|
44
|
+
attr_reader cst_trivia: Entry
|
|
45
|
+
|
|
46
|
+
# @rbs (?algorithm: Entry?, ?entries: Entry?, ?cst_trivia: Entry?) -> void
|
|
47
|
+
def initialize: (?algorithm: Entry?, ?entries: Entry?, ?cst_trivia: Entry?) -> void
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Hash[Symbol, Hash[Symbol, entry_value]]
|
|
50
|
+
def to_h: () -> Hash[Symbol, Hash[Symbol, entry_value]]
|
|
51
|
+
|
|
52
|
+
# Values supplied to the typed resolver; unspecified fields are absent.
|
|
53
|
+
# @rbs () -> Hash[String, Symbol]
|
|
54
|
+
def configuration_values: () -> Hash[String, Symbol]
|
|
55
|
+
|
|
56
|
+
# Source locations supplied to the typed resolver.
|
|
57
|
+
# @rbs () -> Hash[String, Location]
|
|
58
|
+
def configuration_locations: () -> Hash[String, Location]
|
|
59
|
+
|
|
60
|
+
private
|
|
61
|
+
|
|
62
|
+
# @rbs (Symbol key, Entry? entry) -> Entry
|
|
63
|
+
def normalize_entry: (Symbol key, Entry? entry) -> Entry
|
|
64
|
+
|
|
65
|
+
# @rbs () -> Array[Entry]
|
|
66
|
+
def specified_entries: () -> Array[Entry]
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data/sig/ibex/ir/serialize.rbs
CHANGED
|
@@ -2,49 +2,101 @@
|
|
|
2
2
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module IR
|
|
5
|
-
# Stable JSON serialization for
|
|
5
|
+
# Stable JSON serialization for the current pipeline IR.
|
|
6
|
+
# rubocop:disable Metrics/ModuleLength -- explicit fields keep serialization changes auditable.
|
|
7
|
+
# rubocop:disable Lint/SelfAssignment -- RBS inline assertions narrow schema-decoded values in place.
|
|
6
8
|
module Serialize
|
|
7
|
-
private def validate_version: (
|
|
9
|
+
private def validate_version: (Hash[String, IR::serialized_value] data) -> void
|
|
8
10
|
|
|
9
|
-
private def self.validate_version: (
|
|
11
|
+
private def self.validate_version: (Hash[String, IR::serialized_value] data) -> void
|
|
10
12
|
|
|
11
|
-
private def load_grammar: (
|
|
13
|
+
private def load_grammar: (Hash[String, IR::serialized_value] data) -> Grammar
|
|
12
14
|
|
|
13
|
-
private def self.load_grammar: (
|
|
15
|
+
private def self.load_grammar: (Hash[String, IR::serialized_value] data) -> Grammar
|
|
14
16
|
|
|
15
|
-
private def
|
|
17
|
+
private def load_symbols: (Hash[String, IR::serialized_value] data) -> Array[GrammarSymbol]
|
|
16
18
|
|
|
17
|
-
private def self.
|
|
19
|
+
private def self.load_symbols: (Hash[String, IR::serialized_value] data) -> Array[GrammarSymbol]
|
|
18
20
|
|
|
19
|
-
private def
|
|
21
|
+
private def load_productions: (Hash[String, IR::serialized_value] data) -> Array[Production]
|
|
20
22
|
|
|
21
|
-
private def self.
|
|
23
|
+
private def self.load_productions: (Hash[String, IR::serialized_value] data) -> Array[Production]
|
|
22
24
|
|
|
23
|
-
private def
|
|
25
|
+
private def empty_chunks: () -> Hash[String, IR::serialized_value]
|
|
24
26
|
|
|
25
|
-
private def self.
|
|
27
|
+
private def self.empty_chunks: () -> Hash[String, IR::serialized_value]
|
|
26
28
|
|
|
27
|
-
private def
|
|
29
|
+
private def empty_parameters: () -> Array[IR::serialized_value]
|
|
28
30
|
|
|
29
|
-
private def self.
|
|
31
|
+
private def self.empty_parameters: () -> Array[IR::serialized_value]
|
|
30
32
|
|
|
31
|
-
private def
|
|
33
|
+
private def empty_printers: () -> Array[IR::serialized_value]
|
|
32
34
|
|
|
33
|
-
private def self.
|
|
35
|
+
private def self.empty_printers: () -> Array[IR::serialized_value]
|
|
34
36
|
|
|
35
|
-
private def
|
|
37
|
+
private def empty_tests: () -> Array[IR::serialized_value]
|
|
36
38
|
|
|
37
|
-
private def self.
|
|
39
|
+
private def self.empty_tests: () -> Array[IR::serialized_value]
|
|
38
40
|
|
|
39
|
-
private def
|
|
41
|
+
private def empty_recovery: () -> Hash[String, IR::serialized_value]
|
|
40
42
|
|
|
41
|
-
private def self.
|
|
43
|
+
private def self.empty_recovery: () -> Hash[String, IR::serialized_value]
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
def self?.dump: (Grammar | Automaton value) -> String
|
|
45
|
+
private def load_automaton: (Hash[String, IR::serialized_value] data) -> Automaton
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
private def self.load_automaton: (Hash[String, IR::serialized_value] data) -> Automaton
|
|
48
|
+
|
|
49
|
+
private def load_lexer: (Hash[String, IR::serialized_value] data) -> Lexer
|
|
50
|
+
|
|
51
|
+
private def self.load_lexer: (Hash[String, IR::serialized_value] data) -> Lexer
|
|
52
|
+
|
|
53
|
+
private def load_state: (Hash[String, IR::serialized_value] state, Grammar grammar) -> AutomatonState
|
|
54
|
+
|
|
55
|
+
private def self.load_state: (Hash[String, IR::serialized_value] state, Grammar grammar) -> AutomatonState
|
|
56
|
+
|
|
57
|
+
private def symbol_keyed: (Hash[String, IR::serialized_value] values, Grammar grammar, ?actions: bool) -> Hash[Integer, IR::serialized_value]
|
|
58
|
+
|
|
59
|
+
private def self.symbol_keyed: (Hash[String, IR::serialized_value] values, Grammar grammar, ?actions: bool) -> Hash[Integer, IR::serialized_value]
|
|
60
|
+
|
|
61
|
+
private def normalize_action: (Hash[String, IR::serialized_value] value) -> parser_action?
|
|
62
|
+
|
|
63
|
+
private def self.normalize_action: (Hash[String, IR::serialized_value] value) -> parser_action?
|
|
64
|
+
|
|
65
|
+
private def load_production: (Hash[String, IR::serialized_value] production) -> Production
|
|
66
|
+
|
|
67
|
+
private def self.load_production: (Hash[String, IR::serialized_value] production) -> Production
|
|
68
|
+
|
|
69
|
+
private def load_user_code_chunks: (Hash[String, Array[Hash[String, IR::serialized_value]]] chunks) -> user_code_chunks
|
|
70
|
+
|
|
71
|
+
private def self.load_user_code_chunks: (Hash[String, Array[Hash[String, IR::serialized_value]]] chunks) -> user_code_chunks
|
|
72
|
+
|
|
73
|
+
private def load_symbol_metadata: (Hash[String, IR::serialized_value] symbol, String field) -> String?
|
|
74
|
+
|
|
75
|
+
private def self.load_symbol_metadata: (Hash[String, IR::serialized_value] symbol, String field) -> String?
|
|
76
|
+
|
|
77
|
+
private def load_grammar_tests: (Array[Hash[String, IR::serialized_value]] tests) -> Array[grammar_test]
|
|
78
|
+
|
|
79
|
+
private def self.load_grammar_tests: (Array[Hash[String, IR::serialized_value]] tests) -> Array[grammar_test]
|
|
80
|
+
|
|
81
|
+
private def symbol_source_position: (Hash[String, IR::serialized_value] symbol) -> String
|
|
82
|
+
|
|
83
|
+
private def self.symbol_source_position: (Hash[String, IR::serialized_value] symbol) -> String
|
|
84
|
+
|
|
85
|
+
private def load_parser_contract: (IR::serialized_value value) -> IR::serialized_value
|
|
86
|
+
|
|
87
|
+
private def self.load_parser_contract: (IR::serialized_value value) -> IR::serialized_value
|
|
88
|
+
|
|
89
|
+
private def symbolize: (IR::serialized_value value) -> IR::serialized_value
|
|
90
|
+
|
|
91
|
+
private def self.symbolize: (IR::serialized_value value) -> IR::serialized_value
|
|
92
|
+
|
|
93
|
+
# @rbs (Grammar | Automaton | Lexer value) -> String
|
|
94
|
+
def self?.dump: (Grammar | Automaton | Lexer value) -> String
|
|
95
|
+
|
|
96
|
+
# @rbs (String source) -> (Grammar | Automaton | Lexer)
|
|
97
|
+
def self?.load: (String source) -> (Grammar | Automaton | Lexer)
|
|
98
|
+
|
|
99
|
+
private
|
|
48
100
|
end
|
|
49
101
|
end
|
|
50
102
|
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/validator/automaton.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
module Validator
|
|
6
|
+
# Structural and referential validation for a current Automaton IR JSON object.
|
|
7
|
+
# rubocop:disable Metrics/ClassLength -- inline type contracts accompany one cohesive document validator.
|
|
8
|
+
class AutomatonDocument < Base
|
|
9
|
+
ROOT_REQUIRED: Array[String]
|
|
10
|
+
|
|
11
|
+
ROOT_OPTIONAL: Array[String]
|
|
12
|
+
|
|
13
|
+
STATE_REQUIRED: Array[String]
|
|
14
|
+
|
|
15
|
+
ACTION_TYPES: Array[String]
|
|
16
|
+
|
|
17
|
+
RESOLUTION_KINDS: Array[String]
|
|
18
|
+
|
|
19
|
+
@version: Integer
|
|
20
|
+
|
|
21
|
+
@grammar: GrammarDocument
|
|
22
|
+
|
|
23
|
+
@states_by_id: Hash[Integer, json_object]
|
|
24
|
+
|
|
25
|
+
@data: json_object
|
|
26
|
+
|
|
27
|
+
# @rbs (json_object data, ?version: Integer) -> void
|
|
28
|
+
def initialize: (json_object data, ?version: Integer) -> void
|
|
29
|
+
|
|
30
|
+
# @rbs () -> self
|
|
31
|
+
def validate: () -> self
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
# @rbs () -> void
|
|
36
|
+
def validate_entry_states: () -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (Hash[String, untyped] grammar) -> void
|
|
39
|
+
def validate_construction_contract: (Hash[String, untyped] grammar) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs () -> void
|
|
42
|
+
def validate_digest: () -> void
|
|
43
|
+
|
|
44
|
+
# @rbs () -> void
|
|
45
|
+
def validate_state_records: () -> void
|
|
46
|
+
|
|
47
|
+
# @rbs () -> void
|
|
48
|
+
def validate_state_contents: () -> void
|
|
49
|
+
|
|
50
|
+
# @rbs (json_value value, String path) -> void
|
|
51
|
+
def validate_items: (json_value value, String path) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (Integer production_id, json_value dot_value, String path) -> void
|
|
54
|
+
def validate_item_production: (Integer production_id, json_value dot_value, String path) -> void
|
|
55
|
+
|
|
56
|
+
# @rbs (json_value value, String path) -> void
|
|
57
|
+
def validate_lookaheads: (json_value value, String path) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (json_value value, String path) -> void
|
|
60
|
+
def validate_transitions: (json_value value, String path) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs (json_value value, String path) -> void
|
|
63
|
+
def validate_actions: (json_value value, String path) -> void
|
|
64
|
+
|
|
65
|
+
# @rbs (json_value value, String path) -> void
|
|
66
|
+
def validate_gotos: (json_value value, String path) -> void
|
|
67
|
+
|
|
68
|
+
# @rbs (json_value value, String path, ?kind: String?) { (json_value, String, json_object) -> void } -> void
|
|
69
|
+
def symbol_map: (json_value value, String path, ?kind: String?) { (json_value, String, json_object) -> void } -> void
|
|
70
|
+
|
|
71
|
+
# @rbs (json_value value, String path) -> void
|
|
72
|
+
def validate_state_reference: (json_value value, String path) -> void
|
|
73
|
+
|
|
74
|
+
# @rbs (json_value value, String path, ?nullable: bool) -> void
|
|
75
|
+
def validate_parser_action: (json_value value, String path, ?nullable: bool) -> void
|
|
76
|
+
|
|
77
|
+
# @rbs (json_value value, String path) -> void
|
|
78
|
+
def validate_production_reference: (json_value value, String path) -> void
|
|
79
|
+
|
|
80
|
+
# @rbs (json_value value, String path) -> void
|
|
81
|
+
def validate_conflicts: (json_value value, String path) -> void
|
|
82
|
+
|
|
83
|
+
# @rbs (json_object conflict, String path) -> void
|
|
84
|
+
def validate_shift_reduce: (json_object conflict, String path) -> void
|
|
85
|
+
|
|
86
|
+
# @rbs (json_object conflict, String path) -> void
|
|
87
|
+
def validate_reduce_reduce: (json_object conflict, String path) -> void
|
|
88
|
+
|
|
89
|
+
# @rbs (json_object conflict, String path) -> void
|
|
90
|
+
def validate_conflict_entries: (json_object conflict, String path) -> void
|
|
91
|
+
|
|
92
|
+
# @rbs (json_value value, String path) -> void
|
|
93
|
+
def validate_midrule_origins: (json_value value, String path) -> void
|
|
94
|
+
|
|
95
|
+
# @rbs (json_value value, String path) -> void
|
|
96
|
+
def validate_conflict_symbol: (json_value value, String path) -> void
|
|
97
|
+
|
|
98
|
+
# @rbs (json_value value, String path, ?reductions: Array[Integer]?) -> void
|
|
99
|
+
def validate_resolution: (json_value value, String path, ?reductions: Array[Integer]?) -> void
|
|
100
|
+
|
|
101
|
+
# @rbs () -> void
|
|
102
|
+
def validate_conflict_summary: () -> void
|
|
103
|
+
|
|
104
|
+
# @rbs (json_object summary, String path) -> void
|
|
105
|
+
def validate_conflict_counts: (json_object summary, String path) -> void
|
|
106
|
+
|
|
107
|
+
# @rbs (json_object summary, String path) -> void
|
|
108
|
+
def validate_expectation: (json_object summary, String path) -> void
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/validator/base.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
module Validator
|
|
6
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
7
|
+
|
|
8
|
+
type json_object = Hash[String, json_value]
|
|
9
|
+
|
|
10
|
+
# Shared JSON-shape checks for current IR documents.
|
|
11
|
+
class Base
|
|
12
|
+
POSITION: ::String
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
# @rbs (json_value value, String path, Array[String] required, ?Array[String] optional) -> json_object
|
|
17
|
+
def record: (json_value value, String path, Array[String] required, ?Array[String] optional) -> json_object
|
|
18
|
+
|
|
19
|
+
# @rbs (json_value value, String path) -> json_object
|
|
20
|
+
def object: (json_value value, String path) -> json_object
|
|
21
|
+
|
|
22
|
+
# @rbs (json_value value, String path) -> Array[json_value]
|
|
23
|
+
def array: (json_value value, String path) -> Array[json_value]
|
|
24
|
+
|
|
25
|
+
# @rbs (json_value value, String path) -> String
|
|
26
|
+
def string: (json_value value, String path) -> String
|
|
27
|
+
|
|
28
|
+
# @rbs (json_value value, String path) -> String
|
|
29
|
+
def nonempty_string: (json_value value, String path) -> String
|
|
30
|
+
|
|
31
|
+
# @rbs (json_value value, String path) -> Integer
|
|
32
|
+
def integer: (json_value value, String path) -> Integer
|
|
33
|
+
|
|
34
|
+
# @rbs (json_value value, String path) -> Integer
|
|
35
|
+
def nonnegative_integer: (json_value value, String path) -> Integer
|
|
36
|
+
|
|
37
|
+
# @rbs (json_value value, String path) -> bool
|
|
38
|
+
def boolean: (json_value value, String path) -> bool
|
|
39
|
+
|
|
40
|
+
# @rbs (json_value value, String path, json_value expected) -> void
|
|
41
|
+
def literal: (json_value value, String path, json_value expected) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (json_value value, String path, Array[String] values) -> String
|
|
44
|
+
def enum: (json_value value, String path, Array[String] values) -> String
|
|
45
|
+
|
|
46
|
+
# @rbs (json_value value, String path, ?nullable: bool) -> void
|
|
47
|
+
def location: (json_value value, String path, ?nullable: bool) -> void
|
|
48
|
+
|
|
49
|
+
# @rbs (json_value value, String path) -> Integer
|
|
50
|
+
def positive_integer: (json_value value, String path) -> Integer
|
|
51
|
+
|
|
52
|
+
# @rbs (json_value value, String path) -> String?
|
|
53
|
+
def nullable_string: (json_value value, String path) -> String?
|
|
54
|
+
|
|
55
|
+
# @rbs (json_value value, String path) -> void
|
|
56
|
+
def metadata: (json_value value, String path) -> void
|
|
57
|
+
|
|
58
|
+
# @rbs (json_object value, String key, String path) -> json_value
|
|
59
|
+
def field: (json_object value, String key, String path) -> json_value
|
|
60
|
+
|
|
61
|
+
# @rbs (String path, String key) -> String
|
|
62
|
+
def child_path: (String path, String key) -> String
|
|
63
|
+
|
|
64
|
+
# @rbs (String path, String message) -> bot
|
|
65
|
+
def invalid: (String path, String message) -> bot
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/validator/grammar.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
module Validator
|
|
6
|
+
# Structural and referential validation for a current Grammar IR JSON object.
|
|
7
|
+
# rubocop:disable Metrics/ClassLength -- inline type contracts accompany one cohesive document validator.
|
|
8
|
+
class GrammarDocument < Base
|
|
9
|
+
ROOT_REQUIRED: Array[String]
|
|
10
|
+
|
|
11
|
+
ROOT_OPTIONAL: Array[String]
|
|
12
|
+
|
|
13
|
+
SYMBOL_REQUIRED: Array[String]
|
|
14
|
+
|
|
15
|
+
SYMBOL_OPTIONAL: Array[String]
|
|
16
|
+
|
|
17
|
+
SYMBOL_METADATA_REQUIRED: Array[String]
|
|
18
|
+
|
|
19
|
+
PRODUCTION_REQUIRED: Array[String]
|
|
20
|
+
|
|
21
|
+
PRODUCTION_METADATA_REQUIRED: Array[String]
|
|
22
|
+
|
|
23
|
+
ACTION_COMPOSITION_REQUIRED: Array[String]
|
|
24
|
+
|
|
25
|
+
ORIGIN_KINDS: Array[String]
|
|
26
|
+
|
|
27
|
+
RUBY_KEYWORDS: Array[String]
|
|
28
|
+
|
|
29
|
+
attr_reader symbols_by_id: Hash[Integer, json_object]
|
|
30
|
+
|
|
31
|
+
attr_reader symbols_by_name: Hash[String, json_object]
|
|
32
|
+
|
|
33
|
+
attr_reader productions_by_id: Hash[Integer, json_object]
|
|
34
|
+
|
|
35
|
+
@version: Integer
|
|
36
|
+
|
|
37
|
+
@path: String
|
|
38
|
+
|
|
39
|
+
@data: json_object
|
|
40
|
+
|
|
41
|
+
# @rbs (json_object data, ?path: String, ?version: Integer) -> void
|
|
42
|
+
def initialize: (json_object data, ?path: String, ?version: Integer) -> void
|
|
43
|
+
|
|
44
|
+
# @rbs () -> self
|
|
45
|
+
def validate: () -> self
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
# @rbs () -> void
|
|
50
|
+
def validate_root_record: () -> void
|
|
51
|
+
|
|
52
|
+
# @rbs () -> void
|
|
53
|
+
def validate_optional_parser_metadata: () -> void
|
|
54
|
+
|
|
55
|
+
# @rbs () -> void
|
|
56
|
+
def validate_parser_parameters_if_present: () -> void
|
|
57
|
+
|
|
58
|
+
# @rbs () -> void
|
|
59
|
+
def validate_optional_source_metadata: () -> void
|
|
60
|
+
|
|
61
|
+
# @rbs () -> void
|
|
62
|
+
def validate_envelope: () -> void
|
|
63
|
+
|
|
64
|
+
# @rbs () -> void
|
|
65
|
+
def validate_header: () -> void
|
|
66
|
+
|
|
67
|
+
# @rbs () -> void
|
|
68
|
+
def validate_options: () -> void
|
|
69
|
+
|
|
70
|
+
# @rbs () -> void
|
|
71
|
+
def validate_parser_parameters: () -> void
|
|
72
|
+
|
|
73
|
+
# @rbs () -> void
|
|
74
|
+
def validate_value_printers: () -> void
|
|
75
|
+
|
|
76
|
+
# @rbs () -> void
|
|
77
|
+
def validate_grammar_tests: () -> void
|
|
78
|
+
|
|
79
|
+
# @rbs () -> void
|
|
80
|
+
def validate_symbols: () -> void
|
|
81
|
+
|
|
82
|
+
# @rbs (json_value value, Integer index) -> void
|
|
83
|
+
def validate_symbol: (json_value value, Integer index) -> void
|
|
84
|
+
|
|
85
|
+
# @rbs (json_value value, String path) -> void
|
|
86
|
+
def validate_precedence: (json_value value, String path) -> void
|
|
87
|
+
|
|
88
|
+
# @rbs () -> void
|
|
89
|
+
def validate_reserved_symbols: () -> void
|
|
90
|
+
|
|
91
|
+
# @rbs (Integer id, String name) -> void
|
|
92
|
+
def validate_reserved_symbol: (Integer id, String name) -> void
|
|
93
|
+
|
|
94
|
+
# @rbs () -> void
|
|
95
|
+
def validate_start: () -> void
|
|
96
|
+
|
|
97
|
+
# @rbs (String start) -> void
|
|
98
|
+
def validate_multiple_starts: (String start) -> void
|
|
99
|
+
|
|
100
|
+
# @rbs () -> void
|
|
101
|
+
def validate_recovery: () -> void
|
|
102
|
+
|
|
103
|
+
# @rbs (json_value values, String path, kind: String) -> void
|
|
104
|
+
def validate_recovery_symbols: (json_value values, String path, kind: String) -> void
|
|
105
|
+
|
|
106
|
+
# @rbs (json_value value, String path, kind: String, seen: Hash[String, bool]) -> void
|
|
107
|
+
def validate_recovery_symbol: (json_value value, String path, kind: String, seen: Hash[String, bool]) -> void
|
|
108
|
+
|
|
109
|
+
# @rbs () -> void
|
|
110
|
+
def validate_productions: () -> void
|
|
111
|
+
|
|
112
|
+
# @rbs (json_value value, Integer index) -> void
|
|
113
|
+
def validate_production: (json_value value, Integer index) -> void
|
|
114
|
+
|
|
115
|
+
# @rbs (json_value value, String path, rhs_length: Integer) -> void
|
|
116
|
+
def validate_node_annotation: (json_value value, String path, rhs_length: Integer) -> void
|
|
117
|
+
|
|
118
|
+
# @rbs (json_value value, String path) -> void
|
|
119
|
+
def validate_lhs: (json_value value, String path) -> void
|
|
120
|
+
|
|
121
|
+
# @rbs (json_value value, String path) -> void
|
|
122
|
+
def validate_rhs: (json_value value, String path) -> void
|
|
123
|
+
|
|
124
|
+
# @rbs (json_value value, String path, rhs_length: Integer) -> void
|
|
125
|
+
def validate_action: (json_value value, String path, rhs_length: Integer) -> void
|
|
126
|
+
|
|
127
|
+
# @rbs (json_value value, String path, limit: Integer) -> void
|
|
128
|
+
def validate_named_refs: (json_value value, String path, limit: Integer) -> void
|
|
129
|
+
|
|
130
|
+
# @rbs (json_value value, String path) -> void
|
|
131
|
+
def validate_precedence_override: (json_value value, String path) -> void
|
|
132
|
+
|
|
133
|
+
# @rbs (json_value value, String path) -> void
|
|
134
|
+
def validate_origin: (json_value value, String path) -> void
|
|
135
|
+
|
|
136
|
+
# @rbs (json_value value, String path) -> void
|
|
137
|
+
def validate_string_map: (json_value value, String path) -> void
|
|
138
|
+
|
|
139
|
+
# @rbs () -> void
|
|
140
|
+
def validate_warnings: () -> void
|
|
141
|
+
|
|
142
|
+
# @rbs (json_value value, String path) -> void
|
|
143
|
+
def validate_warning: (json_value value, String path) -> void
|
|
144
|
+
|
|
145
|
+
# @rbs (json_object warning, String path) -> void
|
|
146
|
+
def validate_warning_symbol: (json_object warning, String path) -> void
|
|
147
|
+
|
|
148
|
+
# @rbs (json_object warning, String field_name, String path) -> void
|
|
149
|
+
def validate_warning_production: (json_object warning, String field_name, String path) -> void
|
|
150
|
+
|
|
151
|
+
# @rbs () -> void
|
|
152
|
+
def validate_lexer: () -> void
|
|
153
|
+
|
|
154
|
+
# @rbs () -> void
|
|
155
|
+
def validate_user_code_chunks: () -> void
|
|
156
|
+
|
|
157
|
+
# @rbs (json_value value, String path, ?nullable: bool) -> void
|
|
158
|
+
def validate_source_provenance: (json_value value, String path, ?nullable: bool) -> void
|
|
159
|
+
|
|
160
|
+
# @rbs (json_value value, String path) -> void
|
|
161
|
+
def validate_byte_span: (json_value value, String path) -> void
|
|
162
|
+
|
|
163
|
+
# @rbs () -> void
|
|
164
|
+
def validate_parser_contract: () -> void
|
|
165
|
+
|
|
166
|
+
# @rbs (untyped value, String, Array[String]) -> Hash[String, untyped]
|
|
167
|
+
def validate_contract_entry: (untyped value, String, Array[String]) -> Hash[String, untyped]
|
|
168
|
+
|
|
169
|
+
# @rbs (json_value value, String path) -> void
|
|
170
|
+
def validate_expansion: (json_value value, String path) -> void
|
|
171
|
+
|
|
172
|
+
# @rbs (json_value value, String path) -> void
|
|
173
|
+
def validate_parameter_expansion: (json_value value, String path) -> void
|
|
174
|
+
|
|
175
|
+
# @rbs (json_value value, String path) -> void
|
|
176
|
+
def validate_inline_expansion: (json_value value, String path) -> void
|
|
177
|
+
|
|
178
|
+
# @rbs (json_value value, String path, rhs_length: Integer) -> void
|
|
179
|
+
def validate_action_composition: (json_value value, String path, rhs_length: Integer) -> void
|
|
180
|
+
|
|
181
|
+
# @rbs (json_value value, String path, Integer rhs_length, Array[json_value] fragments) -> void
|
|
182
|
+
def validate_action_composition_plan: (json_value value, String path, Integer rhs_length, Array[json_value] fragments) -> void
|
|
183
|
+
|
|
184
|
+
# @rbs (json_value value, String path, Integer physical, Integer step_index) -> void
|
|
185
|
+
def validate_action_composition_step: (json_value value, String path, Integer physical, Integer step_index) -> void
|
|
186
|
+
|
|
187
|
+
# @rbs (Array[json_value] inputs, String path, Integer limit) -> void
|
|
188
|
+
def validate_action_slots: (Array[json_value] inputs, String path, Integer limit) -> void
|
|
189
|
+
|
|
190
|
+
# @rbs (json_value value, String path, Integer physical) -> void
|
|
191
|
+
def validate_action_lookahead: (json_value value, String path, Integer physical) -> void
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/validator/lexer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
module Validator
|
|
6
|
+
# Structural validation for the independently versioned Lexer IR.
|
|
7
|
+
class LexerDocument < Base
|
|
8
|
+
ROOT_REQUIRED: Array[String]
|
|
9
|
+
|
|
10
|
+
RULE_REQUIRED: Array[String]
|
|
11
|
+
|
|
12
|
+
# @rbs (json_object data, ?path: String) -> void
|
|
13
|
+
def initialize: (json_object data, ?path: String) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs () -> self
|
|
16
|
+
def validate: () -> self
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
# @rbs () -> void
|
|
21
|
+
def validate_states: () -> void
|
|
22
|
+
|
|
23
|
+
# @rbs () -> void
|
|
24
|
+
def validate_rules: () -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (json_object rule, String path, String options) -> void
|
|
27
|
+
def validate_pattern: (json_object rule, String path, String options) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs () -> void
|
|
30
|
+
def validate_warnings: () -> void
|
|
31
|
+
|
|
32
|
+
# @rbs () -> void
|
|
33
|
+
def validate_source_provenance: () -> void
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/validator.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
# Validates a serialized public IR document before constructing immutable IR objects.
|
|
6
|
+
module Validator
|
|
7
|
+
POSITION: ::String
|
|
8
|
+
|
|
9
|
+
# @rbs (String source) -> (Grammar | Automaton | Lexer)
|
|
10
|
+
def self?.validate: (String source) -> (Grammar | Automaton | Lexer)
|
|
11
|
+
|
|
12
|
+
# @rbs (Automaton automaton) -> void
|
|
13
|
+
def self?.validate_automaton_digest: (Automaton automaton) -> void
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|