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
|
@@ -11,8 +11,8 @@ module Ibex
|
|
|
11
11
|
# @rbs (IR::Grammar grammar, ?generated_action_abi: GeneratedActionABI::Cache?) -> void
|
|
12
12
|
def initialize: (IR::Grammar grammar, ?generated_action_abi: GeneratedActionABI::Cache?) -> void
|
|
13
13
|
|
|
14
|
-
# @rbs (IR::Production production,
|
|
15
|
-
def composed_fragment_method_source: (IR::Production production,
|
|
14
|
+
# @rbs (IR::Production production, IR::action_composition_step step, Integer index) -> String
|
|
15
|
+
def composed_fragment_method_source: (IR::Production production, IR::action_composition_step step, Integer index) -> String
|
|
16
16
|
|
|
17
17
|
# @rbs (IR::Production production, Integer index) -> String
|
|
18
18
|
def composed_fragment_name: (IR::Production production, Integer index) -> String
|
|
@@ -43,8 +43,8 @@ module Ibex
|
|
|
43
43
|
# @rbs (Array[String] lines, production: IR::Production) -> void
|
|
44
44
|
def append_direct_parameter_values: (Array[String] lines, production: IR::Production) -> void
|
|
45
45
|
|
|
46
|
-
# @rbs (
|
|
47
|
-
def composed_semantic_code: (
|
|
46
|
+
# @rbs (IR::action_composition_step step) -> String
|
|
47
|
+
def composed_semantic_code: (IR::action_composition_step step) -> String
|
|
48
48
|
|
|
49
49
|
# @rbs (String source, Array[IR::named_ref] named_refs) -> void
|
|
50
50
|
def append_named_values: (String source, Array[IR::named_ref] named_refs) -> void
|
|
@@ -4,7 +4,21 @@ module Ibex
|
|
|
4
4
|
module Codegen
|
|
5
5
|
type explain_selection = { state: IR::AutomatonState, conflict: IR::conflict, conflict_index: Integer }
|
|
6
6
|
|
|
7
|
-
type explain_entry = { state: IR::AutomatonState, conflict: IR::conflict, example:
|
|
7
|
+
type explain_entry = { state: IR::AutomatonState, conflict: IR::conflict, example: LALR::search_counterexample }
|
|
8
|
+
|
|
9
|
+
type explain_token = { name: String, display_name: String?, label: String, ?query: String }
|
|
10
|
+
|
|
11
|
+
type explain_alternative = { kind: String, ?state: Integer, ?production: Integer }
|
|
12
|
+
|
|
13
|
+
type explain_search = { status: String, explored: Integer, exhausted: bool, bounds: Hash[Symbol, Integer] }
|
|
14
|
+
|
|
15
|
+
type explain_tree_node = { ?symbol: explain_token, ?token: explain_token, ?production: Integer, ?children: Array[explain_tree] }
|
|
16
|
+
|
|
17
|
+
type explain_tree = untyped
|
|
18
|
+
|
|
19
|
+
type explain_interpretation = Hash[Symbol, untyped]
|
|
20
|
+
|
|
21
|
+
type string_value = String | Integer | Symbol
|
|
8
22
|
|
|
9
23
|
# Renders a selected conflict explanation from Automaton IR and counterexamples.
|
|
10
24
|
# rubocop:disable Metrics/ClassLength -- inline contracts and two stable output formats stay near selection policy.
|
|
@@ -15,8 +29,8 @@ module Ibex
|
|
|
15
29
|
# ?max_configurations: Integer) -> void
|
|
16
30
|
def initialize: (IR::Automaton automaton, ?state: Integer?, ?token: String?, ?max_tokens: Integer, ?max_configurations: Integer) -> void
|
|
17
31
|
|
|
18
|
-
# @rbs () -> Hash[Symbol,
|
|
19
|
-
def to_h: () -> Hash[Symbol,
|
|
32
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
33
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
20
34
|
|
|
21
35
|
# @rbs () -> String
|
|
22
36
|
def render_text: () -> String
|
|
@@ -35,26 +49,32 @@ module Ibex
|
|
|
35
49
|
# @rbs () -> Array[explain_selection]
|
|
36
50
|
def selected_conflicts: () -> Array[explain_selection]
|
|
37
51
|
|
|
38
|
-
# @rbs (explain_entry entry) -> Hash[Symbol,
|
|
39
|
-
def conflict_document: (explain_entry entry) -> Hash[Symbol,
|
|
52
|
+
# @rbs (explain_entry entry) -> Hash[Symbol, Object?]
|
|
53
|
+
def conflict_document: (explain_entry entry) -> Hash[Symbol, Object?]
|
|
54
|
+
|
|
55
|
+
# @rbs (LALR::search_counterexample example) -> String
|
|
56
|
+
def witness_kind: (LALR::search_counterexample example) -> String
|
|
57
|
+
|
|
58
|
+
# @rbs (LALR::search_outcome outcome) -> explain_search
|
|
59
|
+
def search_document: (LALR::search_outcome outcome) -> explain_search
|
|
40
60
|
|
|
41
|
-
# @rbs (IR::conflict conflict) -> Array[
|
|
42
|
-
def conflict_alternatives: (IR::conflict conflict) -> Array[
|
|
61
|
+
# @rbs (IR::conflict conflict) -> Array[explain_alternative]
|
|
62
|
+
def conflict_alternatives: (IR::conflict conflict) -> Array[explain_alternative]
|
|
43
63
|
|
|
44
|
-
# @rbs (IR::interpretation interpretation) ->
|
|
45
|
-
def interpretation_document: (IR::interpretation interpretation) ->
|
|
64
|
+
# @rbs (IR::interpretation interpretation) -> explain_interpretation
|
|
65
|
+
def interpretation_document: (IR::interpretation interpretation) -> explain_interpretation
|
|
46
66
|
|
|
47
|
-
# @rbs (
|
|
48
|
-
def tree_document: (
|
|
67
|
+
# @rbs (explain_tree tree) -> explain_tree
|
|
68
|
+
def tree_document: (explain_tree tree) -> explain_tree
|
|
49
69
|
|
|
50
|
-
# @rbs (Hash[Symbol,
|
|
51
|
-
def string_values: (Hash[Symbol,
|
|
70
|
+
# @rbs (Hash[Symbol, string_value] value) -> Hash[Symbol, string_value]
|
|
71
|
+
def string_values: (Hash[Symbol, string_value] value) -> Hash[Symbol, string_value]
|
|
52
72
|
|
|
53
|
-
# @rbs (String name) ->
|
|
54
|
-
def symbol_reference: (String name) ->
|
|
73
|
+
# @rbs (String name) -> explain_token
|
|
74
|
+
def symbol_reference: (String name) -> explain_token
|
|
55
75
|
|
|
56
|
-
# @rbs (IR::GrammarSymbol symbol, ?query: String?) ->
|
|
57
|
-
def token_reference: (IR::GrammarSymbol symbol, ?query: String?) ->
|
|
76
|
+
# @rbs (IR::GrammarSymbol symbol, ?query: String?) -> explain_token
|
|
77
|
+
def token_reference: (IR::GrammarSymbol symbol, ?query: String?) -> explain_token
|
|
58
78
|
|
|
59
79
|
# @rbs (Array[String] lines, explain_entry entry, Integer number) -> void
|
|
60
80
|
def append_conflict: (Array[String] lines, explain_entry entry, Integer number) -> void
|
|
@@ -63,17 +83,17 @@ module Ibex
|
|
|
63
83
|
def append_midrule_origins: (Array[String] lines, IR::conflict conflict) -> void
|
|
64
84
|
|
|
65
85
|
# @rbs (Array[String] lines, IR::AutomatonState state, IR::conflict conflict,
|
|
66
|
-
#
|
|
67
|
-
def append_witness_steps: (Array[String] lines, IR::AutomatonState state, IR::conflict conflict,
|
|
86
|
+
# LALR::search_counterexample example) -> void
|
|
87
|
+
def append_witness_steps: (Array[String] lines, IR::AutomatonState state, IR::conflict conflict, LALR::search_counterexample example) -> void
|
|
68
88
|
|
|
69
|
-
# @rbs (Array[String] lines,
|
|
70
|
-
def append_interpretations: (Array[String] lines,
|
|
89
|
+
# @rbs (Array[String] lines, LALR::search_counterexample example) -> void
|
|
90
|
+
def append_interpretations: (Array[String] lines, LALR::search_counterexample example) -> void
|
|
71
91
|
|
|
72
|
-
# @rbs (
|
|
73
|
-
def alternative_text: (
|
|
92
|
+
# @rbs (explain_alternative alternative) -> String
|
|
93
|
+
def alternative_text: (explain_alternative alternative) -> String
|
|
74
94
|
|
|
75
|
-
# @rbs (Array[String] lines,
|
|
76
|
-
def append_tree: (Array[String] lines,
|
|
95
|
+
# @rbs (Array[String] lines, explain_tree tree, String prefix, String connector) -> void
|
|
96
|
+
def append_tree: (Array[String] lines, explain_tree tree, String prefix, String connector) -> void
|
|
77
97
|
|
|
78
98
|
# @rbs (IR::GrammarSymbol symbol, ?query: String?) -> String
|
|
79
99
|
def token_label: (IR::GrammarSymbol symbol, ?query: String?) -> String
|
|
@@ -6,6 +6,10 @@ module Ibex
|
|
|
6
6
|
# action's declared inputs.
|
|
7
7
|
# rubocop:disable Metrics/ModuleLength -- ABI proof and source rewriting must evolve together.
|
|
8
8
|
module GeneratedActionABI
|
|
9
|
+
type ripper_token = [ [ Integer, Integer ], Symbol, String, Integer ]
|
|
10
|
+
|
|
11
|
+
type sexp_value = Symbol | String | Integer | nil | Array[sexp_value]
|
|
12
|
+
|
|
9
13
|
LEGACY_PARAMETERS: Array[String]
|
|
10
14
|
|
|
11
15
|
SIMPLE_POSITIONAL_READ: Regexp
|
|
@@ -76,26 +80,26 @@ module Ibex
|
|
|
76
80
|
# @rbs (String source, Array[String] parameters) -> String?
|
|
77
81
|
def self?.simple_indexed_positional_action_source: (String source, Array[String] parameters) -> String?
|
|
78
82
|
|
|
79
|
-
# @rbs (Array[
|
|
80
|
-
def self?.rewrite_positional_values: (Array[
|
|
83
|
+
# @rbs (Array[ripper_token] tokens, Array[String] parameters) -> String?
|
|
84
|
+
def self?.rewrite_positional_values: (Array[ripper_token] tokens, Array[String] parameters) -> String?
|
|
81
85
|
|
|
82
|
-
# @rbs (Array[
|
|
83
|
-
def self?.positional_value_reference: (Array[
|
|
86
|
+
# @rbs (Array[ripper_token] tokens, Integer index, Array[String] parameters) -> [String, Integer]?
|
|
87
|
+
def self?.positional_value_reference: (Array[ripper_token] tokens, Integer index, Array[String] parameters) -> [ String, Integer ]?
|
|
84
88
|
|
|
85
|
-
# @rbs (Array[
|
|
86
|
-
def self?.receiver_before_value?: (Array[
|
|
89
|
+
# @rbs (Array[ripper_token] tokens, Integer index) -> bool
|
|
90
|
+
def self?.receiver_before_value?: (Array[ripper_token] tokens, Integer index) -> bool
|
|
87
91
|
|
|
88
92
|
# @rbs (String source) -> bool
|
|
89
93
|
def self?.references_legacy_parameter?: (String source) -> bool
|
|
90
94
|
|
|
91
|
-
# @rbs (
|
|
92
|
-
def self?.read_only_value_references?: (
|
|
95
|
+
# @rbs (sexp_value node, ?sexp_value parent, ?Integer? child_index) -> bool
|
|
96
|
+
def self?.read_only_value_references?: (sexp_value node, ?sexp_value parent, ?Integer? child_index) -> bool
|
|
93
97
|
|
|
94
98
|
# @rbs (untyped node) -> bool
|
|
95
99
|
def self?.value_reference?: (untyped node) -> bool
|
|
96
100
|
|
|
97
|
-
# @rbs (
|
|
98
|
-
def self?.safe_value_reference?: (
|
|
101
|
+
# @rbs (sexp_value? parent, Integer? child_index) -> bool
|
|
102
|
+
def self?.safe_value_reference?: (sexp_value? parent, Integer? child_index) -> bool
|
|
99
103
|
end
|
|
100
104
|
end
|
|
101
105
|
end
|
data/sig/ibex/codegen/rbs.rbs
CHANGED
|
@@ -5,6 +5,8 @@ module Ibex
|
|
|
5
5
|
# Generates an RBS declaration for the public surface of a generated parser.
|
|
6
6
|
# rubocop:disable Metrics/ClassLength -- one generator owns the complete parser signature.
|
|
7
7
|
class RBS
|
|
8
|
+
type syntax_definition = { name: String, kind: Integer, fields: Hash[String, CSTMetadata::field_slot] }
|
|
9
|
+
|
|
8
10
|
@generated_action_abi: GeneratedActionABI::Cache
|
|
9
11
|
|
|
10
12
|
@omit_action_call: bool
|
|
@@ -29,20 +31,20 @@ module Ibex
|
|
|
29
31
|
# @rbs (Array[String] lines) -> void
|
|
30
32
|
def append_syntax_contract: (Array[String] lines) -> void
|
|
31
33
|
|
|
32
|
-
# @rbs () -> Hash[String,
|
|
33
|
-
def syntax_node_definitions: () -> Hash[String,
|
|
34
|
+
# @rbs () -> Hash[String, syntax_definition]
|
|
35
|
+
def syntax_node_definitions: () -> Hash[String, syntax_definition]
|
|
34
36
|
|
|
35
|
-
# @rbs (Hash[String,
|
|
36
|
-
def merge_syntax_fields: (Hash[String,
|
|
37
|
+
# @rbs (Hash[String, CSTMetadata::field_slot] left, Hash[String, CSTMetadata::field_slot] right) -> Hash[String, CSTMetadata::field_slot]
|
|
38
|
+
def merge_syntax_fields: (Hash[String, CSTMetadata::field_slot] left, Hash[String, CSTMetadata::field_slot] right) -> Hash[String, CSTMetadata::field_slot]
|
|
37
39
|
|
|
38
|
-
# @rbs (Array[String] lines,
|
|
39
|
-
def append_syntax_node_contract: (Array[String] lines,
|
|
40
|
+
# @rbs (Array[String] lines, syntax_definition definition) -> void
|
|
41
|
+
def append_syntax_node_contract: (Array[String] lines, syntax_definition definition) -> void
|
|
40
42
|
|
|
41
43
|
# @rbs (String node_name, Integer index) -> String
|
|
42
44
|
def syntax_field_type: (String node_name, Integer index) -> String
|
|
43
45
|
|
|
44
|
-
# @rbs (Array[String] lines, Hash[String,
|
|
45
|
-
def append_repetition_contracts: (Array[String] lines, Hash[String,
|
|
46
|
+
# @rbs (Array[String] lines, Hash[String, CSTMetadata::field_slot] fields) -> void
|
|
47
|
+
def append_repetition_contracts: (Array[String] lines, Hash[String, CSTMetadata::field_slot] fields) -> void
|
|
46
48
|
|
|
47
49
|
# @rbs () -> Hash[String, IR::node_annotation]
|
|
48
50
|
def ast_node_definitions: () -> Hash[String, IR::node_annotation]
|
|
@@ -86,8 +88,8 @@ module Ibex
|
|
|
86
88
|
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
87
89
|
def append_composed_fragment_signatures: (Array[String] lines, IR::Production production) -> void
|
|
88
90
|
|
|
89
|
-
# @rbs (IR::Production production,
|
|
90
|
-
def composition_slot_type: (IR::Production production,
|
|
91
|
+
# @rbs (IR::Production production, IR::action_composition_plan plan, Integer slot, Integer step_index) -> String
|
|
92
|
+
def composition_slot_type: (IR::Production production, IR::action_composition_plan plan, Integer slot, Integer step_index) -> String
|
|
91
93
|
|
|
92
94
|
# @rbs (IR::Production production) -> bool
|
|
93
95
|
def action_method?: (IR::Production production) -> bool
|
data/sig/ibex/codegen/report.rbs
CHANGED
|
@@ -4,17 +4,17 @@ module Ibex
|
|
|
4
4
|
module Codegen
|
|
5
5
|
# Renders a human-readable state and conflict report from Automaton IR.
|
|
6
6
|
module Report
|
|
7
|
-
private def append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[
|
|
7
|
+
private def append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[LALR::search_counterexample] examples, Hash[Integer, String] labels) -> void
|
|
8
8
|
|
|
9
|
-
private def self.append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[
|
|
9
|
+
private def self.append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[LALR::search_counterexample] examples, Hash[Integer, String] labels) -> void
|
|
10
10
|
|
|
11
|
-
private def append_counterexample: (Array[String] lines,
|
|
11
|
+
private def append_counterexample: (Array[String] lines, LALR::search_counterexample example, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
12
12
|
|
|
13
|
-
private def self.append_counterexample: (Array[String] lines,
|
|
13
|
+
private def self.append_counterexample: (Array[String] lines, LALR::search_counterexample example, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
14
14
|
|
|
15
|
-
private def append_tree: (Array[String] lines,
|
|
15
|
+
private def append_tree: (Array[String] lines, Object? tree, String indentation, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
16
16
|
|
|
17
|
-
private def self.append_tree: (Array[String] lines,
|
|
17
|
+
private def self.append_tree: (Array[String] lines, Object? tree, String indentation, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
18
18
|
|
|
19
19
|
private def format_item: (IR::AutomatonItem item, IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
20
20
|
|
|
@@ -28,17 +28,17 @@ module Ibex
|
|
|
28
28
|
|
|
29
29
|
private def self.symbol_name: (Hash[Integer, String] labels, Integer id) -> String
|
|
30
30
|
|
|
31
|
-
private def tree_label: (IR::Grammar grammar, Hash[Integer, String] labels,
|
|
31
|
+
private def tree_label: (IR::Grammar grammar, Hash[Integer, String] labels, Object? value) -> Object?
|
|
32
32
|
|
|
33
|
-
private def self.tree_label: (IR::Grammar grammar, Hash[Integer, String] labels,
|
|
33
|
+
private def self.tree_label: (IR::Grammar grammar, Hash[Integer, String] labels, Object? value) -> Object?
|
|
34
34
|
|
|
35
|
-
private def display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol,
|
|
35
|
+
private def display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, Object?]
|
|
36
36
|
|
|
37
|
-
private def self.display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol,
|
|
37
|
+
private def self.display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, Object?]
|
|
38
38
|
|
|
39
|
-
private def format_value: (
|
|
39
|
+
private def format_value: (Object? value) -> String
|
|
40
40
|
|
|
41
|
-
private def self.format_value: (
|
|
41
|
+
private def self.format_value: (Object? value) -> String
|
|
42
42
|
|
|
43
43
|
# @rbs (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
|
|
44
44
|
def self?.render: (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
|
data/sig/ibex/codegen/ruby.rbs
CHANGED
|
@@ -19,8 +19,6 @@ module Ibex
|
|
|
19
19
|
|
|
20
20
|
include RubySyntax
|
|
21
21
|
|
|
22
|
-
EMBEDDED_RUNTIME_SOURCES: Array[String]
|
|
23
|
-
|
|
24
22
|
@automaton: IR::Automaton
|
|
25
23
|
|
|
26
24
|
@grammar: IR::Grammar
|
|
@@ -60,12 +58,17 @@ module Ibex
|
|
|
60
58
|
|
|
61
59
|
private
|
|
62
60
|
|
|
61
|
+
# @rbs () -> void
|
|
62
|
+
def reject_foreign_actions: () -> void
|
|
63
|
+
|
|
64
|
+
# Kept local so the generic generator does not load the optional Bison
|
|
65
|
+
# importer and its IR validation graph.
|
|
66
|
+
# @rbs () -> String
|
|
67
|
+
def foreign_action_sentinel: () -> String
|
|
68
|
+
|
|
63
69
|
# @rbs (Array[String] lines) -> void
|
|
64
70
|
def append_runtime: (Array[String] lines) -> void
|
|
65
71
|
|
|
66
|
-
# @rbs (String relative_path) -> String
|
|
67
|
-
def embedded_source: (String relative_path) -> String
|
|
68
|
-
|
|
69
72
|
# @rbs (Array[String] lines) -> void
|
|
70
73
|
def append_tables: (Array[String] lines) -> void
|
|
71
74
|
|
|
@@ -84,20 +87,20 @@ module Ibex
|
|
|
84
87
|
# @rbs () -> bool
|
|
85
88
|
def shareable_parser_tables?: () -> bool
|
|
86
89
|
|
|
87
|
-
# @rbs () ->
|
|
88
|
-
def cst_metadata: () ->
|
|
90
|
+
# @rbs () -> CSTMetadata::metadata
|
|
91
|
+
def cst_metadata: () -> CSTMetadata::metadata
|
|
89
92
|
|
|
90
|
-
# @rbs (
|
|
91
|
-
def deep_frozen_literal: (
|
|
93
|
+
# @rbs (Object? value) -> String
|
|
94
|
+
def deep_frozen_literal: (Object? value) -> String
|
|
92
95
|
|
|
93
|
-
# @rbs (
|
|
94
|
-
def table_literal: (
|
|
96
|
+
# @rbs (Object? table) -> String
|
|
97
|
+
def table_literal: (Object? table) -> String
|
|
95
98
|
|
|
96
|
-
# @rbs (Array[
|
|
97
|
-
def packed_integers_literal: (Array[
|
|
99
|
+
# @rbs (Array[untyped] values) -> String
|
|
100
|
+
def packed_integers_literal: (Array[untyped] values) -> String
|
|
98
101
|
|
|
99
|
-
# @rbs (Array[
|
|
100
|
-
def packed_signed_integers_literal: (Array[
|
|
102
|
+
# @rbs (Array[untyped] values) -> String
|
|
103
|
+
def packed_signed_integers_literal: (Array[untyped] values) -> String
|
|
101
104
|
|
|
102
105
|
# @rbs () -> String
|
|
103
106
|
def token_ids_literal: () -> String
|
|
@@ -23,17 +23,17 @@ module Ibex
|
|
|
23
23
|
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
24
24
|
def append_composed_action_method: (Array[String] lines, IR::Production production) -> void
|
|
25
25
|
|
|
26
|
-
# @rbs (Array[String] lines, IR::Production production,
|
|
27
|
-
def append_composed_fragment_method: (Array[String] lines, IR::Production production,
|
|
26
|
+
# @rbs (Array[String] lines, IR::Production production, IR::action_composition_step step, Integer index) -> void
|
|
27
|
+
def append_composed_fragment_method: (Array[String] lines, IR::Production production, IR::action_composition_step step, Integer index) -> void
|
|
28
28
|
|
|
29
29
|
# @rbs (IR::Production production, Integer index) -> String
|
|
30
30
|
def composed_fragment_name: (IR::Production production, Integer index) -> String
|
|
31
31
|
|
|
32
|
-
# @rbs (Array[String] lines, IR::Production production,
|
|
33
|
-
def append_composed_orchestrator: (Array[String] lines, IR::Production production,
|
|
32
|
+
# @rbs (Array[String] lines, IR::Production production, IR::action_composition_plan plan) -> void
|
|
33
|
+
def append_composed_orchestrator: (Array[String] lines, IR::Production production, IR::action_composition_plan plan) -> void
|
|
34
34
|
|
|
35
|
-
# @rbs (Array[String] lines, IR::Production production,
|
|
36
|
-
def append_composed_step: (Array[String] lines, IR::Production production,
|
|
35
|
+
# @rbs (Array[String] lines, IR::Production production, IR::action_composition_step step, Integer index) -> void
|
|
36
|
+
def append_composed_step: (Array[String] lines, IR::Production production, IR::action_composition_step step, Integer index) -> void
|
|
37
37
|
|
|
38
38
|
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
39
39
|
def append_compiled_action_method: (Array[String] lines, IR::Production production) -> void
|
|
@@ -4,22 +4,24 @@ module Ibex
|
|
|
4
4
|
module Codegen
|
|
5
5
|
# Generates typed Red syntax views from @node metadata.
|
|
6
6
|
module RubySyntax
|
|
7
|
+
type syntax_definition = Hash[Symbol, untyped]
|
|
8
|
+
|
|
7
9
|
private
|
|
8
10
|
|
|
9
11
|
# @rbs (Array[String] lines) -> void
|
|
10
12
|
def append_syntax: (Array[String] lines) -> void
|
|
11
13
|
|
|
12
|
-
# @rbs () -> Hash[String,
|
|
13
|
-
def syntax_node_definitions: () -> Hash[String,
|
|
14
|
+
# @rbs () -> Hash[String, syntax_definition]
|
|
15
|
+
def syntax_node_definitions: () -> Hash[String, syntax_definition]
|
|
14
16
|
|
|
15
|
-
# @rbs (Hash[String,
|
|
16
|
-
def merge_syntax_fields: (Hash[String,
|
|
17
|
+
# @rbs (Hash[String, CSTMetadata::field_slot] left, Hash[String, CSTMetadata::field_slot] right) -> Hash[String, CSTMetadata::field_slot]
|
|
18
|
+
def merge_syntax_fields: (Hash[String, CSTMetadata::field_slot] left, Hash[String, CSTMetadata::field_slot] right) -> Hash[String, CSTMetadata::field_slot]
|
|
17
19
|
|
|
18
|
-
# @rbs (Array[String] lines,
|
|
19
|
-
def append_syntax_node: (Array[String] lines,
|
|
20
|
+
# @rbs (Array[String] lines, syntax_definition definition) -> void
|
|
21
|
+
def append_syntax_node: (Array[String] lines, syntax_definition definition) -> void
|
|
20
22
|
|
|
21
|
-
# @rbs (Array[String] lines, Hash[String,
|
|
22
|
-
def append_repetition_accessors: (Array[String] lines, Hash[String,
|
|
23
|
+
# @rbs (Array[String] lines, Hash[String, CSTMetadata::field_slot] fields) -> void
|
|
24
|
+
def append_repetition_accessors: (Array[String] lines, Hash[String, CSTMetadata::field_slot] fields) -> void
|
|
23
25
|
end
|
|
24
26
|
end
|
|
25
27
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from lib/ibex/configuration/analysis_grammar.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Configuration
|
|
5
|
+
# Produces an immutable Grammar IR view suitable for an explicitly
|
|
6
|
+
# noncanonical analysis algorithm. The source-owned contract remains the
|
|
7
|
+
# authority; callers must report the override through Configuration::Value.
|
|
8
|
+
module AnalysisGrammar
|
|
9
|
+
# @rbs (IR::Grammar grammar, Symbol algorithm) -> IR::Grammar
|
|
10
|
+
def self?.for_algorithm: (IR::Grammar grammar, Symbol algorithm) -> IR::Grammar
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Generated from lib/ibex/configuration/explanation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Configuration
|
|
5
|
+
# One observed configuration source and how it participated in selection.
|
|
6
|
+
class Evidence
|
|
7
|
+
STATUSES: Array[Symbol]
|
|
8
|
+
|
|
9
|
+
SOURCES: Array[Symbol]
|
|
10
|
+
|
|
11
|
+
attr_reader key: Key
|
|
12
|
+
|
|
13
|
+
attr_reader source: Symbol
|
|
14
|
+
|
|
15
|
+
attr_reader value: config_value
|
|
16
|
+
|
|
17
|
+
attr_reader status: Symbol
|
|
18
|
+
|
|
19
|
+
attr_reader location: Location?
|
|
20
|
+
|
|
21
|
+
attr_reader reason: String
|
|
22
|
+
|
|
23
|
+
# @rbs (Key key, source: Symbol, value: config_value, status: Symbol, reason: String,
|
|
24
|
+
# ?location: Location?) -> void
|
|
25
|
+
def initialize: (Key key, source: Symbol, value: config_value, status: Symbol, reason: String, ?location: Location?) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs () -> Hash[String, json_value]
|
|
28
|
+
def to_h: () -> Hash[String, json_value]
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
# @rbs (config_value value) -> (String | Integer | bool | nil)
|
|
33
|
+
def json_value: (config_value value) -> (String | Integer | bool | nil)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Whether an input can prove the historical source of a selected setting.
|
|
37
|
+
class Recording
|
|
38
|
+
STATES: Array[Symbol]
|
|
39
|
+
|
|
40
|
+
attr_reader state: Symbol
|
|
41
|
+
|
|
42
|
+
attr_reader reason: String
|
|
43
|
+
|
|
44
|
+
# @rbs (Symbol state, String reason) -> void
|
|
45
|
+
def initialize: (Symbol state, String reason) -> void
|
|
46
|
+
|
|
47
|
+
# @rbs () -> Hash[String, String]
|
|
48
|
+
def to_h: () -> Hash[String, String]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Canonical, static input facts used to build a configuration report.
|
|
52
|
+
class Input
|
|
53
|
+
KINDS: Array[Symbol]
|
|
54
|
+
|
|
55
|
+
attr_reader kind: Symbol
|
|
56
|
+
|
|
57
|
+
attr_reader path: String
|
|
58
|
+
|
|
59
|
+
attr_reader files: Array[String]
|
|
60
|
+
|
|
61
|
+
attr_reader schema_version: Integer?
|
|
62
|
+
|
|
63
|
+
attr_reader grammar_values: Hash[String, config_value]
|
|
64
|
+
|
|
65
|
+
attr_reader grammar_locations: Hash[String, Location]
|
|
66
|
+
|
|
67
|
+
attr_reader evidence: Hash[String, Array[Evidence]]
|
|
68
|
+
|
|
69
|
+
attr_reader recordings: Hash[String, Recording]
|
|
70
|
+
|
|
71
|
+
# @rbs (kind: Symbol, path: String, ?files: Array[String], ?schema_version: Integer?,
|
|
72
|
+
# ?grammar_values: Hash[String, config_value], ?grammar_locations: Hash[String, Location],
|
|
73
|
+
# ?evidence: Hash[String, Array[Evidence]], ?recordings: Hash[String, Recording]) -> void
|
|
74
|
+
def initialize: (kind: Symbol, path: String, ?files: Array[String], ?schema_version: Integer?, ?grammar_values: Hash[String, config_value], ?grammar_locations: Hash[String, Location], ?evidence: Hash[String, Array[Evidence]], ?recordings: Hash[String, Recording]) -> void
|
|
75
|
+
|
|
76
|
+
# @rbs () -> Hash[String, json_value]
|
|
77
|
+
def to_h: () -> Hash[String, json_value]
|
|
78
|
+
|
|
79
|
+
private
|
|
80
|
+
|
|
81
|
+
# @rbs (Symbol kind, String path, Array[String] files, Integer? schema_version,
|
|
82
|
+
# Hash[String, config_value] grammar_values, Hash[String, Location] grammar_locations,
|
|
83
|
+
# Hash[String, Array[Evidence]] evidence, Hash[String, Recording] recordings) -> void
|
|
84
|
+
def assign_input: (Symbol kind, String path, Array[String] files, Integer? schema_version, Hash[String, config_value] grammar_values, Hash[String, Location] grammar_locations, Hash[String, Array[Evidence]] evidence, Hash[String, Recording] recordings) -> void
|
|
85
|
+
|
|
86
|
+
# @rbs (Array[String] files, String path) -> void
|
|
87
|
+
def validate_files!: (Array[String] files, String path) -> void
|
|
88
|
+
|
|
89
|
+
# @rbs (Symbol kind, Integer? schema_version) -> void
|
|
90
|
+
def validate_schema_version!: (Symbol kind, Integer? schema_version) -> void
|
|
91
|
+
|
|
92
|
+
# @rbs (Hash[String, config_value] values, Hash[String, Location] locations,
|
|
93
|
+
# Hash[String, Array[Evidence]] evidence, Hash[String, Recording] recordings) -> void
|
|
94
|
+
def validate_entries!: (Hash[String, config_value] values, Hash[String, Location] locations, Hash[String, Array[Evidence]] evidence, Hash[String, Recording] recordings) -> void
|
|
95
|
+
|
|
96
|
+
# @rbs (*Hash[Object?, Object?] values) -> void
|
|
97
|
+
def validate_fact_hashes!: (*Hash[Object?, Object?] values) -> void
|
|
98
|
+
|
|
99
|
+
# @rbs (Hash[String, config_value] values, Hash[String, Location] locations) -> void
|
|
100
|
+
def validate_locations!: (Hash[String, config_value] values, Hash[String, Location] locations) -> void
|
|
101
|
+
|
|
102
|
+
# @rbs (Hash[String, Array[Evidence]] evidence) -> void
|
|
103
|
+
def validate_evidence!: (Hash[String, Array[Evidence]] evidence) -> void
|
|
104
|
+
|
|
105
|
+
# @rbs (Hash[String, Recording] recordings) -> void
|
|
106
|
+
def validate_recordings!: (Hash[String, Recording] recordings) -> void
|
|
107
|
+
|
|
108
|
+
# @rbs (Hash[String, config_value] values) -> Hash[String, config_value]
|
|
109
|
+
def immutable_values: (Hash[String, config_value] values) -> Hash[String, config_value]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# A fixed-contract mismatch retained as structured report data.
|
|
113
|
+
class ConflictRecord
|
|
114
|
+
attr_reader key: Key
|
|
115
|
+
|
|
116
|
+
attr_reader declared: Value
|
|
117
|
+
|
|
118
|
+
attr_reader requested: Value
|
|
119
|
+
|
|
120
|
+
# @rbs (Conflict conflict) -> void
|
|
121
|
+
def initialize: (Conflict conflict) -> void
|
|
122
|
+
|
|
123
|
+
# @rbs () -> Hash[String, json_value]
|
|
124
|
+
def to_h: () -> Hash[String, json_value]
|
|
125
|
+
|
|
126
|
+
# @rbs () -> String
|
|
127
|
+
def message: () -> String
|
|
128
|
+
|
|
129
|
+
private
|
|
130
|
+
|
|
131
|
+
# @rbs (Value value) -> Hash[String, json_value]
|
|
132
|
+
def selection: (Value value) -> Hash[String, json_value]
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# The effective value and all accepted or rejected evidence for one key.
|
|
136
|
+
class Explanation
|
|
137
|
+
attr_reader value: Value
|
|
138
|
+
|
|
139
|
+
attr_reader evidence: Array[Evidence]
|
|
140
|
+
|
|
141
|
+
attr_reader recording: Recording
|
|
142
|
+
|
|
143
|
+
# @rbs (Value value, evidence: Array[Evidence], recording: Recording) -> void
|
|
144
|
+
def initialize: (Value value, evidence: Array[Evidence], recording: Recording) -> void
|
|
145
|
+
|
|
146
|
+
# @rbs () -> Hash[String, json_value]
|
|
147
|
+
def to_h: () -> Hash[String, json_value]
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Deterministic, static-no-user-code explanation of every registered setting.
|
|
151
|
+
class Report
|
|
152
|
+
attr_reader input: Input
|
|
153
|
+
|
|
154
|
+
attr_reader explanations: Array[Explanation]
|
|
155
|
+
|
|
156
|
+
attr_reader conflicts: Array[ConflictRecord]
|
|
157
|
+
|
|
158
|
+
# @rbs (Input input, ?cli: Hash[String, config_value]) -> void
|
|
159
|
+
def initialize: (Input input, ?cli: Hash[String, config_value]) -> void
|
|
160
|
+
|
|
161
|
+
# @rbs () -> bool
|
|
162
|
+
def success?: () -> bool
|
|
163
|
+
|
|
164
|
+
# @rbs () -> Hash[String, json_value]
|
|
165
|
+
def to_h: () -> Hash[String, json_value]
|
|
166
|
+
|
|
167
|
+
# Deterministic JSON independent of caller hash insertion order.
|
|
168
|
+
# @rbs () -> String
|
|
169
|
+
def dump: () -> String
|
|
170
|
+
|
|
171
|
+
# @rbs () -> String
|
|
172
|
+
def render_text: () -> String
|
|
173
|
+
|
|
174
|
+
private
|
|
175
|
+
|
|
176
|
+
# @rbs (Key key, Hash[String, config_value] cli) -> Value
|
|
177
|
+
def resolve_key: (Key key, Hash[String, config_value] cli) -> Value
|
|
178
|
+
|
|
179
|
+
# @rbs (Value value, Hash[String, config_value] cli, ?conflict: ConflictRecord?) -> Explanation
|
|
180
|
+
def explanation: (Value value, Hash[String, config_value] cli, ?conflict: ConflictRecord?) -> Explanation
|
|
181
|
+
|
|
182
|
+
# @rbs (Key key, config_value raw, conflicting: bool) -> Evidence
|
|
183
|
+
def cli_evidence: (Key key, config_value raw, conflicting: bool) -> Evidence
|
|
184
|
+
|
|
185
|
+
# @rbs (config_value value) -> String
|
|
186
|
+
def display: (config_value value) -> String
|
|
187
|
+
|
|
188
|
+
# @rbs (Location location) -> String
|
|
189
|
+
def location_label: (Location location) -> String
|
|
190
|
+
|
|
191
|
+
# @rbs (Explanation entry) -> Array[String]
|
|
192
|
+
def render_explanation: (Explanation entry) -> Array[String]
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|