ibex 0.2.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 +95 -272
- data/docs/architecture.md +187 -35
- 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 +3 -4
- data/docs/cst.md +24 -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 +179 -2
- data/docs/direct-ielr-decision.md +120 -0
- data/docs/direct-multi-entry-decision.md +82 -0
- data/docs/editor-setup.md +2 -1
- 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 +54 -0
- data/docs/getting-started.md +80 -0
- data/docs/grammar-reference.md +184 -13
- 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 +5 -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 +11 -0
- data/docs/release-readiness.md +126 -68
- data/docs/repair-semantics.md +123 -0
- data/docs/runtime-abi-evolution.md +307 -0
- data/docs/stability.md +144 -34
- 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/lib/ibex/analysis/digraph.rb +128 -0
- data/lib/ibex/analysis.rb +1 -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 +14 -5
- 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/diagnostics.rb +31 -11
- data/lib/ibex/cli/documentation.rb +11 -8
- data/lib/ibex/cli/equiv.rb +169 -0
- data/lib/ibex/cli/error_messages.rb +11 -4
- data/lib/ibex/cli/explain.rb +14 -5
- data/lib/ibex/cli/fix.rb +203 -0
- data/lib/ibex/cli/formatting.rb +11 -10
- data/lib/ibex/cli/fuzz.rb +200 -0
- data/lib/ibex/cli/fuzz_regressions.rb +145 -0
- data/lib/ibex/cli/generation_artifacts.rb +53 -2
- data/lib/ibex/cli/generation_error_messages.rb +1 -1
- data/lib/ibex/cli/grammar_tests.rb +32 -14
- data/lib/ibex/cli/ir_tools.rb +5 -61
- data/lib/ibex/cli/outputs.rb +60 -33
- data/lib/ibex/cli/reduce.rb +202 -0
- data/lib/ibex/cli/reduce_reporting.rb +71 -0
- data/lib/ibex/cli/samples.rb +49 -23
- data/lib/ibex/cli/verify.rb +116 -0
- data/lib/ibex/cli/watch.rb +6 -5
- data/lib/ibex/cli.rb +357 -56
- data/lib/ibex/codegen/action_locations.rb +1 -1
- data/lib/ibex/codegen/action_method_source.rb +5 -6
- data/lib/ibex/codegen/action_source.rb +3 -2
- data/lib/ibex/codegen/ambiguity.rb +5 -4
- data/lib/ibex/codegen/explain.rb +123 -55
- data/lib/ibex/codegen/generated_action_abi.rb +10 -5
- data/lib/ibex/codegen/rbs.rb +15 -7
- data/lib/ibex/codegen/report.rb +25 -13
- data/lib/ibex/codegen/ruby.rb +28 -64
- data/lib/ibex/codegen/ruby_actions.rb +9 -6
- data/lib/ibex/codegen/ruby_syntax.rb +15 -9
- 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 +21 -11
- data/lib/ibex/coverage/event_stream.rb +13 -7
- data/lib/ibex/coverage/report.rb +26 -18
- data/lib/ibex/coverage/runtime_event_validator.rb +30 -21
- 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/fix.rb +557 -0
- data/lib/ibex/frontend/ast.rb +22 -2
- data/lib/ibex/frontend/bootstrap_parser.rb +6 -13
- data/lib/ibex/frontend/diagnostic.rb +1 -1
- data/lib/ibex/frontend/formatter.rb +72 -26
- data/lib/ibex/frontend/generated_parser.rb +147 -117
- data/lib/ibex/frontend/generated_parser_base.rb +7 -3
- data/lib/ibex/frontend/generated_parser_includes.rb +1 -11
- data/lib/ibex/frontend/generation.rb +1 -1
- data/lib/ibex/frontend/parser/declarations.rb +17 -2
- data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
- data/lib/ibex/frontend/regenerator.rb +1 -0
- data/lib/ibex/frontend/resolution.rb +2 -1
- data/lib/ibex/frontend/resolver.rb +1 -1
- data/lib/ibex/frontend/rule_documentation.rb +2 -1
- data/lib/ibex/frontend/source_cursor.rb +2 -2
- data/lib/ibex/frontend/source_span.rb +9 -1
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +38 -6
- data/lib/ibex/frontend/token_adapter.rb +10 -0
- data/lib/ibex/frontend.rb +1 -0
- data/lib/ibex/fuzz.rb +219 -0
- data/lib/ibex/generation_input.rb +1 -1
- data/lib/ibex/generation_manifest.rb +36 -25
- data/lib/ibex/generation_transaction.rb +1 -1
- data/lib/ibex/generation_transaction_recovery.rb +4 -4
- data/lib/ibex/generation_transaction_validation.rb +2 -2
- data/lib/ibex/grammar_tests.rb +1 -1
- data/lib/ibex/ir/automaton_ir.rb +61 -19
- data/lib/ibex/ir/grammar_ir.rb +76 -45
- data/lib/ibex/ir/lexer_ir.rb +5 -5
- data/lib/ibex/ir/parser_contract.rb +135 -0
- data/lib/ibex/ir/serialize.rb +203 -76
- data/lib/ibex/ir/validator/automaton.rb +64 -34
- data/lib/ibex/ir/validator/base.rb +51 -33
- data/lib/ibex/ir/validator/grammar.rb +113 -83
- data/lib/ibex/ir/validator/lexer.rb +2 -2
- data/lib/ibex/ir/validator.rb +2 -1
- data/lib/ibex/ir.rb +16 -3
- data/lib/ibex/lalr/build_metrics.rb +50 -2
- data/lib/ibex/lalr/builder.rb +191 -56
- data/lib/ibex/lalr/conflict_search.rb +15 -4
- data/lib/ibex/lalr/counterexample.rb +19 -14
- data/lib/ibex/lalr/direct_lookaheads.rb +110 -57
- 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 +22 -8
- 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/unreachable_states.rb +80 -0
- data/lib/ibex/lalr.rb +52 -1
- data/lib/ibex/location.rb +3 -3
- data/lib/ibex/lsp/document_handlers.rb +9 -7
- data/lib/ibex/lsp/initialization_handlers.rb +9 -7
- data/lib/ibex/lsp/navigation_handlers.rb +25 -11
- data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
- data/lib/ibex/lsp/position_codec.rb +6 -2
- data/lib/ibex/lsp/request_handlers.rb +3 -2
- data/lib/ibex/lsp/request_support.rb +14 -7
- data/lib/ibex/lsp/server.rb +13 -11
- data/lib/ibex/lsp/symbol_index.rb +13 -13
- data/lib/ibex/lsp/symbol_index_builder.rb +30 -20
- data/lib/ibex/lsp/symbol_occurrence.rb +8 -2
- data/lib/ibex/lsp/transport.rb +13 -3
- data/lib/ibex/lsp/workspace.rb +5 -4
- data/lib/ibex/lsp/workspace_analyzer.rb +1 -1
- data/lib/ibex/lsp.rb +1 -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 +2 -0
- data/lib/ibex/normalize/diagnostics.rb +63 -38
- data/lib/ibex/normalize/expander.rb +5 -4
- data/lib/ibex/normalize/expression.rb +8 -6
- data/lib/ibex/normalize/grammar_builder.rb +26 -0
- data/lib/ibex/normalize/inline_expansion.rb +100 -49
- data/lib/ibex/normalize/lexer.rb +3 -3
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +11 -10
- data/lib/ibex/normalize/parameter_lowering.rb +40 -23
- data/lib/ibex/normalize/parameters.rb +31 -4
- data/lib/ibex/normalize/parser_configuration.rb +70 -0
- data/lib/ibex/normalize.rb +10 -20
- data/lib/ibex/racc_migration/report.rb +6 -3
- data/lib/ibex/rake_task.rb +1 -1
- data/lib/ibex/samples.rb +43 -13
- 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 +6 -2
- data/lib/ibex/table_simulation/step.rb +3 -1
- data/lib/ibex/tables.rb +14 -0
- 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 +10 -1
- data/lib/ibex/watch/source_snapshot.rb +13 -8
- data/lib/ibex.rb +10 -0
- data/schema/{automaton-ir-v1.schema.json → automaton-ir-definitions.schema.json} +6 -6
- data/schema/{automaton-ir-v2.schema.json → automaton-ir.schema.json} +14 -7
- 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/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/explain-v1.schema.json +63 -1
- 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/fuzz-regression-v1.schema.json +79 -0
- data/schema/fuzz-v1.schema.json +114 -0
- data/schema/{grammar-ir-v2.schema.json → grammar-ir-extensions.schema.json} +20 -65
- data/schema/{grammar-ir-v1.schema.json → grammar-ir-foundation.schema.json} +3 -3
- data/schema/grammar-ir.schema.json +271 -0
- data/schema/ielr-benchmark-v1.schema.json +85 -0
- data/schema/lexer-profile-v1.schema.json +491 -0
- data/schema/metrics-v1.schema.json +60 -0
- data/schema/reduce-v1.schema.json +22 -0
- data/schema/reduce-v2.schema.json +63 -0
- data/schema/table-artifact-v1.schema.json +377 -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/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 +6 -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/diagnostics.rbs +16 -3
- data/sig/ibex/cli/documentation.rbs +5 -1
- data/sig/ibex/cli/equiv.rbs +49 -0
- data/sig/ibex/cli/error_messages.rbs +6 -0
- data/sig/ibex/cli/explain.rbs +6 -0
- data/sig/ibex/cli/fix.rbs +53 -0
- data/sig/ibex/cli/formatting.rbs +5 -1
- data/sig/ibex/cli/fuzz.rbs +47 -0
- data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
- data/sig/ibex/cli/generation_artifacts.rbs +21 -2
- data/sig/ibex/cli/generation_error_messages.rbs +2 -2
- data/sig/ibex/cli/grammar_tests.rbs +15 -3
- data/sig/ibex/cli/ir_tools.rbs +7 -19
- data/sig/ibex/cli/outputs.rbs +9 -3
- data/sig/ibex/cli/reduce.rbs +60 -0
- data/sig/ibex/cli/reduce_reporting.rbs +27 -0
- data/sig/ibex/cli/samples.rbs +8 -0
- data/sig/ibex/cli/verify.rbs +28 -0
- data/sig/ibex/cli/watch.rbs +2 -2
- data/sig/ibex/cli.rbs +79 -5
- data/sig/ibex/codegen/action_method_source.rbs +4 -4
- data/sig/ibex/codegen/explain.rbs +45 -25
- data/sig/ibex/codegen/generated_action_abi.rbs +14 -10
- data/sig/ibex/codegen/rbs.rbs +12 -10
- data/sig/ibex/codegen/report.rbs +12 -12
- data/sig/ibex/codegen/ruby.rbs +18 -15
- data/sig/ibex/codegen/ruby_actions.rbs +6 -6
- data/sig/ibex/codegen/ruby_syntax.rbs +10 -8
- 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 +16 -14
- data/sig/ibex/coverage/event_stream.rbs +12 -10
- data/sig/ibex/coverage/report.rbs +20 -18
- data/sig/ibex/coverage/runtime_event_validator.rbs +38 -36
- 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/fix.rbs +138 -0
- data/sig/ibex/frontend/ast.rbs +33 -7
- data/sig/ibex/frontend/bootstrap_parser.rbs +2 -0
- data/sig/ibex/frontend/diagnostic.rbs +2 -2
- data/sig/ibex/frontend/formatter.rbs +38 -30
- data/sig/ibex/frontend/generated_parser.rbs +87 -77
- data/sig/ibex/frontend/generated_parser_base.rbs +4 -2
- data/sig/ibex/frontend/parser/declarations.rbs +3 -0
- data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
- data/sig/ibex/frontend/resolution.rbs +3 -2
- data/sig/ibex/frontend/source_cursor.rbs +2 -2
- data/sig/ibex/frontend/source_span.rbs +5 -2
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +13 -1
- data/sig/ibex/frontend/token_adapter.rbs +6 -0
- data/sig/ibex/fuzz.rbs +71 -0
- data/sig/ibex/generation_input.rbs +2 -2
- data/sig/ibex/generation_manifest.rbs +35 -32
- data/sig/ibex/generation_transaction_recovery.rbs +2 -2
- data/sig/ibex/generation_transaction_validation.rbs +2 -2
- data/sig/ibex/grammar_tests.rbs +2 -2
- data/sig/ibex/ir/automaton_ir.rbs +30 -11
- data/sig/ibex/ir/grammar_ir.rbs +41 -27
- data/sig/ibex/ir/lexer_ir.rbs +8 -8
- data/sig/ibex/ir/parser_contract.rbs +69 -0
- data/sig/ibex/ir/serialize.rbs +63 -28
- data/sig/ibex/ir/validator/automaton.rbs +47 -44
- data/sig/ibex/ir/validator/base.rbs +35 -31
- data/sig/ibex/ir/validator/grammar.rbs +78 -67
- data/sig/ibex/ir/validator/lexer.rbs +4 -4
- data/sig/ibex/ir.rbs +9 -3
- data/sig/ibex/lalr/build_metrics.rbs +42 -2
- data/sig/ibex/lalr/builder.rbs +75 -24
- data/sig/ibex/lalr/conflict_search.rbs +5 -2
- data/sig/ibex/lalr/counterexample.rbs +17 -14
- data/sig/ibex/lalr/direct_lookaheads.rbs +35 -28
- 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 +17 -5
- 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/unreachable_states.rbs +25 -0
- data/sig/ibex/lalr.rbs +11 -1
- data/sig/ibex/location.rbs +6 -6
- data/sig/ibex/lsp/document_handlers.rbs +8 -8
- data/sig/ibex/lsp/initialization_handlers.rbs +12 -12
- data/sig/ibex/lsp/navigation_handlers.rbs +15 -12
- data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
- data/sig/ibex/lsp/position_codec.rbs +8 -4
- data/sig/ibex/lsp/request_handlers.rbs +4 -4
- data/sig/ibex/lsp/request_support.rbs +8 -8
- data/sig/ibex/lsp/server.rbs +16 -16
- data/sig/ibex/lsp/symbol_index.rbs +20 -21
- data/sig/ibex/lsp/symbol_index_builder.rbs +9 -8
- data/sig/ibex/lsp/symbol_occurrence.rbs +11 -5
- data/sig/ibex/lsp/transport.rbs +18 -6
- data/sig/ibex/lsp/workspace.rbs +3 -2
- data/sig/ibex/lsp/workspace_analyzer.rbs +1 -1
- data/sig/ibex/messages.rbs +26 -0
- data/sig/ibex/metrics.rbs +50 -0
- data/sig/ibex/normalize/diagnostics.rbs +4 -4
- data/sig/ibex/normalize/expander.rbs +2 -2
- data/sig/ibex/normalize/expression.rbs +10 -8
- data/sig/ibex/normalize/grammar_builder.rbs +11 -0
- data/sig/ibex/normalize/inline_expansion.rbs +59 -50
- data/sig/ibex/normalize/lexer.rbs +4 -4
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +15 -14
- data/sig/ibex/normalize/parameter_lowering.rbs +18 -18
- data/sig/ibex/normalize/parameters.rbs +13 -8
- data/sig/ibex/normalize/parser_configuration.rbs +23 -0
- data/sig/ibex/normalize.rbs +11 -5
- data/sig/ibex/racc_migration/report.rbs +8 -6
- data/sig/ibex/rake_task.rbs +1 -1
- data/sig/ibex/samples.rbs +13 -4
- 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 +8 -4
- data/sig/ibex/table_simulation/step.rbs +4 -2
- data/sig/ibex/tables.rbs +10 -9
- 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 +12 -2
- data/sig/ibex/watch/source_snapshot.rbs +13 -9
- metadata +232 -12
- data/lib/ibex/ir/migration.rb +0 -120
- data/sig/ibex/ir/migration.rbs +0 -34
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/builder.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
# Projects validated Automaton IR into an action-free executable sidecar.
|
|
6
|
+
class Builder
|
|
7
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
8
|
+
|
|
9
|
+
type json_hash = Hash[String, untyped]
|
|
10
|
+
|
|
11
|
+
type action_rows = Array[Hash[Integer, IR::runtime_action]]
|
|
12
|
+
|
|
13
|
+
type action_table = action_rows | Tables::CompactActions
|
|
14
|
+
|
|
15
|
+
type goto_rows = Array[Hash[Integer, Integer]]
|
|
16
|
+
|
|
17
|
+
type goto_table = goto_rows | Tables::Compact
|
|
18
|
+
|
|
19
|
+
include CSTProjection
|
|
20
|
+
|
|
21
|
+
REPRESENTATIONS: Array[Symbol]
|
|
22
|
+
|
|
23
|
+
# @rbs (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
|
|
24
|
+
# ?omit_action_call: bool?) -> void
|
|
25
|
+
def initialize: (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs () -> Document
|
|
28
|
+
def build: () -> Document
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
# @rbs (Hash[String, String] source_identity) -> json_hash
|
|
33
|
+
def build_payload: (Hash[String, String] source_identity) -> json_hash
|
|
34
|
+
|
|
35
|
+
# @rbs () -> String
|
|
36
|
+
def automaton_digest: () -> String
|
|
37
|
+
|
|
38
|
+
# @rbs () -> json_hash
|
|
39
|
+
def table_format: () -> json_hash
|
|
40
|
+
|
|
41
|
+
# @rbs () -> Array[json_hash]
|
|
42
|
+
def symbols: () -> Array[json_hash]
|
|
43
|
+
|
|
44
|
+
# @rbs () -> Array[json_hash]
|
|
45
|
+
def tokens: () -> Array[json_hash]
|
|
46
|
+
|
|
47
|
+
# @rbs () -> Array[json_hash]
|
|
48
|
+
def entry_states: () -> Array[json_hash]
|
|
49
|
+
|
|
50
|
+
# @rbs () -> json_hash
|
|
51
|
+
def tables: () -> json_hash
|
|
52
|
+
|
|
53
|
+
# @rbs (action_table table) -> json_hash
|
|
54
|
+
def action_table: (action_table table) -> json_hash
|
|
55
|
+
|
|
56
|
+
# @rbs (Tables::CompactActions table) -> json_hash
|
|
57
|
+
def compact_action_table: (Tables::CompactActions table) -> json_hash
|
|
58
|
+
|
|
59
|
+
# @rbs (goto_table table) -> json_hash
|
|
60
|
+
def goto_table: (goto_table table) -> json_hash
|
|
61
|
+
|
|
62
|
+
# @rbs (Tables::Compact table) -> json_hash
|
|
63
|
+
def compact_goto_table: (Tables::Compact table) -> json_hash
|
|
64
|
+
|
|
65
|
+
# @rbs () -> Array[json_hash]
|
|
66
|
+
def productions: () -> Array[json_hash]
|
|
67
|
+
|
|
68
|
+
# @rbs (IR::Production production) -> bool
|
|
69
|
+
def action_slot?: (IR::Production production) -> bool
|
|
70
|
+
|
|
71
|
+
# @rbs () -> json_hash
|
|
72
|
+
def semantic_actions: () -> json_hash
|
|
73
|
+
|
|
74
|
+
# @rbs () -> json_hash
|
|
75
|
+
def recovery: () -> json_hash
|
|
76
|
+
|
|
77
|
+
# @rbs (json_hash payload) -> json_hash
|
|
78
|
+
def build_cost: (json_hash payload) -> json_hash
|
|
79
|
+
|
|
80
|
+
# @rbs (json_hash table, String values_key) -> Integer
|
|
81
|
+
def occupied_cells: (json_hash table, String values_key) -> Integer
|
|
82
|
+
|
|
83
|
+
# @rbs () -> String
|
|
84
|
+
def lookup_cost: () -> String
|
|
85
|
+
|
|
86
|
+
# @rbs () -> String
|
|
87
|
+
def recognition_cost: () -> String
|
|
88
|
+
|
|
89
|
+
# @rbs (Symbol | String? requested) -> Symbol
|
|
90
|
+
def effective_cst_trivia: (Symbol | String? requested) -> Symbol
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/cst_projection.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
# Converts code-generation CST metadata into closed JSON records.
|
|
6
|
+
module CSTProjection
|
|
7
|
+
private def cst: () -> Hash[String, Builder::json_value]?
|
|
8
|
+
|
|
9
|
+
private def normalize_cst: (Codegen::CSTMetadata::metadata metadata) -> Hash[String, Builder::json_value]
|
|
10
|
+
|
|
11
|
+
private def normalize_cst_kinds: (Codegen::CSTMetadata::kinds kinds) -> Hash[String, Builder::json_value]
|
|
12
|
+
|
|
13
|
+
private def named_kinds: (Hash[String, Integer] values) -> Array[Hash[String, String | Integer]]
|
|
14
|
+
|
|
15
|
+
private def normalize_cst_slot: (Integer production_id, Codegen::CSTMetadata::slot slot) -> Hash[String, Builder::json_value]
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/document.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
# An immutable, validated table artifact document.
|
|
6
|
+
class Document
|
|
7
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
8
|
+
|
|
9
|
+
attr_reader data: Hash[String, json_value]
|
|
10
|
+
|
|
11
|
+
# @rbs (Hash[String, json_value] data) -> void
|
|
12
|
+
def initialize: (Hash[String, json_value] data) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs () -> String
|
|
15
|
+
def dump: () -> String
|
|
16
|
+
|
|
17
|
+
# @rbs () -> Hash[String, json_value]
|
|
18
|
+
def payload: () -> Hash[String, json_value]
|
|
19
|
+
|
|
20
|
+
# @rbs () -> Hash[String, String]
|
|
21
|
+
def identity: () -> Hash[String, String]
|
|
22
|
+
|
|
23
|
+
# @rbs () -> Hash[String, json_value]
|
|
24
|
+
def cost: () -> Hash[String, json_value]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/executor.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
# Recognition-only driver over internal token ids; it never loads wrapper code.
|
|
6
|
+
class Executor
|
|
7
|
+
class Result
|
|
8
|
+
attr_reader status: Symbol
|
|
9
|
+
|
|
10
|
+
attr_reader steps: Integer
|
|
11
|
+
|
|
12
|
+
attr_reader consumed_tokens: Integer
|
|
13
|
+
|
|
14
|
+
attr_reader reason: String?
|
|
15
|
+
|
|
16
|
+
# @rbs (status: Symbol, steps: Integer, consumed_tokens: Integer, reason: String?) -> void
|
|
17
|
+
def initialize: (status: Symbol, steps: Integer, consumed_tokens: Integer, reason: String?) -> void
|
|
18
|
+
|
|
19
|
+
# @rbs () -> bool
|
|
20
|
+
def accepted?: () -> bool
|
|
21
|
+
|
|
22
|
+
# @rbs () -> bool
|
|
23
|
+
def rejected?: () -> bool
|
|
24
|
+
|
|
25
|
+
# @rbs () -> bool
|
|
26
|
+
def exhausted?: () -> bool
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @rbs (Document | Hash[String, ValidationSupport::json_value] document) -> void
|
|
30
|
+
def initialize: (Document | Hash[String, ValidationSupport::json_value] document) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Array[Integer] token_ids, ?entry: String | Symbol?, ?max_steps: Integer) -> Result
|
|
33
|
+
def recognize: (Array[Integer] token_ids, ?entry: String | Symbol?, ?max_steps: Integer) -> Result
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
# @rbs (Array[Integer] input, Array[Integer] stack, Integer max_steps) -> Result
|
|
38
|
+
def execute: (Array[Integer] input, Array[Integer] stack, Integer max_steps) -> Result
|
|
39
|
+
|
|
40
|
+
# @rbs (Integer? code, Integer token_id, Integer step, Integer cursor) -> Result?
|
|
41
|
+
def immediate_result: (Integer? code, Integer token_id, Integer step, Integer cursor) -> Result?
|
|
42
|
+
|
|
43
|
+
# @rbs (Array[Integer] token_ids) -> Array[Integer]
|
|
44
|
+
def validate_input: (Array[Integer] token_ids) -> Array[Integer]
|
|
45
|
+
|
|
46
|
+
# @rbs (String | Symbol? requested) -> Integer
|
|
47
|
+
def entry_state: (String | Symbol? requested) -> Integer
|
|
48
|
+
|
|
49
|
+
# @rbs (Integer row, Integer column) -> Integer?
|
|
50
|
+
def action: (Integer row, Integer column) -> Integer?
|
|
51
|
+
|
|
52
|
+
# @rbs (Integer row, Integer column) -> Integer?
|
|
53
|
+
def goto_state: (Integer row, Integer column) -> Integer?
|
|
54
|
+
|
|
55
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table, Integer row, Integer column,
|
|
56
|
+
# String value_key) -> Integer?
|
|
57
|
+
def displacement_lookup: (Hash[String, ValidationSupport::json_value] table, Integer row, Integer column, String value_key) -> Integer?
|
|
58
|
+
|
|
59
|
+
# @rbs (Array[Integer] stack, Integer code) -> String?
|
|
60
|
+
def reduce_stack: (Array[Integer] stack, Integer code) -> String?
|
|
61
|
+
|
|
62
|
+
# @rbs (Symbol status, Integer steps, Integer consumed, String? reason) -> Result
|
|
63
|
+
def result: (Symbol status, Integer steps, Integer consumed, String? reason) -> Result
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/serializer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
# Canonical JSON ordering and digest primitives shared by writer and loader.
|
|
6
|
+
module Serializer
|
|
7
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[json_value, json_value]
|
|
8
|
+
|
|
9
|
+
# @rbs (json_value value) -> json_value
|
|
10
|
+
def self.canonical: (json_value value) -> json_value
|
|
11
|
+
|
|
12
|
+
# @rbs (json_value value) -> String
|
|
13
|
+
def self.compact: (json_value value) -> String
|
|
14
|
+
|
|
15
|
+
# @rbs (json_value value) -> String
|
|
16
|
+
def self.dump: (json_value value) -> String
|
|
17
|
+
|
|
18
|
+
# @rbs (json_value value) -> String
|
|
19
|
+
def self.digest: (json_value value) -> String
|
|
20
|
+
|
|
21
|
+
# @rbs (json_value value) -> json_value
|
|
22
|
+
def self.deep_freeze: (json_value value) -> json_value
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/validator/metadata.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
class MetadataValidator
|
|
6
|
+
include ValidationSupport
|
|
7
|
+
|
|
8
|
+
# @rbs (Hash[String, ValidationSupport::json_value] payload, symbols: Array[Hash[String, ValidationSupport::json_value]],
|
|
9
|
+
# productions: Array[Hash[String, ValidationSupport::json_value]]) -> void
|
|
10
|
+
def initialize: (Hash[String, ValidationSupport::json_value] payload, symbols: Array[Hash[String, ValidationSupport::json_value]], productions: Array[Hash[String, ValidationSupport::json_value]]) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs () -> void
|
|
13
|
+
def validate!: () -> void
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
# @rbs (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
|
|
18
|
+
def ids_for_kind: (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
|
|
19
|
+
|
|
20
|
+
# @rbs (ValidationSupport::json_value data) -> void
|
|
21
|
+
def validate_semantic_actions: (ValidationSupport::json_value data) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (ValidationSupport::json_value data) -> void
|
|
24
|
+
def validate_recovery: (ValidationSupport::json_value data) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (ValidationSupport::json_value data) -> void
|
|
27
|
+
def validate_cst: (ValidationSupport::json_value data) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (ValidationSupport::json_value data, String path) -> Integer
|
|
30
|
+
def validate_cst_kinds: (ValidationSupport::json_value data, String path) -> Integer
|
|
31
|
+
|
|
32
|
+
# @rbs (ValidationSupport::json_value data, String path, Integer limit) -> void
|
|
33
|
+
def validate_range: (ValidationSupport::json_value data, String path, Integer limit) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (ValidationSupport::json_value data, String path, Array[String] names) -> void
|
|
36
|
+
def validate_named_kinds: (ValidationSupport::json_value data, String path, Array[String] names) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (ValidationSupport::json_value data, String path, Integer kind_count) -> void
|
|
39
|
+
def validate_named_nonterminals: (ValidationSupport::json_value data, String path, Integer kind_count) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (ValidationSupport::json_value data, String path, Integer kind_count) -> void
|
|
42
|
+
def validate_cst_slots: (ValidationSupport::json_value data, String path, Integer kind_count) -> void
|
|
43
|
+
|
|
44
|
+
# @rbs (ValidationSupport::json_value data, String path,
|
|
45
|
+
# Hash[String, ValidationSupport::json_value] production) -> void
|
|
46
|
+
def validate_fields: (ValidationSupport::json_value data, String path, Hash[String, ValidationSupport::json_value] production) -> void
|
|
47
|
+
|
|
48
|
+
# @rbs (ValidationSupport::json_value data, String path, ?sorted: bool) -> Array[Integer]
|
|
49
|
+
def integer_ids: (ValidationSupport::json_value data, String path, ?sorted: bool) -> Array[Integer]
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/validator/support.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
module ValidationSupport
|
|
6
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
7
|
+
|
|
8
|
+
DIGEST: Regexp
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
# @rbs (json_value value, String path, Array[String] keys) -> Hash[String, json_value]
|
|
13
|
+
def record: (json_value value, String path, Array[String] keys) -> Hash[String, json_value]
|
|
14
|
+
|
|
15
|
+
# @rbs (json_value value, String path) -> Array[json_value]
|
|
16
|
+
def array: (json_value value, String path) -> Array[json_value]
|
|
17
|
+
|
|
18
|
+
# @rbs (json_value value, String path, ?allow_empty: bool) -> String
|
|
19
|
+
def string: (json_value value, String path, ?allow_empty: bool) -> String
|
|
20
|
+
|
|
21
|
+
# @rbs (json_value value, String path, ?minimum: Integer?) -> Integer
|
|
22
|
+
def integer: (json_value value, String path, ?minimum: Integer?) -> Integer
|
|
23
|
+
|
|
24
|
+
# @rbs (json_value value, String path) -> bool
|
|
25
|
+
def boolean: (json_value value, String path) -> bool
|
|
26
|
+
|
|
27
|
+
# @rbs [T] (T value, String path, Array[T] values) -> T
|
|
28
|
+
def enum: [T] (T value, String path, Array[T] values) -> T
|
|
29
|
+
|
|
30
|
+
# @rbs (json_value value, String path) -> String
|
|
31
|
+
def digest: (json_value value, String path) -> String
|
|
32
|
+
|
|
33
|
+
# @rbs (json_value value, String path) -> String?
|
|
34
|
+
def nullable_string: (json_value value, String path) -> String?
|
|
35
|
+
|
|
36
|
+
# @rbs (json_value value, String path, ?minimum: Integer?) -> Integer?
|
|
37
|
+
def nullable_integer: (json_value value, String path, ?minimum: Integer?) -> Integer?
|
|
38
|
+
|
|
39
|
+
# @rbs (Array[json_value] values, String path) -> void
|
|
40
|
+
def sorted_unique!: (Array[json_value] values, String path) -> void
|
|
41
|
+
|
|
42
|
+
# @rbs (String path, String message) -> bot
|
|
43
|
+
def invalid: (String path, String message) -> bot
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/validator/tables.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
class TableValidator
|
|
6
|
+
include ValidationSupport
|
|
7
|
+
|
|
8
|
+
private def integer_array: (ValidationSupport::json_value value, String path, allow_nil: false, minimum: Integer?) -> Array[Integer]
|
|
9
|
+
| (ValidationSupport::json_value value, String path, allow_nil: true, minimum: Integer?) -> Array[Integer?]
|
|
10
|
+
|
|
11
|
+
# @rbs (Hash[String, ValidationSupport::json_value] data, state_count: Integer, production_count: Integer,
|
|
12
|
+
# terminal_ids: Set[Integer], nonterminal_ids: Set[Integer], representation: String) -> void
|
|
13
|
+
def initialize: (Hash[String, ValidationSupport::json_value] data, state_count: Integer, production_count: Integer, terminal_ids: Set[Integer], nonterminal_ids: Set[Integer], representation: String) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs () -> void
|
|
16
|
+
def validate!: () -> void
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
# @rbs (ValidationSupport::json_value table) -> void
|
|
21
|
+
def validate_actions: (ValidationSupport::json_value table) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table) -> void
|
|
24
|
+
def validate_sparse_actions: (Hash[String, ValidationSupport::json_value] table) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table) -> void
|
|
27
|
+
def validate_compact_actions: (Hash[String, ValidationSupport::json_value] table) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (ValidationSupport::json_value table) -> void
|
|
30
|
+
def validate_gotos: (ValidationSupport::json_value table) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table) -> void
|
|
33
|
+
def validate_sparse_gotos: (Hash[String, ValidationSupport::json_value] table) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table) -> void
|
|
36
|
+
def validate_compact_gotos: (Hash[String, ValidationSupport::json_value] table) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table, String path) -> void
|
|
39
|
+
def validate_row_count: (Hash[String, ValidationSupport::json_value] table, String path) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table, value_key: String, path: String)
|
|
42
|
+
# { (Integer, ValidationSupport::json_value, String) -> void } -> Array[Hash[Integer, ValidationSupport::json_value]]
|
|
43
|
+
def validate_displacement: (Hash[String, ValidationSupport::json_value] table, value_key: String, path: String) { (Integer, ValidationSupport::json_value, String) -> void } -> Array[Hash[Integer, ValidationSupport::json_value]]
|
|
44
|
+
|
|
45
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table,
|
|
46
|
+
# Array[Hash[Integer, ValidationSupport::json_value]] rows, value_key: String,
|
|
47
|
+
# width_key: String, width: Integer?, dense: bool, path: String) -> void
|
|
48
|
+
def validate_canonical_displacement: (Hash[String, ValidationSupport::json_value] table, Array[Hash[Integer, ValidationSupport::json_value]] rows, value_key: String, width_key: String, width: Integer?, dense: bool, path: String) -> void
|
|
49
|
+
|
|
50
|
+
# @rbs (ValidationSupport::json_value defaults) -> void
|
|
51
|
+
def validate_defaults: (ValidationSupport::json_value defaults) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (ValidationSupport::json_value code, Integer token_id, String path) -> void
|
|
54
|
+
def validate_token_action: (ValidationSupport::json_value code, Integer token_id, String path) -> void
|
|
55
|
+
|
|
56
|
+
# @rbs (ValidationSupport::json_value code, String path) -> void
|
|
57
|
+
def validate_action_code: (ValidationSupport::json_value code, String path) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (ValidationSupport::json_value state, String path) -> void
|
|
60
|
+
def validate_state: (ValidationSupport::json_value state, String path) -> void
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact/validator.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module TableArtifact
|
|
5
|
+
# Closed structural and referential validation for untrusted sidecars.
|
|
6
|
+
class Validator
|
|
7
|
+
include ValidationSupport
|
|
8
|
+
|
|
9
|
+
ROOT_KEYS: Array[String]
|
|
10
|
+
|
|
11
|
+
PAYLOAD_KEYS: Array[String]
|
|
12
|
+
|
|
13
|
+
# @rbs (Hash[String, ValidationSupport::json_value] data) -> true
|
|
14
|
+
def self.validate!: (Hash[String, ValidationSupport::json_value] data) -> true
|
|
15
|
+
|
|
16
|
+
# @rbs (Hash[String, ValidationSupport::json_value] data) -> void
|
|
17
|
+
def initialize: (Hash[String, ValidationSupport::json_value] data) -> void
|
|
18
|
+
|
|
19
|
+
# rubocop:disable Naming/PredicateMethod -- bang denotes fail-fast validation.
|
|
20
|
+
# @rbs () -> true
|
|
21
|
+
def validate!: () -> true
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
# @rbs () -> void
|
|
26
|
+
def validate_root_identity: () -> void
|
|
27
|
+
|
|
28
|
+
# @rbs (ValidationSupport::json_value data) -> String
|
|
29
|
+
def validate_table_format: (ValidationSupport::json_value data) -> String
|
|
30
|
+
|
|
31
|
+
# @rbs (ValidationSupport::json_value data) -> void
|
|
32
|
+
def validate_source: (ValidationSupport::json_value data) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (ValidationSupport::json_value data) -> Array[Hash[String, ValidationSupport::json_value]]
|
|
35
|
+
def validate_symbols: (ValidationSupport::json_value data) -> Array[Hash[String, ValidationSupport::json_value]]
|
|
36
|
+
|
|
37
|
+
# @rbs (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> void
|
|
38
|
+
def validate_tokens: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> void
|
|
39
|
+
|
|
40
|
+
# @rbs (ValidationSupport::json_value data,
|
|
41
|
+
# Array[Hash[String, ValidationSupport::json_value]] symbols, Integer state_count) -> void
|
|
42
|
+
def validate_entries: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols, Integer state_count) -> void
|
|
43
|
+
|
|
44
|
+
# @rbs (ValidationSupport::json_value data,
|
|
45
|
+
# Array[Hash[String, ValidationSupport::json_value]] symbols) -> Array[Hash[String, ValidationSupport::json_value]]
|
|
46
|
+
def validate_productions: (ValidationSupport::json_value data, Array[Hash[String, ValidationSupport::json_value]] symbols) -> Array[Hash[String, ValidationSupport::json_value]]
|
|
47
|
+
|
|
48
|
+
# @rbs (ValidationSupport::json_value data, Hash[String, ValidationSupport::json_value] payload) -> void
|
|
49
|
+
def validate_cost: (ValidationSupport::json_value data, Hash[String, ValidationSupport::json_value] payload) -> void
|
|
50
|
+
|
|
51
|
+
# @rbs (Hash[String, ValidationSupport::json_value] payload) -> [String, String]
|
|
52
|
+
def expected_costs: (Hash[String, ValidationSupport::json_value] payload) -> [ String, String ]
|
|
53
|
+
|
|
54
|
+
# @rbs (Hash[String, ValidationSupport::json_value] table, String values_key) -> Integer
|
|
55
|
+
def occupied: (Hash[String, ValidationSupport::json_value] table, String values_key) -> Integer
|
|
56
|
+
|
|
57
|
+
# @rbs (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
|
|
58
|
+
def symbol_ids: (Array[Hash[String, ValidationSupport::json_value]] symbols, String kind) -> Set[Integer]
|
|
59
|
+
|
|
60
|
+
# @rbs (Hash[String, ValidationSupport::json_value] identity,
|
|
61
|
+
# Hash[String, ValidationSupport::json_value] payload, String identity_name,
|
|
62
|
+
# String payload_name) -> void
|
|
63
|
+
def validate_named_digest: (Hash[String, ValidationSupport::json_value] identity, Hash[String, ValidationSupport::json_value] payload, String identity_name, String payload_name) -> void
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Generated from lib/ibex/table_artifact.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Experimental data-only authority for executable parser tables.
|
|
5
|
+
module TableArtifact
|
|
6
|
+
interface _Reader
|
|
7
|
+
def read: (Integer length) -> String?
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
ARTIFACT_TYPE: String
|
|
11
|
+
|
|
12
|
+
SCHEMA_VERSION: Integer
|
|
13
|
+
|
|
14
|
+
DEFAULT_MAX_BYTES: Integer
|
|
15
|
+
|
|
16
|
+
class ValidationError < Ibex::Error
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @rbs (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
|
|
20
|
+
# ?omit_action_call: bool?) -> Document
|
|
21
|
+
def self.build: (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?) -> Document
|
|
22
|
+
|
|
23
|
+
# @rbs (String | _Reader source, ?max_bytes: Integer) -> Document
|
|
24
|
+
def self.load: (String | _Reader source, ?max_bytes: Integer) -> Document
|
|
25
|
+
|
|
26
|
+
# @rbs (untyped source, Integer max_bytes) -> String
|
|
27
|
+
private def self.read_bounded: (untyped source, Integer max_bytes) -> String
|
|
28
|
+
|
|
29
|
+
# @rbs (_Reader source, Integer max_bytes) -> String
|
|
30
|
+
private def self.read_from: (_Reader source, Integer max_bytes) -> String
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -4,6 +4,10 @@ module Ibex
|
|
|
4
4
|
module TableSimulation
|
|
5
5
|
# Final immutable simulation document.
|
|
6
6
|
class Result
|
|
7
|
+
type step_document = Hash[String, Step::document_value]
|
|
8
|
+
|
|
9
|
+
type document_value = String | Integer | Array[String] | Array[step_document]
|
|
10
|
+
|
|
7
11
|
IDENTIFIER: String
|
|
8
12
|
|
|
9
13
|
SCHEMA_VERSION: Integer
|
|
@@ -22,11 +26,11 @@ module Ibex
|
|
|
22
26
|
# steps: Array[Step]) -> void
|
|
23
27
|
def initialize: (grammar_digest: String, algorithm: String, tokens: Array[String], status: Symbol, steps: Array[Step]) -> void
|
|
24
28
|
|
|
25
|
-
# @rbs () -> Hash[String,
|
|
26
|
-
def to_h: () -> Hash[String,
|
|
29
|
+
# @rbs () -> Hash[String, document_value]
|
|
30
|
+
def to_h: () -> Hash[String, document_value]
|
|
27
31
|
|
|
28
|
-
# @rbs (*
|
|
29
|
-
def to_json: (*
|
|
32
|
+
# @rbs (*Object?) -> String
|
|
33
|
+
def to_json: (*Object?) -> String
|
|
30
34
|
end
|
|
31
35
|
end
|
|
32
36
|
end
|
|
@@ -4,6 +4,8 @@ module Ibex
|
|
|
4
4
|
module TableSimulation
|
|
5
5
|
# One immutable parser-table action.
|
|
6
6
|
class Step
|
|
7
|
+
type document_value = String | Integer | nil
|
|
8
|
+
|
|
7
9
|
attr_reader sequence: Integer
|
|
8
10
|
|
|
9
11
|
attr_reader state: Integer
|
|
@@ -33,8 +35,8 @@ module Ibex
|
|
|
33
35
|
# target_state: Integer?, stack_depth_before: Integer, stack_depth_after: Integer) -> void
|
|
34
36
|
def initialize: (sequence: Integer, state: Integer, token_id: Integer, token: String, action: String, action_source: String, production_id: Integer?, lhs: String?, rhs_length: Integer?, target_state: Integer?, stack_depth_before: Integer, stack_depth_after: Integer) -> void
|
|
35
37
|
|
|
36
|
-
# @rbs () -> Hash[String,
|
|
37
|
-
def to_h: () -> Hash[String,
|
|
38
|
+
# @rbs () -> Hash[String, document_value]
|
|
39
|
+
def to_h: () -> Hash[String, document_value]
|
|
38
40
|
end
|
|
39
41
|
end
|
|
40
42
|
end
|
data/sig/ibex/tables.rbs
CHANGED
|
@@ -3,19 +3,20 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
# Parser table construction and row-displacement compression.
|
|
5
5
|
module Tables
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
private def self.runtime_action: (IR::parser_action action) -> IR::runtime_action
|
|
6
|
+
type action_table = Array[Hash[Integer, IR::runtime_action]] | CompactActions
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
attr_accessor actions(): untyped
|
|
8
|
+
type goto_table = Array[Hash[Integer, Integer]] | Compact
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
private def runtime_action: (IR::parser_action action) -> IR::runtime_action
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
private def self.runtime_action: (IR::parser_action action) -> IR::runtime_action
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
class TableSet < Struct[Object?]
|
|
15
|
+
attr_accessor actions: action_table
|
|
16
|
+
attr_accessor gotos: goto_table
|
|
17
|
+
attr_accessor default_actions: Array[IR::runtime_action?]
|
|
18
|
+
def self.new: (?actions: action_table, ?gotos: goto_table, ?default_actions: Array[IR::runtime_action?]) -> instance
|
|
19
|
+
| ({ ?actions: action_table, ?gotos: goto_table, ?default_actions: Array[IR::runtime_action?] }) -> instance
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
# @rbs (IR::Automaton automaton, ?format: Symbol | String) -> TableSet
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated from lib/ibex/verifiable_generation_bundle.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Explicitly renders and publishes one manifest-bound verification bundle.
|
|
5
|
+
class VerifiableGenerationBundle
|
|
6
|
+
# rubocop:disable Metrics/ParameterLists -- persisted artifact paths and verification bounds are explicit inputs.
|
|
7
|
+
# @rbs (IR::Automaton automaton, wrapper_path: String, wrapper_source: String,
|
|
8
|
+
# table_path: String, report_path: String, manifest_path: String,
|
|
9
|
+
# source_records: Array[GenerationInput], ?manifest_options: Hash[String, Object?],
|
|
10
|
+
# ?wrapper_mode: Integer?, ?representation: Symbol | String, ?cst_trivia: Symbol | String?,
|
|
11
|
+
# ?omit_action_call: bool?, ?strict: bool, ?max_states: Integer, ?max_items: Integer) -> void
|
|
12
|
+
def initialize: (IR::Automaton automaton, wrapper_path: String, wrapper_source: String, table_path: String, report_path: String, manifest_path: String, source_records: Array[GenerationInput], ?manifest_options: Hash[String, Object?], ?wrapper_mode: Integer?, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?, ?strict: bool, ?max_states: Integer, ?max_items: Integer) -> void
|
|
13
|
+
|
|
14
|
+
# Render table, wrapper, and report before the non-cyclic manifest marker.
|
|
15
|
+
# @rbs () -> ArtifactSet
|
|
16
|
+
def render: () -> ArtifactSet
|
|
17
|
+
|
|
18
|
+
# @rbs (?warning: ^(String) -> void, ?stability_check: ^() -> bool) -> ArtifactSet
|
|
19
|
+
def publish: (?warning: ^(String) -> void, ?stability_check: ^() -> bool) -> ArtifactSet
|
|
20
|
+
|
|
21
|
+
# @rbs (String manifest_path) -> Hash[String, VerificationReport::Validator::json_value]
|
|
22
|
+
def self.validate_file: (String manifest_path) -> Hash[String, VerificationReport::Validator::json_value]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Generated from lib/ibex/verification_report/builder.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module VerificationReport
|
|
5
|
+
# Builds deterministic evidence from an Automaton IR verification run.
|
|
6
|
+
class Builder
|
|
7
|
+
type json_value = String | Integer | Float | bool | nil | Array[json_value] | Hash[String, json_value]
|
|
8
|
+
|
|
9
|
+
# @rbs (IR::Automaton automaton, table: TableArtifact::Document,
|
|
10
|
+
# source_records: Array[GenerationInput], table_path: String, strict: bool,
|
|
11
|
+
# max_states: Integer, max_items: Integer) -> void
|
|
12
|
+
def initialize: (IR::Automaton automaton, table: TableArtifact::Document, source_records: Array[GenerationInput], table_path: String, strict: bool, max_states: Integer, max_items: Integer) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs () -> String
|
|
15
|
+
def render: () -> String
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
20
|
+
def bounds: () -> Hash[Symbol, Integer]
|
|
21
|
+
|
|
22
|
+
# @rbs () -> Array[String]
|
|
23
|
+
def requested_checks: () -> Array[String]
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Hash[String, json_value]
|
|
26
|
+
def verification_outcome: () -> Hash[String, json_value]
|
|
27
|
+
|
|
28
|
+
# @rbs () -> Hash[String, json_value]
|
|
29
|
+
def input_identity: () -> Hash[String, json_value]
|
|
30
|
+
|
|
31
|
+
# @rbs () -> Hash[String, json_value]
|
|
32
|
+
def ir_identity: () -> Hash[String, json_value]
|
|
33
|
+
|
|
34
|
+
# @rbs () -> Hash[String, json_value]
|
|
35
|
+
def table_identity: () -> Hash[String, json_value]
|
|
36
|
+
|
|
37
|
+
# @rbs () -> void
|
|
38
|
+
def validate_table_identity!: () -> void
|
|
39
|
+
|
|
40
|
+
# @rbs () -> String
|
|
41
|
+
def grammar_digest: () -> String
|
|
42
|
+
|
|
43
|
+
# @rbs () -> String
|
|
44
|
+
def automaton_digest: () -> String
|
|
45
|
+
|
|
46
|
+
# @rbs (String digest) -> String
|
|
47
|
+
def prefixed_digest: (String digest) -> String
|
|
48
|
+
|
|
49
|
+
# @rbs (Hash[Symbol, String] value) -> Hash[String, String]
|
|
50
|
+
def stringify_keys: (Hash[Symbol, String] value) -> Hash[String, String]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|