ibex 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +89 -123
- data/docs/architecture.md +477 -31
- data/docs/bison-import.md +103 -0
- data/docs/comparison-policy.md +127 -0
- data/docs/configuration-model.md +59 -0
- data/docs/configuration-report.md +28 -0
- data/docs/conflict-explanation-reviews/v1/records/README.md +28 -0
- data/docs/conflict-explanation-study.md +62 -0
- data/docs/construction-profiling.md +157 -0
- data/docs/cst-migration.md +106 -0
- data/docs/cst.md +237 -0
- data/docs/decisions/0000-template.md +24 -0
- data/docs/decisions/0001-separate-ir-pipeline.md +34 -0
- data/docs/decisions/0002-opaque-user-code-boundary.md +32 -0
- data/docs/decisions/0003-self-hosted-grammar-frontend.md +32 -0
- data/docs/decisions/0004-shared-semantic-and-lossless-source-model.md +33 -0
- data/docs/decisions/0005-contained-grammar-composition.md +34 -0
- data/docs/decisions/0006-bounded-structural-grammar-lowering.md +32 -0
- data/docs/decisions/0007-shared-parser-construction-pipeline.md +33 -0
- data/docs/decisions/0008-versioned-runtime-package-boundary.md +36 -0
- data/docs/decisions/0009-isolated-parser-sessions.md +34 -0
- data/docs/decisions/0010-committed-runtime-observation.md +34 -0
- data/docs/decisions/0011-versioned-semantic-action-boundary.md +37 -0
- data/docs/decisions/0012-bounded-nonexecuting-analysis.md +37 -0
- data/docs/decisions/0013-transactional-generation-publication.md +37 -0
- data/docs/decisions/0014-versioned-generated-lexer.md +35 -0
- data/docs/decisions/0015-worker-isolated-browser-analysis.md +32 -0
- data/docs/decisions/0016-red-green-concrete-syntax.md +34 -0
- data/docs/decisions/0017-persistent-syntax-artifacts.md +35 -0
- data/docs/decisions/0018-conservative-incremental-syntax-reuse.md +38 -0
- data/docs/decisions/0019-runtime-syntax-session-boundary.md +51 -0
- data/docs/decisions/0020-grammar-ir-parser-contract.md +65 -0
- data/docs/decisions/0021-data-only-parser-table-sidecar.md +50 -0
- data/docs/decisions/0022-manifest-bound-verification-report.md +77 -0
- data/docs/decisions/0023-syntax-only-repair-results.md +48 -0
- data/docs/decisions/0024-direct-ielr-construction.md +42 -0
- data/docs/decisions/README.md +74 -0
- data/docs/declarative-configuration.md +262 -0
- data/docs/development.md +306 -0
- data/docs/direct-ielr-decision.md +120 -0
- data/docs/direct-multi-entry-decision.md +82 -0
- data/docs/editor-setup.md +26 -0
- data/docs/error-ux-review-rubric-v1.md +117 -0
- data/docs/error-ux-reviews/v1/records/README.md +22 -0
- data/docs/error-ux-round2-review-status-v1.json +27 -0
- data/docs/error-ux-round2-reviews/v1/records/README.md +30 -0
- data/docs/error-ux-round2-v1.json +1581 -0
- data/docs/error-ux-round2.md +111 -0
- data/docs/error-ux.md +114 -0
- data/docs/getting-started.md +80 -0
- data/docs/grammar-reference.md +629 -18
- data/docs/ielr-design.md +43 -0
- data/docs/ielr.md +92 -0
- data/docs/ja/bison-import.md +51 -0
- data/docs/ja/stable-api.md +53 -0
- data/docs/lexer-construction-profile.md +109 -0
- data/docs/lexer-migration.md +56 -0
- data/docs/maturity.md +128 -0
- data/docs/project-site-strategy.md +54 -0
- data/docs/racc-migration-evidence.md +45 -0
- data/docs/racc-migration.md +45 -6
- data/docs/release-readiness.md +221 -0
- data/docs/repair-semantics.md +123 -0
- data/docs/runtime-abi-evolution.md +307 -0
- data/docs/stability.md +234 -0
- data/docs/status.md +43 -0
- data/docs/syntax-sessions.md +183 -0
- data/docs/table-artifact.md +125 -0
- data/docs/test-interactions.md +219 -0
- data/docs/verification-report.md +137 -0
- data/docs/verifier-trust-boundary.md +199 -0
- data/docs/workloads.md +132 -0
- data/examples/README.md +60 -0
- data/examples/calculator.y +44 -0
- data/examples/csv.y +32 -0
- data/examples/ini.y +70 -0
- data/examples/json.y +48 -0
- data/examples/tiny_language.y +75 -0
- data/lib/ibex/analysis/digraph.rb +128 -0
- data/lib/ibex/analysis/sets.rb +5 -4
- data/lib/ibex/analysis.rb +1 -0
- data/lib/ibex/artifact_set.rb +63 -0
- data/lib/ibex/bison_import/importer.rb +516 -0
- data/lib/ibex/bison_import/tokenizer.rb +260 -0
- data/lib/ibex/bison_import.rb +200 -0
- data/lib/ibex/bounded_subprocess.rb +171 -0
- data/lib/ibex/cli/ambiguity.rb +75 -0
- data/lib/ibex/cli/analysis.rb +134 -0
- data/lib/ibex/cli/bison_import.rb +121 -0
- data/lib/ibex/cli/config.rb +128 -0
- data/lib/ibex/cli/counterexample_options.rb +6 -2
- data/lib/ibex/cli/coverage.rb +173 -0
- data/lib/ibex/cli/debug.rb +106 -0
- data/lib/ibex/cli/diagnostics.rb +136 -0
- data/lib/ibex/cli/documentation.rb +70 -0
- data/lib/ibex/cli/equiv.rb +169 -0
- data/lib/ibex/cli/error_messages.rb +184 -0
- data/lib/ibex/cli/explain.rb +85 -0
- data/lib/ibex/cli/fix.rb +203 -0
- data/lib/ibex/cli/formatting.rb +387 -0
- data/lib/ibex/cli/fuzz.rb +200 -0
- data/lib/ibex/cli/fuzz_regressions.rb +145 -0
- data/lib/ibex/cli/generation_artifacts.rb +189 -0
- data/lib/ibex/cli/generation_error_messages.rb +39 -0
- data/lib/ibex/cli/grammar_tests.rb +140 -0
- data/lib/ibex/cli/ir_tools.rb +128 -0
- data/lib/ibex/cli/lsp.rb +33 -0
- data/lib/ibex/cli/outputs.rb +133 -23
- data/lib/ibex/cli/racc_migration.rb +87 -0
- data/lib/ibex/cli/reduce.rb +202 -0
- data/lib/ibex/cli/reduce_reporting.rb +71 -0
- data/lib/ibex/cli/samples.rb +118 -0
- data/lib/ibex/cli/verify.rb +116 -0
- data/lib/ibex/cli/watch.rb +104 -0
- data/lib/ibex/cli.rb +825 -55
- data/lib/ibex/codegen/action_locations.rb +103 -0
- data/lib/ibex/codegen/action_method_source.rb +209 -0
- data/lib/ibex/codegen/action_source.rb +119 -0
- data/lib/ibex/codegen/ambiguity.rb +174 -0
- data/lib/ibex/codegen/cst_metadata.rb +171 -0
- data/lib/ibex/codegen/documentation.rb +170 -0
- data/lib/ibex/codegen/explain.rb +380 -0
- data/lib/ibex/codegen/generated_action_abi.rb +293 -0
- data/lib/ibex/codegen/html.rb +94 -10
- data/lib/ibex/codegen/mermaid.rb +43 -0
- data/lib/ibex/codegen/railroad.rb +197 -0
- data/lib/ibex/codegen/railroad_documentation.rb +59 -0
- data/lib/ibex/codegen/rbs.rb +331 -2
- data/lib/ibex/codegen/report.rb +67 -15
- data/lib/ibex/codegen/ruby.rb +305 -66
- data/lib/ibex/codegen/ruby_actions.rb +146 -0
- data/lib/ibex/codegen/ruby_ast.rb +121 -0
- data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
- data/lib/ibex/codegen/ruby_lexer.rb +83 -0
- data/lib/ibex/codegen/ruby_syntax.rb +96 -0
- data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
- data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
- data/lib/ibex/codegen/symbol_labels.rb +1 -1
- data/lib/ibex/configuration/analysis_grammar.rb +35 -0
- data/lib/ibex/configuration/explanation.rb +421 -0
- data/lib/ibex/configuration/inspector.rb +232 -0
- data/lib/ibex/configuration.rb +580 -0
- data/lib/ibex/coverage/collector.rb +198 -0
- data/lib/ibex/coverage/event_stream.rb +103 -0
- data/lib/ibex/coverage/report.rb +267 -0
- data/lib/ibex/coverage/runtime_event_validator.rb +169 -0
- data/lib/ibex/coverage.rb +13 -0
- data/lib/ibex/delta_reducer.rb +99 -0
- data/lib/ibex/diff.rb +140 -0
- data/lib/ibex/equiv/machine.rb +135 -0
- data/lib/ibex/equiv.rb +373 -0
- data/lib/ibex/error_messages/parser.rb +159 -0
- data/lib/ibex/error_messages/parser_v2.rb +198 -0
- data/lib/ibex/error_messages/renderer.rb +65 -0
- data/lib/ibex/error_messages/sentence_search.rb +196 -0
- data/lib/ibex/error_messages/update.rb +169 -0
- data/lib/ibex/error_messages.rb +165 -0
- data/lib/ibex/fix.rb +557 -0
- data/lib/ibex/frontend/ast.rb +166 -7
- data/lib/ibex/frontend/bootstrap_parser.rb +40 -4
- data/lib/ibex/frontend/diagnostic.rb +81 -0
- data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
- data/lib/ibex/frontend/dsl.rb +66 -7
- data/lib/ibex/frontend/formatter.rb +453 -0
- data/lib/ibex/frontend/generated_parser.rb +644 -190
- data/lib/ibex/frontend/generated_parser_base.rb +170 -32
- data/lib/ibex/frontend/generated_parser_includes.rb +51 -0
- data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
- data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
- data/lib/ibex/frontend/generation.rb +33 -0
- data/lib/ibex/frontend/lexer.rb +162 -10
- data/lib/ibex/frontend/lexer_recovery.rb +84 -0
- data/lib/ibex/frontend/parser/declarations.rb +262 -11
- data/lib/ibex/frontend/parser/parameters.rb +82 -0
- data/lib/ibex/frontend/parser/rules.rb +43 -6
- data/lib/ibex/frontend/parser.rb +182 -4
- data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
- data/lib/ibex/frontend/regenerator.rb +27 -1
- data/lib/ibex/frontend/resolution.rb +70 -0
- data/lib/ibex/frontend/resolver.rb +217 -0
- data/lib/ibex/frontend/rule_documentation.rb +104 -0
- data/lib/ibex/frontend/source_cursor.rb +133 -9
- data/lib/ibex/frontend/source_document.rb +229 -0
- data/lib/ibex/frontend/source_loader.rb +150 -0
- data/lib/ibex/frontend/source_span.rb +89 -0
- data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
- data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +244 -22
- data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
- data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
- data/lib/ibex/frontend/token_adapter.rb +18 -3
- data/lib/ibex/frontend.rb +14 -2
- data/lib/ibex/fuzz.rb +219 -0
- data/lib/ibex/generation_input.rb +57 -0
- data/lib/ibex/generation_manifest.rb +211 -0
- data/lib/ibex/generation_transaction.rb +261 -0
- data/lib/ibex/generation_transaction_recovery.rb +109 -0
- data/lib/ibex/generation_transaction_validation.rb +196 -0
- data/lib/ibex/grammar_tests.rb +206 -0
- data/lib/ibex/ir/automaton_ir.rb +86 -11
- data/lib/ibex/ir/grammar_ir.rb +170 -26
- data/lib/ibex/ir/lexer_ir.rb +76 -0
- data/lib/ibex/ir/parser_contract.rb +135 -0
- data/lib/ibex/ir/serialize.rb +268 -50
- data/lib/ibex/ir/validator/automaton.rb +375 -0
- data/lib/ibex/ir/validator/base.rb +147 -0
- data/lib/ibex/ir/validator/grammar.rb +634 -0
- data/lib/ibex/ir/validator/lexer.rb +113 -0
- data/lib/ibex/ir/validator.rb +63 -0
- data/lib/ibex/ir.rb +71 -5
- data/lib/ibex/lalr/build_metrics.rb +71 -0
- data/lib/ibex/lalr/builder.rb +514 -52
- data/lib/ibex/lalr/conflict.rb +1 -0
- data/lib/ibex/lalr/conflict_search.rb +26 -9
- data/lib/ibex/lalr/counterexample.rb +38 -18
- data/lib/ibex/lalr/direct_lookaheads.rb +289 -0
- data/lib/ibex/lalr/goto_follows.rb +229 -0
- data/lib/ibex/lalr/ielr/annotator.rb +214 -0
- data/lib/ibex/lalr/ielr/bits.rb +28 -0
- data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
- data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
- data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
- data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
- data/lib/ibex/lalr/ielr/split_state.rb +20 -0
- data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
- data/lib/ibex/lalr/ielr_partition.rb +166 -0
- data/lib/ibex/lalr/inadequacy_report.rb +50 -0
- data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
- data/lib/ibex/lalr/lr0_collection.rb +121 -0
- data/lib/ibex/lalr/on_error_reductions.rb +74 -0
- data/lib/ibex/lalr/unreachable_states.rb +80 -0
- data/lib/ibex/lalr.rb +59 -1
- data/lib/ibex/location.rb +129 -0
- data/lib/ibex/lsp/document_handlers.rb +68 -0
- data/lib/ibex/lsp/document_store.rb +264 -0
- data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
- data/lib/ibex/lsp/document_store_validation.rb +61 -0
- data/lib/ibex/lsp/initialization_handlers.rb +80 -0
- data/lib/ibex/lsp/navigation_handlers.rb +70 -0
- data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
- data/lib/ibex/lsp/position_codec.rb +113 -0
- data/lib/ibex/lsp/protocol_error.rb +33 -0
- data/lib/ibex/lsp/request_handlers.rb +46 -0
- data/lib/ibex/lsp/request_support.rb +94 -0
- data/lib/ibex/lsp/server.rb +148 -0
- data/lib/ibex/lsp/symbol_index.rb +241 -0
- data/lib/ibex/lsp/symbol_index_builder.rb +277 -0
- data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
- data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
- data/lib/ibex/lsp/symbol_occurrence.rb +23 -0
- data/lib/ibex/lsp/transport.rb +128 -0
- data/lib/ibex/lsp/workspace.rb +128 -0
- data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
- data/lib/ibex/lsp.rb +33 -0
- data/lib/ibex/messages/en.yml +28 -0
- data/lib/ibex/messages/ja.yml +28 -0
- data/lib/ibex/messages.rb +68 -0
- data/lib/ibex/metrics.rb +175 -0
- data/lib/ibex/normalize/declarations.rb +142 -7
- data/lib/ibex/normalize/diagnostics.rb +94 -24
- data/lib/ibex/normalize/expander.rb +64 -59
- data/lib/ibex/normalize/expression.rb +63 -40
- data/lib/ibex/normalize/grammar_builder.rb +26 -0
- data/lib/ibex/normalize/inline_expansion.rb +465 -0
- data/lib/ibex/normalize/inline_validation.rb +174 -0
- data/lib/ibex/normalize/lexer.rb +131 -0
- data/lib/ibex/normalize/named_references.rb +60 -0
- data/lib/ibex/normalize/nodes.rb +46 -0
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +70 -0
- data/lib/ibex/normalize/parameter_lowering.rb +143 -0
- data/lib/ibex/normalize/parameter_substitution.rb +125 -0
- data/lib/ibex/normalize/parameter_validation.rb +140 -0
- data/lib/ibex/normalize/parameters.rb +226 -0
- data/lib/ibex/normalize/parser_configuration.rb +70 -0
- data/lib/ibex/normalize/recovery_declarations.rb +84 -0
- data/lib/ibex/normalize.rb +172 -17
- data/lib/ibex/racc_migration/checker.rb +122 -0
- data/lib/ibex/racc_migration/harness.rb +177 -0
- data/lib/ibex/racc_migration/report.rb +97 -0
- data/lib/ibex/racc_migration.rb +12 -0
- data/lib/ibex/rake_task.rb +116 -0
- data/lib/ibex/samples.rb +216 -0
- data/lib/ibex/table_artifact/builder.rb +266 -0
- data/lib/ibex/table_artifact/cst_projection.rb +70 -0
- data/lib/ibex/table_artifact/document.rb +39 -0
- data/lib/ibex/table_artifact/executor.rb +187 -0
- data/lib/ibex/table_artifact/serializer.rb +57 -0
- data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
- data/lib/ibex/table_artifact/validator/support.rb +86 -0
- data/lib/ibex/table_artifact/validator/tables.rb +238 -0
- data/lib/ibex/table_artifact/validator.rb +253 -0
- data/lib/ibex/table_artifact.rb +88 -0
- data/lib/ibex/table_simulation/result.rb +55 -0
- data/lib/ibex/table_simulation/simulator.rb +253 -0
- data/lib/ibex/table_simulation/step.rb +62 -0
- data/lib/ibex/table_simulation/text.rb +31 -0
- data/lib/ibex/table_simulation.rb +13 -0
- data/lib/ibex/tables.rb +22 -69
- data/lib/ibex/verifiable_generation_bundle.rb +86 -0
- data/lib/ibex/verification_report/builder.rb +159 -0
- data/lib/ibex/verification_report/canonical_ir.rb +123 -0
- data/lib/ibex/verification_report/logical_path.rb +68 -0
- data/lib/ibex/verification_report/validator.rb +329 -0
- data/lib/ibex/verification_report.rb +69 -0
- data/lib/ibex/verify/action_correspondence.rb +138 -0
- data/lib/ibex/verify/language_witness.rb +295 -0
- data/lib/ibex/verify/reference_collection.rb +190 -0
- data/lib/ibex/verify/result.rb +73 -0
- data/lib/ibex/verify/verifier.rb +598 -0
- data/lib/ibex/verify.rb +15 -0
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex/watch/runner.rb +181 -0
- data/lib/ibex/watch/source_snapshot.rb +98 -0
- data/lib/ibex/watch.rb +11 -0
- data/lib/ibex.rb +35 -1
- data/schema/automaton-ir-definitions.schema.json +401 -0
- data/schema/automaton-ir.schema.json +65 -0
- data/schema/benchmark-v1.schema.json +212 -0
- data/schema/benchmark-v2.schema.json +61 -0
- data/schema/bison-import-v1.schema.json +106 -0
- data/schema/conflict-explanation-review-v1.schema.json +196 -0
- data/schema/conflict-explanation-study-v1.schema.json +528 -0
- data/schema/construction-profile-v1.schema.json +779 -0
- data/schema/cst-v1.json +170 -0
- data/schema/diff-v1.schema.json +41 -0
- data/schema/direct-ielr-decision-v1.schema.json +200 -0
- data/schema/equiv-v1.schema.json +64 -0
- data/schema/error-ux-review-v1.schema.json +609 -0
- data/schema/error-ux-round2-review-v1.schema.json +191 -0
- data/schema/error-ux-round2-v1.schema.json +519 -0
- data/schema/error-ux-v1.schema.json +258 -0
- data/schema/explain-v1.schema.json +495 -0
- data/schema/fix-v1.schema.json +64 -0
- data/schema/fix-v2.schema.json +66 -0
- data/schema/fix-v3.schema.json +101 -0
- data/schema/frontend-diagnostics-v1.schema.json +154 -0
- data/schema/fuzz-regression-v1.schema.json +79 -0
- data/schema/fuzz-v1.schema.json +114 -0
- data/schema/generation-manifest-v1.schema.json +115 -0
- data/schema/grammar-ir-extensions.schema.json +734 -0
- data/schema/grammar-ir-foundation.schema.json +426 -0
- data/schema/grammar-ir.schema.json +271 -0
- data/schema/ielr-benchmark-v1.schema.json +85 -0
- data/schema/lexer-ir-v1.schema.json +215 -0
- data/schema/lexer-profile-v1.schema.json +491 -0
- data/schema/metrics-v1.schema.json +60 -0
- data/schema/migration-check-v1.schema.json +60 -0
- data/schema/performance-comparison-v1.schema.json +395 -0
- data/schema/public-performance-comparison-v1.schema.json +506 -0
- data/schema/public-performance-profile-v1.schema.json +360 -0
- data/schema/reduce-v1.schema.json +22 -0
- data/schema/reduce-v2.schema.json +63 -0
- data/schema/runtime-coverage-v1.schema.json +86 -0
- data/schema/runtime-event-v1.schema.json +308 -0
- data/schema/table-artifact-v1.schema.json +377 -0
- data/schema/table-simulation-v1.schema.json +70 -0
- data/schema/verification-report-v1.schema.json +222 -0
- data/schema/verify-v1.schema.json +42 -0
- data/sig/ibex/analysis/digraph.rbs +19 -0
- data/sig/ibex/artifact_set.rbs +37 -0
- data/sig/ibex/bison_import/importer.rbs +140 -0
- data/sig/ibex/bison_import/tokenizer.rbs +91 -0
- data/sig/ibex/bison_import.rbs +95 -0
- data/sig/ibex/bounded_subprocess.rbs +76 -0
- data/sig/ibex/cli/ambiguity.rbs +28 -0
- data/sig/ibex/cli/analysis.rbs +43 -0
- data/sig/ibex/cli/bison_import.rbs +32 -0
- data/sig/ibex/cli/config.rbs +35 -0
- data/sig/ibex/cli/counterexample_options.rbs +2 -0
- data/sig/ibex/cli/coverage.rbs +53 -0
- data/sig/ibex/cli/debug.rbs +28 -0
- data/sig/ibex/cli/diagnostics.rbs +51 -0
- data/sig/ibex/cli/documentation.rbs +29 -0
- data/sig/ibex/cli/equiv.rbs +49 -0
- data/sig/ibex/cli/error_messages.rbs +63 -0
- data/sig/ibex/cli/explain.rbs +31 -0
- data/sig/ibex/cli/fix.rbs +53 -0
- data/sig/ibex/cli/formatting.rbs +107 -0
- data/sig/ibex/cli/fuzz.rbs +47 -0
- data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
- data/sig/ibex/cli/generation_artifacts.rbs +69 -0
- data/sig/ibex/cli/generation_error_messages.rbs +19 -0
- data/sig/ibex/cli/grammar_tests.rbs +48 -0
- data/sig/ibex/cli/ir_tools.rbs +39 -0
- data/sig/ibex/cli/lsp.rbs +14 -0
- data/sig/ibex/cli/outputs.rbs +26 -3
- data/sig/ibex/cli/racc_migration.rbs +30 -0
- data/sig/ibex/cli/reduce.rbs +60 -0
- data/sig/ibex/cli/reduce_reporting.rbs +27 -0
- data/sig/ibex/cli/samples.rbs +38 -0
- data/sig/ibex/cli/verify.rbs +28 -0
- data/sig/ibex/cli/watch.rbs +43 -0
- data/sig/ibex/cli.rbs +182 -9
- data/sig/ibex/codegen/action_locations.rbs +45 -0
- data/sig/ibex/codegen/action_method_source.rbs +65 -0
- data/sig/ibex/codegen/action_source.rbs +50 -0
- data/sig/ibex/codegen/ambiguity.rbs +60 -0
- data/sig/ibex/codegen/cst_metadata.rbs +59 -0
- data/sig/ibex/codegen/documentation.rbs +50 -0
- data/sig/ibex/codegen/explain.rbs +105 -0
- data/sig/ibex/codegen/generated_action_abi.rbs +105 -0
- data/sig/ibex/codegen/html.rbs +18 -2
- data/sig/ibex/codegen/mermaid.rbs +16 -0
- data/sig/ibex/codegen/railroad.rbs +82 -0
- data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
- data/sig/ibex/codegen/rbs.rbs +86 -4
- data/sig/ibex/codegen/report.rbs +16 -8
- data/sig/ibex/codegen/ruby.rbs +105 -28
- data/sig/ibex/codegen/ruby_actions.rbs +54 -0
- data/sig/ibex/codegen/ruby_ast.rbs +34 -0
- data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
- data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
- data/sig/ibex/codegen/ruby_syntax.rbs +27 -0
- data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
- data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
- data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
- data/sig/ibex/configuration/explanation.rbs +195 -0
- data/sig/ibex/configuration/inspector.rbs +53 -0
- data/sig/ibex/configuration.rbs +242 -0
- data/sig/ibex/coverage/collector.rbs +78 -0
- data/sig/ibex/coverage/event_stream.rbs +44 -0
- data/sig/ibex/coverage/report.rbs +102 -0
- data/sig/ibex/coverage/runtime_event_validator.rbs +70 -0
- data/sig/ibex/coverage.rbs +7 -0
- data/sig/ibex/delta_reducer.rbs +38 -0
- data/sig/ibex/diff.rbs +47 -0
- data/sig/ibex/equiv/machine.rbs +54 -0
- data/sig/ibex/equiv.rbs +129 -0
- data/sig/ibex/error_messages/parser.rbs +58 -0
- data/sig/ibex/error_messages/parser_v2.rbs +67 -0
- data/sig/ibex/error_messages/renderer.rbs +23 -0
- data/sig/ibex/error_messages/sentence_search.rbs +80 -0
- data/sig/ibex/error_messages/update.rbs +43 -0
- data/sig/ibex/error_messages.rbs +85 -0
- data/sig/ibex/fix.rbs +138 -0
- data/sig/ibex/frontend/ast.rbs +237 -22
- data/sig/ibex/frontend/bootstrap_parser.rbs +13 -0
- data/sig/ibex/frontend/diagnostic.rbs +53 -0
- data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
- data/sig/ibex/frontend/dsl.rbs +33 -4
- data/sig/ibex/frontend/formatter.rbs +143 -0
- data/sig/ibex/frontend/generated_parser.rbs +228 -68
- data/sig/ibex/frontend/generated_parser_base.rbs +65 -12
- data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
- data/sig/ibex/frontend/generation.rbs +6 -0
- data/sig/ibex/frontend/lexer.rbs +49 -2
- data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
- data/sig/ibex/frontend/parser/declarations.rbs +57 -0
- data/sig/ibex/frontend/parser/parameters.rbs +28 -0
- data/sig/ibex/frontend/parser/rules.rbs +3 -0
- data/sig/ibex/frontend/parser.rbs +66 -0
- data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
- data/sig/ibex/frontend/regenerator.rbs +11 -0
- data/sig/ibex/frontend/resolution.rbs +34 -0
- data/sig/ibex/frontend/resolver.rbs +91 -0
- data/sig/ibex/frontend/rule_documentation.rbs +42 -0
- data/sig/ibex/frontend/source_cursor.rbs +38 -5
- data/sig/ibex/frontend/source_document.rbs +119 -0
- data/sig/ibex/frontend/source_loader.rbs +66 -0
- data/sig/ibex/frontend/source_span.rbs +56 -0
- data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
- data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +83 -3
- data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
- data/sig/ibex/frontend/token_adapter.rbs +11 -2
- data/sig/ibex/frontend.rbs +1 -1
- data/sig/ibex/fuzz.rbs +71 -0
- data/sig/ibex/generation_input.rbs +37 -0
- data/sig/ibex/generation_manifest.rbs +70 -0
- data/sig/ibex/generation_transaction.rbs +82 -0
- data/sig/ibex/generation_transaction_recovery.rbs +36 -0
- data/sig/ibex/generation_transaction_validation.rbs +65 -0
- data/sig/ibex/grammar_tests.rbs +93 -0
- data/sig/ibex/ir/automaton_ir.rbs +35 -10
- data/sig/ibex/ir/grammar_ir.rbs +96 -22
- data/sig/ibex/ir/lexer_ir.rbs +57 -0
- data/sig/ibex/ir/parser_contract.rbs +69 -0
- data/sig/ibex/ir/serialize.rbs +75 -23
- data/sig/ibex/ir/validator/automaton.rbs +112 -0
- data/sig/ibex/ir/validator/base.rbs +69 -0
- data/sig/ibex/ir/validator/grammar.rbs +195 -0
- data/sig/ibex/ir/validator/lexer.rbs +37 -0
- data/sig/ibex/ir/validator.rbs +16 -0
- data/sig/ibex/ir.rbs +45 -5
- data/sig/ibex/lalr/build_metrics.rbs +60 -0
- data/sig/ibex/lalr/builder.rbs +150 -19
- data/sig/ibex/lalr/conflict_search.rbs +12 -5
- data/sig/ibex/lalr/counterexample.rbs +20 -14
- data/sig/ibex/lalr/direct_lookaheads.rbs +93 -0
- data/sig/ibex/lalr/goto_follows.rbs +89 -0
- data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
- data/sig/ibex/lalr/ielr/bits.rbs +14 -0
- data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
- data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
- data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
- data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
- data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
- data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
- data/sig/ibex/lalr/ielr_partition.rbs +71 -0
- data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
- data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
- data/sig/ibex/lalr/lr0_collection.rbs +50 -0
- data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
- data/sig/ibex/lalr/unreachable_states.rbs +25 -0
- data/sig/ibex/lalr.rbs +17 -1
- data/sig/ibex/location.rbs +67 -0
- data/sig/ibex/lsp/document_handlers.rbs +24 -0
- data/sig/ibex/lsp/document_store.rbs +94 -0
- data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
- data/sig/ibex/lsp/document_store_validation.rbs +26 -0
- data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
- data/sig/ibex/lsp/navigation_handlers.rbs +33 -0
- data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
- data/sig/ibex/lsp/position_codec.rbs +44 -0
- data/sig/ibex/lsp/protocol_error.rbs +32 -0
- data/sig/ibex/lsp/request_handlers.rbs +26 -0
- data/sig/ibex/lsp/request_support.rbs +40 -0
- data/sig/ibex/lsp/server.rbs +55 -0
- data/sig/ibex/lsp/symbol_index.rbs +77 -0
- data/sig/ibex/lsp/symbol_index_builder.rbs +88 -0
- data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
- data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
- data/sig/ibex/lsp/symbol_occurrence.rbs +31 -0
- data/sig/ibex/lsp/transport.rbs +47 -0
- data/sig/ibex/lsp/workspace.rbs +42 -0
- data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
- data/sig/ibex/lsp.rbs +7 -0
- data/sig/ibex/messages.rbs +26 -0
- data/sig/ibex/metrics.rbs +50 -0
- data/sig/ibex/normalize/declarations.rbs +31 -0
- data/sig/ibex/normalize/diagnostics.rbs +13 -4
- data/sig/ibex/normalize/expander.rbs +22 -16
- data/sig/ibex/normalize/expression.rbs +11 -9
- data/sig/ibex/normalize/grammar_builder.rbs +11 -0
- data/sig/ibex/normalize/inline_expansion.rbs +129 -0
- data/sig/ibex/normalize/inline_validation.rbs +40 -0
- data/sig/ibex/normalize/lexer.rbs +37 -0
- data/sig/ibex/normalize/named_references.rbs +20 -0
- data/sig/ibex/normalize/nodes.rbs +14 -0
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +33 -0
- data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
- data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
- data/sig/ibex/normalize/parameter_validation.rbs +44 -0
- data/sig/ibex/normalize/parameters.rbs +51 -0
- data/sig/ibex/normalize/parser_configuration.rbs +23 -0
- data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
- data/sig/ibex/normalize.rbs +129 -18
- data/sig/ibex/racc_migration/checker.rbs +36 -0
- data/sig/ibex/racc_migration/harness.rbs +16 -0
- data/sig/ibex/racc_migration/report.rbs +55 -0
- data/sig/ibex/racc_migration.rbs +8 -0
- data/sig/ibex/rake_task.rbs +51 -0
- data/sig/ibex/samples.rbs +60 -0
- data/sig/ibex/table_artifact/builder.rbs +93 -0
- data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
- data/sig/ibex/table_artifact/document.rbs +27 -0
- data/sig/ibex/table_artifact/executor.rbs +66 -0
- data/sig/ibex/table_artifact/serializer.rbs +25 -0
- data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
- data/sig/ibex/table_artifact/validator/support.rbs +46 -0
- data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
- data/sig/ibex/table_artifact/validator.rbs +66 -0
- data/sig/ibex/table_artifact.rbs +32 -0
- data/sig/ibex/table_simulation/result.rbs +36 -0
- data/sig/ibex/table_simulation/simulator.rbs +98 -0
- data/sig/ibex/table_simulation/step.rbs +42 -0
- data/sig/ibex/table_simulation/text.rbs +14 -0
- data/sig/ibex/table_simulation.rbs +7 -0
- data/sig/ibex/tables.rbs +10 -35
- data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
- data/sig/ibex/verification_report/builder.rbs +53 -0
- data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
- data/sig/ibex/verification_report/logical_path.rbs +34 -0
- data/sig/ibex/verification_report/validator.rbs +114 -0
- data/sig/ibex/verification_report.rbs +44 -0
- data/sig/ibex/verify/action_correspondence.rbs +50 -0
- data/sig/ibex/verify/language_witness.rbs +112 -0
- data/sig/ibex/verify/reference_collection.rbs +63 -0
- data/sig/ibex/verify/result.rbs +52 -0
- data/sig/ibex/verify/verifier.rbs +170 -0
- data/sig/ibex/verify.rbs +6 -0
- data/sig/ibex/watch/runner.rbs +58 -0
- data/sig/ibex/watch/source_snapshot.rbs +46 -0
- data/sig/ibex/watch.rbs +7 -0
- data/sig/ibex.rbs +2 -0
- metadata +524 -19
- data/.rubocop.yml +0 -43
- data/CHANGELOG.md +0 -30
- data/Rakefile +0 -25
- data/Steepfile +0 -10
- data/docs/compat-notes.md +0 -37
- data/docs/lexer-coverage.md +0 -14
- data/docs/phase10-extensions.md +0 -27
- data/gemfiles/Gemfile +0 -7
- data/gemfiles/Gemfile.lock +0 -98
- data/lib/ibex/frontend/grammar.y +0 -156
- data/lib/ibex/runtime/parser.rb +0 -360
- data/lib/ibex/runtime.rb +0 -8
- data/sig/ibex/runtime/parser.rbs +0 -167
- data/sig/ibex/runtime.rbs +0 -6
|
@@ -23,20 +23,22 @@ module Ibex
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
# A grammar token and its source coordinate.
|
|
26
|
-
class Token < Struct[Symbol | token_value | Location]
|
|
26
|
+
class Token < Struct[Symbol | token_value | Location | SourceSpan?]
|
|
27
27
|
attr_accessor type(): Symbol
|
|
28
28
|
|
|
29
29
|
attr_accessor value(): token_value
|
|
30
30
|
|
|
31
31
|
attr_accessor location(): Location
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
attr_accessor span(): SourceSpan?
|
|
34
|
+
|
|
35
|
+
def self.new: (?type: Symbol, ?value: token_value, ?location: Location, ?span: SourceSpan?) -> instance
|
|
36
|
+
| ({ ?type: Symbol, ?value: token_value, ?location: Location, ?span: SourceSpan? }) -> instance
|
|
35
37
|
end
|
|
36
38
|
|
|
37
39
|
class Token
|
|
38
|
-
# @rbs () -> Hash[Symbol,
|
|
39
|
-
def to_h: () -> Hash[Symbol,
|
|
40
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
41
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
# Advances through source text while maintaining one-based coordinates.
|
|
@@ -47,6 +49,8 @@ module Ibex
|
|
|
47
49
|
|
|
48
50
|
attr_reader index: Integer
|
|
49
51
|
|
|
52
|
+
attr_reader byte_offset: Integer
|
|
53
|
+
|
|
50
54
|
attr_reader line: Integer
|
|
51
55
|
|
|
52
56
|
attr_reader column: Integer
|
|
@@ -66,8 +70,37 @@ module Ibex
|
|
|
66
70
|
# @rbs () -> Location
|
|
67
71
|
def location: () -> Location
|
|
68
72
|
|
|
73
|
+
# @rbs () -> SourcePosition
|
|
74
|
+
def position: () -> SourcePosition
|
|
75
|
+
|
|
76
|
+
# @rbs (SourcePosition start) -> SourceSpan
|
|
77
|
+
def span_from: (SourcePosition start) -> SourceSpan
|
|
78
|
+
|
|
69
79
|
# @rbs (?Integer count) -> void
|
|
70
80
|
def advance: (?Integer count) -> void
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
|
|
84
|
+
# @rbs (Integer count) -> void
|
|
85
|
+
def advance_ascii: (Integer count) -> void
|
|
86
|
+
|
|
87
|
+
# @rbs (Integer count) -> void
|
|
88
|
+
def advance_utf8: (Integer count) -> void
|
|
89
|
+
|
|
90
|
+
# @rbs (Integer character_index) -> Integer
|
|
91
|
+
def byte_offset_for_character: (Integer character_index) -> Integer
|
|
92
|
+
|
|
93
|
+
# @rbs (Integer byte_offset, Integer from_index, Integer to_index) -> Integer
|
|
94
|
+
def walk_to_character: (Integer byte_offset, Integer from_index, Integer to_index) -> Integer
|
|
95
|
+
|
|
96
|
+
# @rbs (Integer byte_offset) -> Integer
|
|
97
|
+
def previous_character_byte_offset: (Integer byte_offset) -> Integer
|
|
98
|
+
|
|
99
|
+
# @rbs (Integer byte_offset) -> Integer
|
|
100
|
+
def utf8_character_width: (Integer byte_offset) -> Integer
|
|
101
|
+
|
|
102
|
+
# @rbs (Integer byte) -> bool
|
|
103
|
+
def continuation_byte?: (Integer byte) -> bool
|
|
71
104
|
end
|
|
72
105
|
end
|
|
73
106
|
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/source_document.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
# An immutable lexical unit or trivia slice in a concrete syntax tree.
|
|
6
|
+
class Segment
|
|
7
|
+
TRIVIA_KINDS: Array[Symbol]
|
|
8
|
+
|
|
9
|
+
OPAQUE_KINDS: Array[Symbol]
|
|
10
|
+
|
|
11
|
+
attr_reader kind: Symbol
|
|
12
|
+
|
|
13
|
+
attr_reader span: SourceSpan
|
|
14
|
+
|
|
15
|
+
attr_reader text: String
|
|
16
|
+
|
|
17
|
+
attr_reader token_type: Symbol?
|
|
18
|
+
|
|
19
|
+
attr_reader token_index: Integer?
|
|
20
|
+
|
|
21
|
+
# @rbs (kind: Symbol, span: SourceSpan, text: String, ?token_type: Symbol?,
|
|
22
|
+
# ?token_index: Integer?) -> void
|
|
23
|
+
def initialize: (kind: Symbol, span: SourceSpan, text: String, ?token_type: Symbol?, ?token_index: Integer?) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> bool
|
|
26
|
+
def trivia?: () -> bool
|
|
27
|
+
|
|
28
|
+
# @rbs () -> bool
|
|
29
|
+
def opaque?: () -> bool
|
|
30
|
+
|
|
31
|
+
# @rbs () -> bool
|
|
32
|
+
def token?: () -> bool
|
|
33
|
+
|
|
34
|
+
# @rbs () -> String
|
|
35
|
+
def render: () -> String
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
module CST
|
|
39
|
+
# The immutable lexical root of a grammar source document.
|
|
40
|
+
class Document
|
|
41
|
+
include Enumerable[Segment]
|
|
42
|
+
|
|
43
|
+
attr_reader segments: Array[Segment]
|
|
44
|
+
|
|
45
|
+
# @rbs (Array[Segment] segments) -> void
|
|
46
|
+
def initialize: (Array[Segment] segments) -> void
|
|
47
|
+
|
|
48
|
+
def each: () -> Enumerator[Segment, Document]
|
|
49
|
+
| () { (Segment) -> void } -> Document
|
|
50
|
+
|
|
51
|
+
# @rbs () -> String
|
|
52
|
+
def render: () -> String
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
# @rbs (Array[Segment] segments) -> void
|
|
57
|
+
def validate_contiguous: (Array[Segment] segments) -> void
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Lossless grammar source plus its semantic parse and lexical concrete syntax tree.
|
|
62
|
+
class SourceDocument
|
|
63
|
+
attr_reader source: String
|
|
64
|
+
|
|
65
|
+
attr_reader file: String
|
|
66
|
+
|
|
67
|
+
attr_reader tokens: Array[Token]
|
|
68
|
+
|
|
69
|
+
attr_reader cst: CST::Document
|
|
70
|
+
|
|
71
|
+
attr_reader ast: AST::Root | AST::Fragment | nil
|
|
72
|
+
|
|
73
|
+
# @rbs (source: String, file: String, tokens: Array[Token], cst: CST::Document,
|
|
74
|
+
# ?ast: AST::Root | AST::Fragment | nil) -> void
|
|
75
|
+
def initialize: (source: String, file: String, tokens: Array[Token], cst: CST::Document, ?ast: AST::Root | AST::Fragment | nil) -> void
|
|
76
|
+
|
|
77
|
+
# @rbs () -> String
|
|
78
|
+
def render: () -> String
|
|
79
|
+
|
|
80
|
+
# @rbs (SourceSpan span) -> String
|
|
81
|
+
def slice: (SourceSpan span) -> String
|
|
82
|
+
|
|
83
|
+
# @rbs (Integer byte_offset) -> SourcePosition
|
|
84
|
+
def position_at: (Integer byte_offset) -> SourcePosition
|
|
85
|
+
|
|
86
|
+
# @rbs (Integer line, Integer column) -> Integer
|
|
87
|
+
def byte_offset_at: (Integer line, Integer column) -> Integer
|
|
88
|
+
|
|
89
|
+
# @rbs (Integer start_byte, Integer end_byte) -> SourceSpan
|
|
90
|
+
def span: (Integer start_byte, Integer end_byte) -> SourceSpan
|
|
91
|
+
|
|
92
|
+
# @rbs (Segment segment) -> Token?
|
|
93
|
+
def token_for: (Segment segment) -> Token?
|
|
94
|
+
|
|
95
|
+
# @rbs (AST::Root | AST::Fragment ast) -> SourceDocument
|
|
96
|
+
def with_ast: (AST::Root | AST::Fragment ast) -> SourceDocument
|
|
97
|
+
|
|
98
|
+
private
|
|
99
|
+
|
|
100
|
+
# @rbs () -> Array[Integer]
|
|
101
|
+
def build_line_starts: () -> Array[Integer]
|
|
102
|
+
|
|
103
|
+
# @rbs () -> void
|
|
104
|
+
def validate_render: () -> void
|
|
105
|
+
|
|
106
|
+
# @rbs () -> bool
|
|
107
|
+
def full_source_coverage?: () -> bool
|
|
108
|
+
|
|
109
|
+
# @rbs () -> bool
|
|
110
|
+
def segment_slices_match?: () -> bool
|
|
111
|
+
|
|
112
|
+
# @rbs (Integer byte_offset) -> void
|
|
113
|
+
def validate_byte_offset: (Integer byte_offset) -> void
|
|
114
|
+
|
|
115
|
+
# @rbs (SourceSpan span) -> void
|
|
116
|
+
def validate_span: (SourceSpan span) -> void
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/source_loader.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
# Resolves canonical grammar paths and reads either open-buffer overlays or disk.
|
|
6
|
+
class SourceLoader
|
|
7
|
+
@access_paths: Hash[String, Array[String]]
|
|
8
|
+
|
|
9
|
+
@record_reads: bool
|
|
10
|
+
|
|
11
|
+
@read_records: Hash[String, GenerationInput]
|
|
12
|
+
|
|
13
|
+
@aliases: Hash[String, String]
|
|
14
|
+
|
|
15
|
+
@overlays: Hash[String, String]
|
|
16
|
+
|
|
17
|
+
# @rbs () -> Array[GenerationInput]
|
|
18
|
+
def read_records: () -> Array[GenerationInput]
|
|
19
|
+
|
|
20
|
+
# Associate the lexical path used by a resolver with its canonical source.
|
|
21
|
+
# @rbs (String canonical, String access_path) -> void
|
|
22
|
+
def record_access: (String canonical, String access_path) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs (?overlays: Hash[String, String], ?record_reads: bool) -> void
|
|
25
|
+
def initialize: (?overlays: Hash[String, String], ?record_reads: bool) -> void
|
|
26
|
+
|
|
27
|
+
# Canonicalize an existing file, or a missing path explicitly allowed by an open overlay.
|
|
28
|
+
# @rbs (String path, ?base: String, ?allow_missing: bool) -> String
|
|
29
|
+
def canonical_path: (String path, ?base: String, ?allow_missing: bool) -> String
|
|
30
|
+
|
|
31
|
+
# @rbs (String path) -> String
|
|
32
|
+
def read: (String path) -> String
|
|
33
|
+
|
|
34
|
+
# @rbs (String path) -> bool
|
|
35
|
+
def file?: (String path) -> bool
|
|
36
|
+
|
|
37
|
+
# @rbs (String path) -> bool
|
|
38
|
+
def overlay?: (String path) -> bool
|
|
39
|
+
|
|
40
|
+
# Install or replace an editor buffer without writing it to disk.
|
|
41
|
+
# @rbs (String path, String source) -> String
|
|
42
|
+
def set_overlay: (String path, String source) -> String
|
|
43
|
+
|
|
44
|
+
# Remove an editor buffer and return its canonical path.
|
|
45
|
+
# @rbs (String path) -> String
|
|
46
|
+
def delete_overlay: (String path) -> String
|
|
47
|
+
|
|
48
|
+
# Read disk while deliberately bypassing an open overlay.
|
|
49
|
+
# @rbs (String path) -> String
|
|
50
|
+
def disk_source: (String path) -> String
|
|
51
|
+
|
|
52
|
+
# @rbs (String path) -> bool
|
|
53
|
+
def disk_file?: (String path) -> bool
|
|
54
|
+
|
|
55
|
+
# Resolve the current disk target without consulting overlay aliases.
|
|
56
|
+
# @rbs (String path) -> String
|
|
57
|
+
def disk_path: (String path) -> String
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
# Resolve the nearest existing ancestor so symlink escapes remain visible for new files.
|
|
62
|
+
# @rbs (String expanded) -> String
|
|
63
|
+
def canonical_missing_path: (String expanded) -> String
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/source_span.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
# Normalizes grammar source without changing its bytes.
|
|
6
|
+
module SourceEncoding
|
|
7
|
+
# @rbs (String source, String file) -> String
|
|
8
|
+
def self.validated_utf8: (String source, String file) -> String
|
|
9
|
+
|
|
10
|
+
# @rbs (String file) -> String
|
|
11
|
+
def self.validated_file: (String file) -> String
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# An immutable position in grammar source.
|
|
15
|
+
class SourcePosition
|
|
16
|
+
attr_reader byte_offset: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader line: Integer
|
|
19
|
+
|
|
20
|
+
attr_reader column: Integer
|
|
21
|
+
|
|
22
|
+
# @rbs (byte_offset: Integer, line: Integer, column: Integer) -> void
|
|
23
|
+
def initialize: (byte_offset: Integer, line: Integer, column: Integer) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
26
|
+
def to_h: () -> Hash[Symbol, Integer]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# An immutable half-open byte span in one grammar source.
|
|
30
|
+
class SourceSpan
|
|
31
|
+
attr_reader file: String
|
|
32
|
+
|
|
33
|
+
attr_reader start: SourcePosition
|
|
34
|
+
|
|
35
|
+
attr_reader finish: SourcePosition
|
|
36
|
+
|
|
37
|
+
# @rbs (file: String, start: SourcePosition, finish: SourcePosition) -> void
|
|
38
|
+
def initialize: (file: String, start: SourcePosition, finish: SourcePosition) -> void
|
|
39
|
+
|
|
40
|
+
# @rbs () -> Integer
|
|
41
|
+
def start_byte: () -> Integer
|
|
42
|
+
|
|
43
|
+
# @rbs () -> Integer
|
|
44
|
+
def end_byte: () -> Integer
|
|
45
|
+
|
|
46
|
+
# @rbs () -> Integer
|
|
47
|
+
def length: () -> Integer
|
|
48
|
+
|
|
49
|
+
# @rbs () -> bool
|
|
50
|
+
def empty?: () -> bool
|
|
51
|
+
|
|
52
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
53
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/token_adapter/declaration_document_state.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
class TokenAdapter
|
|
6
|
+
# Root/fragment header and include-path transitions for declaration classification.
|
|
7
|
+
module DeclarationDocumentState
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs (Token token) -> external_token
|
|
11
|
+
def class_keyword: (Token token) -> external_token
|
|
12
|
+
|
|
13
|
+
# @rbs (external_token type) -> external_token?
|
|
14
|
+
def classify_include: (external_token type) -> external_token?
|
|
15
|
+
|
|
16
|
+
# @rbs (Token token, String value) -> void
|
|
17
|
+
def reject_fragment_pragma: (Token token, String value) -> void
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/token_adapter/declaration_lexer_state.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
class TokenAdapter
|
|
6
|
+
# Context transitions for the extended root-only lexer declaration.
|
|
7
|
+
module DeclarationLexerState
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs () -> bool
|
|
11
|
+
def lexer_declaration_state?: () -> bool
|
|
12
|
+
|
|
13
|
+
# @rbs (Token token) -> external_token
|
|
14
|
+
def classify_lexer_identifier: (Token token) -> external_token
|
|
15
|
+
|
|
16
|
+
# @rbs (Token token) -> external_token
|
|
17
|
+
def begin_lexer_entry: (Token token) -> external_token
|
|
18
|
+
|
|
19
|
+
# @rbs () -> external_token
|
|
20
|
+
def finish_lexer_scope: () -> external_token
|
|
21
|
+
|
|
22
|
+
# @rbs (external_token type) -> external_token?
|
|
23
|
+
def classify_lexer_scalar: (external_token type) -> external_token?
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -4,7 +4,13 @@ module Ibex
|
|
|
4
4
|
module Frontend
|
|
5
5
|
class TokenAdapter
|
|
6
6
|
# Classifies tokens through the class header and declaration section.
|
|
7
|
+
# rubocop:disable Metrics/ClassLength, Metrics/CyclomaticComplexity
|
|
8
|
+
# One state machine owns declaration-boundary classification.
|
|
7
9
|
class DeclarationState
|
|
10
|
+
include DeclarationDocumentState
|
|
11
|
+
|
|
12
|
+
include DeclarationLexerState
|
|
13
|
+
|
|
8
14
|
DECLARATIONS: Hash[String, [ external_token, Symbol ]]
|
|
9
15
|
|
|
10
16
|
ASSOCIATIONS: Hash[String, external_token]
|
|
@@ -21,8 +27,16 @@ module Ibex
|
|
|
21
27
|
|
|
22
28
|
attr_reader state: Symbol
|
|
23
29
|
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
@pragma_location: Location?
|
|
31
|
+
|
|
32
|
+
@pragmas: Hash[String, Location]
|
|
33
|
+
|
|
34
|
+
@fragment: bool?
|
|
35
|
+
|
|
36
|
+
@extended_mode: bool
|
|
37
|
+
|
|
38
|
+
# @rbs (?extended: bool) -> void
|
|
39
|
+
def initialize: (?extended: bool) -> void
|
|
26
40
|
|
|
27
41
|
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
28
42
|
def classify: (Token token, Array[Token] remaining) -> external_token
|
|
@@ -33,6 +47,15 @@ module Ibex
|
|
|
33
47
|
# @rbs () -> bool
|
|
34
48
|
def extended_pragma?: () -> bool
|
|
35
49
|
|
|
50
|
+
# @rbs () -> bool
|
|
51
|
+
def cst_pragma?: () -> bool
|
|
52
|
+
|
|
53
|
+
# @rbs () -> Location?
|
|
54
|
+
def extended_pragma_location: () -> Location?
|
|
55
|
+
|
|
56
|
+
# @rbs () -> Location?
|
|
57
|
+
def cst_pragma_location: () -> Location?
|
|
58
|
+
|
|
36
59
|
# @rbs (Token? token) -> String?
|
|
37
60
|
def expectation: (Token? token) -> String?
|
|
38
61
|
|
|
@@ -42,7 +65,10 @@ module Ibex
|
|
|
42
65
|
def classify_identifier: (Token token, Array[Token] remaining) -> external_token
|
|
43
66
|
|
|
44
67
|
# @rbs (Token token) -> external_token
|
|
45
|
-
def
|
|
68
|
+
def begin_parser_setting: (Token token) -> external_token
|
|
69
|
+
|
|
70
|
+
# @rbs () -> external_token
|
|
71
|
+
def finish_parser_setting: () -> external_token
|
|
46
72
|
|
|
47
73
|
# @rbs (Array[Token] remaining) -> external_token
|
|
48
74
|
def constant_name: (Array[Token] remaining) -> external_token
|
|
@@ -62,6 +88,9 @@ module Ibex
|
|
|
62
88
|
# @rbs (String value) -> bool
|
|
63
89
|
def declaration_boundary?: (String value) -> bool
|
|
64
90
|
|
|
91
|
+
# @rbs () -> bool
|
|
92
|
+
def extended_features?: () -> bool
|
|
93
|
+
|
|
65
94
|
# @rbs (Token token) -> external_token
|
|
66
95
|
def precedence_identifier: (Token token) -> external_token
|
|
67
96
|
|
|
@@ -74,9 +103,60 @@ module Ibex
|
|
|
74
103
|
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
75
104
|
def classify_scalar: (Token token, Array[Token] remaining) -> external_token
|
|
76
105
|
|
|
106
|
+
# @rbs (external_token type) -> external_token?
|
|
107
|
+
def classify_single_symbol: (external_token type) -> external_token?
|
|
108
|
+
|
|
109
|
+
# @rbs (external_token type) -> external_token?
|
|
110
|
+
def continue_first_symbol: (external_token type) -> external_token?
|
|
111
|
+
|
|
112
|
+
# @rbs (Token token, external_token type) -> external_token?
|
|
113
|
+
def classify_token_alias: (Token token, external_token type) -> external_token?
|
|
114
|
+
|
|
115
|
+
# @rbs (external_token type) -> external_token?
|
|
116
|
+
def classify_metadata: (external_token type) -> external_token?
|
|
117
|
+
|
|
118
|
+
# @rbs (external_token type) -> external_token?
|
|
119
|
+
def classify_printer: (external_token type) -> external_token?
|
|
120
|
+
|
|
121
|
+
# @rbs (external_token type) -> external_token?
|
|
122
|
+
def classify_grammar_test: (external_token type) -> external_token?
|
|
123
|
+
|
|
124
|
+
# @rbs (Token token, external_token type, Array[Token] remaining) -> external_token?
|
|
125
|
+
def classify_conversion: (Token token, external_token type, Array[Token] remaining) -> external_token?
|
|
126
|
+
|
|
77
127
|
# @rbs (external_token type) -> external_token
|
|
78
128
|
def finish_single_symbol: (external_token type) -> external_token
|
|
79
129
|
|
|
130
|
+
# @rbs (external_token type) -> external_token
|
|
131
|
+
def continue_start_symbols: (external_token type) -> external_token
|
|
132
|
+
|
|
133
|
+
# @rbs (external_token type) -> external_token
|
|
134
|
+
def continue_recovery_symbols: (external_token type) -> external_token
|
|
135
|
+
|
|
136
|
+
# @rbs (external_token type) -> external_token
|
|
137
|
+
def continue_on_error_reduce_symbols: (external_token type) -> external_token
|
|
138
|
+
|
|
139
|
+
# @rbs (external_token type) -> external_token
|
|
140
|
+
def begin_metadata_value: (external_token type) -> external_token
|
|
141
|
+
|
|
142
|
+
# @rbs () -> external_token
|
|
143
|
+
def begin_param_type: () -> external_token
|
|
144
|
+
|
|
145
|
+
# @rbs (external_token type) -> external_token
|
|
146
|
+
def begin_printer_action: (external_token type) -> external_token
|
|
147
|
+
|
|
148
|
+
# @rbs (Token token) -> external_token
|
|
149
|
+
def begin_recovery_colon: (Token token) -> external_token
|
|
150
|
+
|
|
151
|
+
# @rbs (Token token) -> external_token
|
|
152
|
+
def begin_test_source: (Token token) -> external_token
|
|
153
|
+
|
|
154
|
+
# @rbs (external_token type) -> external_token
|
|
155
|
+
def finish_param_type: (external_token type) -> external_token
|
|
156
|
+
|
|
157
|
+
# @rbs (external_token type) -> external_token
|
|
158
|
+
def finish_metadata_value: (external_token type) -> external_token
|
|
159
|
+
|
|
80
160
|
# @rbs (external_token type) -> external_token
|
|
81
161
|
def finish_conversion: (external_token type) -> external_token
|
|
82
162
|
|
|
@@ -11,6 +11,8 @@ module Ibex
|
|
|
11
11
|
|
|
12
12
|
attr_reader state: Symbol
|
|
13
13
|
|
|
14
|
+
@node_annotation: bool?
|
|
15
|
+
|
|
14
16
|
@rule_seen: bool?
|
|
15
17
|
|
|
16
18
|
@lhs_column: Integer?
|
|
@@ -35,10 +37,16 @@ module Ibex
|
|
|
35
37
|
|
|
36
38
|
private
|
|
37
39
|
|
|
40
|
+
# @rbs () -> external_token
|
|
41
|
+
def classify_inline: () -> external_token
|
|
42
|
+
|
|
38
43
|
# @rbs (Token token, Array[Token] remaining, external_token? last_external,
|
|
39
44
|
# external_token? previous_external) -> external_token
|
|
40
45
|
def classify_identifier: (Token token, Array[Token] remaining, external_token? last_external, external_token? previous_external) -> external_token
|
|
41
46
|
|
|
47
|
+
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
48
|
+
def classify_rhs_identifier: (Token token, Array[Token] remaining) -> external_token
|
|
49
|
+
|
|
42
50
|
# @rbs (Token token) -> external_token
|
|
43
51
|
def rule_lhs: (Token token) -> external_token
|
|
44
52
|
|
|
@@ -48,6 +56,12 @@ module Ibex
|
|
|
48
56
|
# @rbs (Token token, Token following) -> bool
|
|
49
57
|
def rule_boundary?: (Token token, Token following) -> bool
|
|
50
58
|
|
|
59
|
+
# @rbs (Token token, Array[Token] remaining) -> bool
|
|
60
|
+
def parameterized_rule_boundary?: (Token token, Array[Token] remaining) -> bool
|
|
61
|
+
|
|
62
|
+
# @rbs (Array[Token] tail) -> bool
|
|
63
|
+
def parameter_definition_tail?: (Array[Token] tail) -> bool
|
|
64
|
+
|
|
51
65
|
# @rbs (Token token) -> external_token
|
|
52
66
|
def start_rule: (Token token) -> external_token
|
|
53
67
|
|
|
@@ -60,6 +74,12 @@ module Ibex
|
|
|
60
74
|
# @rbs (Token token) -> external_token
|
|
61
75
|
def separated_terminal: (Token token) -> external_token
|
|
62
76
|
|
|
77
|
+
# @rbs (Token token, Token following) -> bool
|
|
78
|
+
def parameterized_call?: (Token token, Token following) -> bool
|
|
79
|
+
|
|
80
|
+
# @rbs (Token left, Token right) -> bool
|
|
81
|
+
def adjacent?: (Token left, Token right) -> bool
|
|
82
|
+
|
|
63
83
|
# @rbs (Token token) -> external_token
|
|
64
84
|
def classify_punctuation: (Token token) -> external_token
|
|
65
85
|
|
|
@@ -22,8 +22,8 @@ module Ibex
|
|
|
22
22
|
|
|
23
23
|
@tokens: Array[Token]
|
|
24
24
|
|
|
25
|
-
# @rbs (Array[Token] tokens) -> void
|
|
26
|
-
def initialize: (Array[Token] tokens) -> void
|
|
25
|
+
# @rbs (Array[Token] tokens, ?extended: bool) -> void
|
|
26
|
+
def initialize: (Array[Token] tokens, ?extended: bool) -> void
|
|
27
27
|
|
|
28
28
|
# @rbs () -> ([external_token, Token] | false)
|
|
29
29
|
def next_token: () -> ([ external_token, Token ] | false)
|
|
@@ -40,6 +40,15 @@ module Ibex
|
|
|
40
40
|
# @rbs () -> bool
|
|
41
41
|
def extended_pragma?: () -> bool
|
|
42
42
|
|
|
43
|
+
# @rbs () -> bool
|
|
44
|
+
def cst_pragma?: () -> bool
|
|
45
|
+
|
|
46
|
+
# @rbs () -> Location?
|
|
47
|
+
def extended_pragma_location: () -> Location?
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Location?
|
|
50
|
+
def cst_pragma_location: () -> Location?
|
|
51
|
+
|
|
43
52
|
# @rbs () -> parser_section
|
|
44
53
|
def section: () -> parser_section
|
|
45
54
|
|
data/sig/ibex/frontend.rbs
CHANGED
data/sig/ibex/fuzz.rbs
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Generated from lib/ibex/fuzz.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
type fuzz_outcome = Symbol | [ Symbol, String, String ]
|
|
5
|
+
|
|
6
|
+
type fuzz_mismatch = { tokens: Array[String], kind: Symbol, sentence: Integer, outcomes: Hash[Symbol, fuzz_outcome], bounds: Hash[Symbol, Integer] }
|
|
7
|
+
|
|
8
|
+
type fuzz_budget = { message: String, bounds: Hash[Symbol, Integer], ?tokens: Array[String], ?phase: String }
|
|
9
|
+
|
|
10
|
+
# Bounded grammar-derived differential fuzzing without semantic execution.
|
|
11
|
+
class Fuzz
|
|
12
|
+
ALGORITHMS: Array[Symbol]
|
|
13
|
+
|
|
14
|
+
DEFAULT_MAX_ACTIONS: Integer
|
|
15
|
+
|
|
16
|
+
DEFAULT_MAX_STACK: Integer
|
|
17
|
+
|
|
18
|
+
class Mismatch < Ibex::Error
|
|
19
|
+
attr_reader details: fuzz_mismatch
|
|
20
|
+
|
|
21
|
+
# @rbs (fuzz_mismatch details) -> void
|
|
22
|
+
def initialize: (fuzz_mismatch details) -> void
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class BudgetExceeded < Ibex::Error
|
|
26
|
+
attr_reader details: fuzz_budget
|
|
27
|
+
|
|
28
|
+
# @rbs (fuzz_budget details) -> void
|
|
29
|
+
def initialize: (fuzz_budget details) -> void
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @rbs (IR::Grammar grammar, ?seed: Integer, ?count: Integer, ?max_tokens: Integer,
|
|
33
|
+
# ?max_depth: Integer, ?max_expansions: Integer, ?max_actions: Integer, ?max_stack: Integer,
|
|
34
|
+
# ?coverage_guided: bool, ?path_length: Integer, ?algorithms: Array[Symbol],
|
|
35
|
+
# ?ielr_strategy: Symbol, ?automata: Hash[Symbol, IR::Automaton]?, ?against: (^(Array[String]) -> Symbol)?,
|
|
36
|
+
# ?against_description: Hash[Symbol, Object?]?) -> void
|
|
37
|
+
# rubocop:disable Metrics/ParameterLists
|
|
38
|
+
def initialize: (IR::Grammar grammar, ?seed: Integer, ?count: Integer, ?max_tokens: Integer, ?max_depth: Integer, ?max_expansions: Integer, ?max_actions: Integer, ?max_stack: Integer, ?coverage_guided: bool, ?path_length: Integer, ?algorithms: Array[Symbol], ?ielr_strategy: Symbol, ?automata: Hash[Symbol, IR::Automaton]?, ?against: (^(Array[String]) -> Symbol)?, ?against_description: Hash[Symbol, Object?]?) -> void
|
|
39
|
+
|
|
40
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
41
|
+
def run: () -> Hash[Symbol, Object?]
|
|
42
|
+
|
|
43
|
+
# Minimize one observed mismatch without changing its kind or outcomes.
|
|
44
|
+
# @rbs (Mismatch mismatch, ?max_trials: Integer) -> DeltaReducer::Result
|
|
45
|
+
def minimize: (Mismatch mismatch, ?max_trials: Integer) -> DeltaReducer::Result
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Array[Array[String]]
|
|
50
|
+
def generate_sentences: () -> Array[Array[String]]
|
|
51
|
+
|
|
52
|
+
# @rbs (Integer sentence_count, Integer mutation_count) -> untyped
|
|
53
|
+
def successful_report: (Integer sentence_count, Integer mutation_count) -> untyped
|
|
54
|
+
|
|
55
|
+
# @rbs () -> Hash[Symbol, IR::Automaton]
|
|
56
|
+
def build_automata: () -> Hash[Symbol, IR::Automaton]
|
|
57
|
+
|
|
58
|
+
# @rbs (Array[String] tokens, kind: Symbol, sentence: Integer) -> void
|
|
59
|
+
def compare!: (Array[String] tokens, kind: Symbol, sentence: Integer) -> void
|
|
60
|
+
|
|
61
|
+
# @rbs (Array[String] tokens) -> Array[Array[String]]
|
|
62
|
+
def mutations: (Array[String] tokens) -> Array[Array[String]]
|
|
63
|
+
|
|
64
|
+
# @rbs (Array[String] tokens, kind: Symbol, sentence: Integer,
|
|
65
|
+
# outcomes: Hash[Symbol, fuzz_outcome]) -> bool
|
|
66
|
+
def mismatch_reproduced?: (Array[String] tokens, kind: Symbol, sentence: Integer, outcomes: Hash[Symbol, fuzz_outcome]) -> bool
|
|
67
|
+
|
|
68
|
+
# @rbs (Ibex::Error error) -> bool
|
|
69
|
+
def budget_error?: (Ibex::Error error) -> bool
|
|
70
|
+
end
|
|
71
|
+
end
|