ibex 0.2.0 → 0.4.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 +100 -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 +274 -0
- data/docs/development.md +196 -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 +1617 -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/impact.md +101 -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 +129 -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 +310 -0
- data/docs/stability.md +145 -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/sets.rb +14 -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/impact.rb +393 -0
- 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 +362 -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 +141 -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/impact/action_impact.rb +148 -0
- data/lib/ibex/impact/automaton_impact.rb +57 -0
- data/lib/ibex/impact/coverage_impact.rb +53 -0
- data/lib/ibex/impact/graph.rb +132 -0
- data/lib/ibex/impact/propagation.rb +147 -0
- data/lib/ibex/impact/report.rb +273 -0
- data/lib/ibex/impact/seeds.rb +69 -0
- data/lib/ibex/impact/severity.rb +139 -0
- data/lib/ibex/impact.rb +16 -0
- 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 +11 -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/impact-v1.schema.json +208 -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/analysis/sets.rbs +10 -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/impact.rbs +95 -0
- 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/impact/action_impact.rbs +58 -0
- data/sig/ibex/impact/automaton_impact.rbs +37 -0
- data/sig/ibex/impact/coverage_impact.rbs +28 -0
- data/sig/ibex/impact/graph.rbs +67 -0
- data/sig/ibex/impact/propagation.rbs +56 -0
- data/sig/ibex/impact/report.rbs +107 -0
- data/sig/ibex/impact/seeds.rbs +36 -0
- data/sig/ibex/impact/severity.rbs +55 -0
- data/sig/ibex/impact.rbs +6 -0
- 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 +254 -12
- data/lib/ibex/ir/migration.rb +0 -120
- data/sig/ibex/ir/migration.rbs +0 -34
|
@@ -19,6 +19,8 @@ module Ibex
|
|
|
19
19
|
|
|
20
20
|
type formatter_element = { segment: Segment, external: external_token?, role: Symbol?, gap: Array[Segment] }
|
|
21
21
|
|
|
22
|
+
type formatter_state = { section: :declarations | :rules, precedence_closer: external_token?, conversion: bool, conversion_name: bool, parser: bool, parser_key: bool, depth: Integer, rule_colon: bool }
|
|
23
|
+
|
|
22
24
|
# @rbs (String source, ?file: String, ?mode: Symbol) -> String
|
|
23
25
|
def self.format: (String source, ?file: String, ?mode: Symbol) -> String
|
|
24
26
|
|
|
@@ -45,32 +47,38 @@ module Ibex
|
|
|
45
47
|
# @rbs (Array[formatter_element] elements) -> void
|
|
46
48
|
def annotate_comment_indentation: (Array[formatter_element] elements) -> void
|
|
47
49
|
|
|
48
|
-
# @rbs (external_token external,
|
|
49
|
-
def token_role: (external_token external,
|
|
50
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
51
|
+
def token_role: (external_token external, formatter_state state) -> Symbol?
|
|
52
|
+
|
|
53
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
54
|
+
def document_token_role: (external_token external, formatter_state state) -> Symbol?
|
|
55
|
+
|
|
56
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
57
|
+
def nested_declaration_role: (external_token external, formatter_state state) -> Symbol?
|
|
50
58
|
|
|
51
|
-
# @rbs (
|
|
52
|
-
def
|
|
59
|
+
# @rbs (formatter_state state) -> Symbol?
|
|
60
|
+
def section_end_role: (formatter_state state) -> Symbol?
|
|
53
61
|
|
|
54
|
-
# @rbs (
|
|
55
|
-
def
|
|
62
|
+
# @rbs (external_token external, formatter_state state) -> Symbol?
|
|
63
|
+
def rule_token_role: (external_token external, formatter_state state) -> Symbol?
|
|
56
64
|
|
|
57
|
-
# @rbs (external_token external,
|
|
58
|
-
def
|
|
65
|
+
# @rbs (external_token external, formatter_state state) -> Symbol
|
|
66
|
+
def precedence_role: (external_token external, formatter_state state) -> Symbol
|
|
59
67
|
|
|
60
|
-
# @rbs (external_token external,
|
|
61
|
-
def
|
|
68
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
69
|
+
def advance_role_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
62
70
|
|
|
63
|
-
# @rbs (external_token external, Symbol? role,
|
|
64
|
-
def
|
|
71
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
72
|
+
def advance_parser_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
65
73
|
|
|
66
|
-
# @rbs (external_token external, Symbol? role,
|
|
67
|
-
def advance_precedence_state: (external_token external, Symbol? role,
|
|
74
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
75
|
+
def advance_precedence_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
68
76
|
|
|
69
|
-
# @rbs (external_token external, Symbol? role,
|
|
70
|
-
def advance_conversion_state: (external_token external, Symbol? role,
|
|
77
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
78
|
+
def advance_conversion_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
71
79
|
|
|
72
|
-
# @rbs (external_token external, Symbol? role,
|
|
73
|
-
def advance_rule_state: (external_token external, Symbol? role,
|
|
80
|
+
# @rbs (external_token external, Symbol? role, formatter_state state) -> void
|
|
81
|
+
def advance_rule_state: (external_token external, Symbol? role, formatter_state state) -> void
|
|
74
82
|
|
|
75
83
|
# @rbs (formatter_element? previous, formatter_element current) -> String
|
|
76
84
|
def separator: (formatter_element? previous, formatter_element current) -> String
|
|
@@ -113,23 +121,23 @@ module Ibex
|
|
|
113
121
|
# @rbs (String text) -> bool
|
|
114
122
|
def text_ends_with_newline?: (String text) -> bool
|
|
115
123
|
|
|
116
|
-
# @rbs (
|
|
117
|
-
def same_semantic_projection?: (
|
|
124
|
+
# @rbs (Object? left, Object? right) -> bool
|
|
125
|
+
def same_semantic_projection?: (Object? left, Object? right) -> bool
|
|
118
126
|
|
|
119
|
-
# @rbs (
|
|
120
|
-
def comparable_semantic_values?: (
|
|
127
|
+
# @rbs (Object? left, Object? right) -> bool
|
|
128
|
+
def comparable_semantic_values?: (Object? left, Object? right) -> bool
|
|
121
129
|
|
|
122
|
-
# @rbs (Hash[
|
|
123
|
-
def comparable_semantic_hashes?: (Hash[
|
|
130
|
+
# @rbs (Hash[Object?, Object?] left, Object? right) -> bool
|
|
131
|
+
def comparable_semantic_hashes?: (Hash[Object?, Object?] left, Object? right) -> bool
|
|
124
132
|
|
|
125
|
-
# @rbs (Array[[
|
|
126
|
-
def append_semantic_children: (Array[[
|
|
133
|
+
# @rbs (Array[[Object?, Object?]] pending, Object? left, Object? right) -> void
|
|
134
|
+
def append_semantic_children: (Array[[ Object?, Object? ]] pending, Object? left, Object? right) -> void
|
|
127
135
|
|
|
128
|
-
# @rbs (Struct[
|
|
129
|
-
def semantic_members: (Struct[
|
|
136
|
+
# @rbs (Struct[Object?] value) -> Array[Symbol]
|
|
137
|
+
def semantic_members: (Struct[Object?] value) -> Array[Symbol]
|
|
130
138
|
|
|
131
|
-
# @rbs (Hash[
|
|
132
|
-
def semantic_keys: (Hash[
|
|
139
|
+
# @rbs (Hash[Object?, Object?] value) -> Array[Object?]
|
|
140
|
+
def semantic_keys: (Hash[Object?, Object?] value) -> Array[Object?]
|
|
133
141
|
end
|
|
134
142
|
end
|
|
135
143
|
end
|
|
@@ -95,31 +95,31 @@ module Ibex
|
|
|
95
95
|
|
|
96
96
|
private def _ibex_action_31: (untyped v0) -> untyped
|
|
97
97
|
|
|
98
|
-
private def _ibex_action_32: (untyped v0
|
|
98
|
+
private def _ibex_action_32: (untyped v0) -> untyped
|
|
99
99
|
|
|
100
100
|
private def _ibex_action_33: (untyped v0, untyped v1) -> untyped
|
|
101
101
|
|
|
102
102
|
private def _ibex_action_34: (untyped v0, untyped v1) -> untyped
|
|
103
103
|
|
|
104
|
-
private def _ibex_action_35: () -> untyped
|
|
104
|
+
private def _ibex_action_35: (untyped v0, untyped v1) -> untyped
|
|
105
105
|
|
|
106
|
-
private def _ibex_action_36: (
|
|
106
|
+
private def _ibex_action_36: () -> untyped
|
|
107
107
|
|
|
108
|
-
private def _ibex_action_37: (untyped v0) -> untyped
|
|
108
|
+
private def _ibex_action_37: (untyped v0, untyped v1) -> untyped
|
|
109
109
|
|
|
110
|
-
private def _ibex_action_38: (untyped v0
|
|
110
|
+
private def _ibex_action_38: (untyped v0) -> untyped
|
|
111
111
|
|
|
112
|
-
private def _ibex_action_39: (untyped v0, untyped v1
|
|
112
|
+
private def _ibex_action_39: (untyped v0, untyped v1) -> untyped
|
|
113
113
|
|
|
114
114
|
private def _ibex_action_40: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
115
115
|
|
|
116
|
-
private def _ibex_action_41: () -> untyped
|
|
116
|
+
private def _ibex_action_41: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
117
117
|
|
|
118
|
-
private def _ibex_action_42: (
|
|
118
|
+
private def _ibex_action_42: () -> untyped
|
|
119
119
|
|
|
120
120
|
private def _ibex_action_43: (untyped v0, untyped v1) -> untyped
|
|
121
121
|
|
|
122
|
-
private def _ibex_action_44: (untyped v0) -> untyped
|
|
122
|
+
private def _ibex_action_44: (untyped v0, untyped v1) -> untyped
|
|
123
123
|
|
|
124
124
|
private def _ibex_action_45: (untyped v0) -> untyped
|
|
125
125
|
|
|
@@ -127,135 +127,135 @@ module Ibex
|
|
|
127
127
|
|
|
128
128
|
private def _ibex_action_47: (untyped v0) -> untyped
|
|
129
129
|
|
|
130
|
-
private def _ibex_action_48: (untyped v0
|
|
130
|
+
private def _ibex_action_48: (untyped v0) -> untyped
|
|
131
131
|
|
|
132
132
|
private def _ibex_action_49: (untyped v0, untyped v1) -> untyped
|
|
133
133
|
|
|
134
134
|
private def _ibex_action_50: (untyped v0, untyped v1) -> untyped
|
|
135
135
|
|
|
136
|
-
private def _ibex_action_51: (untyped v0, untyped v1
|
|
136
|
+
private def _ibex_action_51: (untyped v0, untyped v1) -> untyped
|
|
137
137
|
|
|
138
|
-
private def _ibex_action_52: (untyped
|
|
138
|
+
private def _ibex_action_52: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
139
139
|
|
|
140
|
-
private def _ibex_action_53: (untyped
|
|
140
|
+
private def _ibex_action_53: (untyped val) -> untyped
|
|
141
141
|
|
|
142
142
|
private def _ibex_action_54: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
143
143
|
|
|
144
144
|
private def _ibex_action_55: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
145
145
|
|
|
146
|
-
private def _ibex_action_56: () -> untyped
|
|
146
|
+
private def _ibex_action_56: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
147
147
|
|
|
148
|
-
private def _ibex_action_57: (
|
|
148
|
+
private def _ibex_action_57: () -> untyped
|
|
149
149
|
|
|
150
|
-
private def _ibex_action_58: (untyped v0) -> untyped
|
|
150
|
+
private def _ibex_action_58: (untyped v0, untyped v1) -> untyped
|
|
151
151
|
|
|
152
152
|
private def _ibex_action_59: (untyped v0) -> untyped
|
|
153
153
|
|
|
154
|
-
private def _ibex_action_60: (untyped v0
|
|
154
|
+
private def _ibex_action_60: (untyped v0) -> untyped
|
|
155
155
|
|
|
156
156
|
private def _ibex_action_61: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
157
157
|
|
|
158
158
|
private def _ibex_action_62: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
159
159
|
|
|
160
|
-
private def _ibex_action_63: (untyped v0) -> untyped
|
|
160
|
+
private def _ibex_action_63: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
161
161
|
|
|
162
162
|
private def _ibex_action_64: (untyped v0) -> untyped
|
|
163
163
|
|
|
164
|
-
private def _ibex_action_65: () -> untyped
|
|
164
|
+
private def _ibex_action_65: (untyped v0) -> untyped
|
|
165
165
|
|
|
166
|
-
private def _ibex_action_66: (
|
|
166
|
+
private def _ibex_action_66: () -> untyped
|
|
167
167
|
|
|
168
|
-
private def _ibex_action_67: (untyped
|
|
168
|
+
private def _ibex_action_67: (untyped v0) -> untyped
|
|
169
169
|
|
|
170
|
-
private def _ibex_action_68: (untyped
|
|
170
|
+
private def _ibex_action_68: (untyped val) -> untyped
|
|
171
171
|
|
|
172
|
-
private def _ibex_action_69: () -> untyped
|
|
172
|
+
private def _ibex_action_69: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
173
173
|
|
|
174
|
-
private def _ibex_action_70: (
|
|
174
|
+
private def _ibex_action_70: () -> untyped
|
|
175
175
|
|
|
176
176
|
private def _ibex_action_71: (untyped v0, untyped v1) -> untyped
|
|
177
177
|
|
|
178
|
-
private def _ibex_action_72: (untyped v0, untyped v1
|
|
178
|
+
private def _ibex_action_72: (untyped v0, untyped v1) -> untyped
|
|
179
179
|
|
|
180
180
|
private def _ibex_action_73: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
181
181
|
|
|
182
182
|
private def _ibex_action_74: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
183
183
|
|
|
184
|
-
private def _ibex_action_75: () -> untyped
|
|
184
|
+
private def _ibex_action_75: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
185
185
|
|
|
186
|
-
private def _ibex_action_76: (
|
|
186
|
+
private def _ibex_action_76: () -> untyped
|
|
187
187
|
|
|
188
|
-
private def _ibex_action_77: (untyped v0
|
|
188
|
+
private def _ibex_action_77: (untyped v0) -> untyped
|
|
189
189
|
|
|
190
|
-
private def _ibex_action_78: () -> untyped
|
|
190
|
+
private def _ibex_action_78: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
191
191
|
|
|
192
|
-
private def _ibex_action_79: (untyped v0, untyped v1) -> untyped
|
|
192
|
+
private def _ibex_action_79: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
193
193
|
|
|
194
194
|
private def _ibex_action_80: () -> untyped
|
|
195
195
|
|
|
196
196
|
private def _ibex_action_81: (untyped v0, untyped v1) -> untyped
|
|
197
197
|
|
|
198
|
-
private def _ibex_action_82: (untyped v0) -> untyped
|
|
198
|
+
private def _ibex_action_82: (untyped v0, untyped v1) -> untyped
|
|
199
199
|
|
|
200
|
-
private def _ibex_action_83: (
|
|
200
|
+
private def _ibex_action_83: () -> untyped
|
|
201
201
|
|
|
202
|
-
private def _ibex_action_84: (untyped v0) -> untyped
|
|
202
|
+
private def _ibex_action_84: (untyped v0, untyped v1) -> untyped
|
|
203
203
|
|
|
204
|
-
private def _ibex_action_85: (
|
|
204
|
+
private def _ibex_action_85: () -> untyped
|
|
205
205
|
|
|
206
|
-
private def _ibex_action_86: (untyped
|
|
206
|
+
private def _ibex_action_86: (untyped v0, untyped v1) -> untyped
|
|
207
207
|
|
|
208
|
-
private def _ibex_action_87: () -> untyped
|
|
208
|
+
private def _ibex_action_87: (untyped v0) -> untyped
|
|
209
209
|
|
|
210
210
|
private def _ibex_action_88: (untyped v0) -> untyped
|
|
211
211
|
|
|
212
|
-
private def _ibex_action_89: () -> untyped
|
|
212
|
+
private def _ibex_action_89: (untyped v0) -> untyped
|
|
213
213
|
|
|
214
|
-
private def _ibex_action_90: (untyped v0, untyped v1
|
|
214
|
+
private def _ibex_action_90: (untyped v0, untyped v1) -> untyped
|
|
215
215
|
|
|
216
|
-
private def _ibex_action_91: (untyped
|
|
216
|
+
private def _ibex_action_91: (untyped val) -> untyped
|
|
217
217
|
|
|
218
|
-
private def _ibex_action_92: (
|
|
218
|
+
private def _ibex_action_92: () -> untyped
|
|
219
219
|
|
|
220
|
-
private def
|
|
220
|
+
private def _ibex_action_93: (untyped v0) -> untyped
|
|
221
221
|
|
|
222
|
-
private def
|
|
222
|
+
private def _ibex_action_94: () -> untyped
|
|
223
223
|
|
|
224
|
-
private def
|
|
224
|
+
private def _ibex_action_95: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
225
225
|
|
|
226
|
-
private def
|
|
226
|
+
private def _ibex_action_96: (untyped v0) -> untyped
|
|
227
227
|
|
|
228
|
-
private def
|
|
228
|
+
private def _ibex_action_97: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
229
229
|
|
|
230
|
-
private def _ibex_action_100: () -> untyped
|
|
230
|
+
private def _ibex_action_100: (untyped v0) -> untyped
|
|
231
231
|
|
|
232
|
-
private def _ibex_action_101: (untyped v0) -> untyped
|
|
232
|
+
private def _ibex_action_101: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
233
233
|
|
|
234
|
-
private def _ibex_action_102: () -> untyped
|
|
234
|
+
private def _ibex_action_102: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
235
235
|
|
|
236
|
-
private def _ibex_action_103: (
|
|
236
|
+
private def _ibex_action_103: () -> untyped
|
|
237
237
|
|
|
238
|
-
private def _ibex_action_104: () -> untyped
|
|
238
|
+
private def _ibex_action_104: (untyped val) -> untyped
|
|
239
239
|
|
|
240
|
-
private def _ibex_action_105: (
|
|
240
|
+
private def _ibex_action_105: () -> untyped
|
|
241
241
|
|
|
242
242
|
private def _ibex_action_106: (untyped v0) -> untyped
|
|
243
243
|
|
|
244
|
-
private def _ibex_action_107: (
|
|
244
|
+
private def _ibex_action_107: () -> untyped
|
|
245
245
|
|
|
246
|
-
private def _ibex_action_108: (untyped v0) -> untyped
|
|
246
|
+
private def _ibex_action_108: (untyped v0, untyped v1) -> untyped
|
|
247
247
|
|
|
248
|
-
private def _ibex_action_109: (
|
|
248
|
+
private def _ibex_action_109: () -> untyped
|
|
249
249
|
|
|
250
|
-
private def _ibex_action_110: (untyped v0) -> untyped
|
|
250
|
+
private def _ibex_action_110: (untyped v0, untyped v1) -> untyped
|
|
251
251
|
|
|
252
252
|
private def _ibex_action_111: (untyped v0) -> untyped
|
|
253
253
|
|
|
254
|
-
private def _ibex_action_112: (untyped v0
|
|
254
|
+
private def _ibex_action_112: (untyped v0) -> untyped
|
|
255
255
|
|
|
256
|
-
private def _ibex_action_113: (untyped
|
|
256
|
+
private def _ibex_action_113: (untyped v0) -> untyped
|
|
257
257
|
|
|
258
|
-
private def _ibex_action_114: () -> untyped
|
|
258
|
+
private def _ibex_action_114: (untyped v0) -> untyped
|
|
259
259
|
|
|
260
260
|
private def _ibex_action_115: (untyped v0) -> untyped
|
|
261
261
|
|
|
@@ -263,51 +263,61 @@ module Ibex
|
|
|
263
263
|
|
|
264
264
|
private def _ibex_action_117: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
265
265
|
|
|
266
|
-
private def _ibex_action_118: (untyped
|
|
266
|
+
private def _ibex_action_118: (untyped val) -> untyped
|
|
267
267
|
|
|
268
|
-
private def _ibex_action_119: (
|
|
268
|
+
private def _ibex_action_119: () -> untyped
|
|
269
269
|
|
|
270
270
|
private def _ibex_action_120: (untyped v0) -> untyped
|
|
271
271
|
|
|
272
272
|
private def _ibex_action_121: (untyped v0) -> untyped
|
|
273
273
|
|
|
274
|
-
private def _ibex_action_122: () -> untyped
|
|
274
|
+
private def _ibex_action_122: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
275
275
|
|
|
276
|
-
private def _ibex_action_123: (untyped v0
|
|
276
|
+
private def _ibex_action_123: (untyped v0) -> untyped
|
|
277
277
|
|
|
278
|
-
private def _ibex_action_124: () -> untyped
|
|
278
|
+
private def _ibex_action_124: (untyped v0) -> untyped
|
|
279
279
|
|
|
280
|
-
private def _ibex_action_125: (untyped v0
|
|
280
|
+
private def _ibex_action_125: (untyped v0) -> untyped
|
|
281
281
|
|
|
282
|
-
private def _ibex_action_126: (untyped v0
|
|
282
|
+
private def _ibex_action_126: (untyped v0) -> untyped
|
|
283
283
|
|
|
284
|
-
private def _ibex_action_127: (
|
|
284
|
+
private def _ibex_action_127: () -> untyped
|
|
285
285
|
|
|
286
|
-
private def _ibex_action_128: (untyped v0, untyped v1
|
|
286
|
+
private def _ibex_action_128: (untyped v0, untyped v1) -> untyped
|
|
287
287
|
|
|
288
|
-
private def _ibex_action_129: (
|
|
288
|
+
private def _ibex_action_129: () -> untyped
|
|
289
289
|
|
|
290
|
-
private def _ibex_action_130: (untyped v0, untyped v1
|
|
290
|
+
private def _ibex_action_130: (untyped v0, untyped v1) -> untyped
|
|
291
291
|
|
|
292
|
-
private def _ibex_action_131: () -> untyped
|
|
292
|
+
private def _ibex_action_131: (untyped v0, untyped v1) -> untyped
|
|
293
293
|
|
|
294
294
|
private def _ibex_action_132: (untyped v0, untyped v1) -> untyped
|
|
295
295
|
|
|
296
|
-
private def _ibex_action_133: (untyped v0) -> untyped
|
|
296
|
+
private def _ibex_action_133: (untyped v0, untyped v1, untyped v2, untyped v3) -> untyped
|
|
297
297
|
|
|
298
298
|
private def _ibex_action_134: (untyped v0) -> untyped
|
|
299
299
|
|
|
300
|
-
private def _ibex_action_135: (untyped v0) -> untyped
|
|
300
|
+
private def _ibex_action_135: (untyped v0, untyped v1, untyped v2) -> untyped
|
|
301
|
+
|
|
302
|
+
private def _ibex_action_136: () -> untyped
|
|
303
|
+
|
|
304
|
+
private def _ibex_action_137: (untyped v0, untyped v1) -> untyped
|
|
305
|
+
|
|
306
|
+
private def _ibex_action_138: (untyped v0) -> untyped
|
|
307
|
+
|
|
308
|
+
private def _ibex_action_139: (untyped v0) -> untyped
|
|
309
|
+
|
|
310
|
+
private def _ibex_action_140: (untyped v0) -> untyped
|
|
301
311
|
|
|
302
|
-
private def
|
|
312
|
+
private def _ibex_action_141: (untyped v0) -> untyped
|
|
303
313
|
|
|
304
|
-
private def
|
|
314
|
+
private def _ibex_action_142: (untyped val) -> untyped
|
|
305
315
|
|
|
306
|
-
private def
|
|
316
|
+
private def _ibex_action_143: (untyped val) -> untyped
|
|
307
317
|
|
|
308
|
-
private def
|
|
318
|
+
private def _ibex_action_144: () -> untyped
|
|
309
319
|
|
|
310
|
-
private def
|
|
320
|
+
private def _ibex_action_145: (untyped v0, untyped v1) -> untyped
|
|
311
321
|
end
|
|
312
322
|
end
|
|
313
323
|
end
|
|
@@ -11,6 +11,8 @@ module Ibex
|
|
|
11
11
|
|
|
12
12
|
include GeneratedParserParameters
|
|
13
13
|
|
|
14
|
+
include ParserConfigurationSupport
|
|
15
|
+
|
|
14
16
|
attr_reader diagnostic_token: Token?
|
|
15
17
|
|
|
16
18
|
@mode: Symbol
|
|
@@ -26,8 +28,8 @@ module Ibex
|
|
|
26
28
|
# @rbs () -> ([external_token, Token] | false)
|
|
27
29
|
def next_token: () -> ([ external_token, Token ] | false)
|
|
28
30
|
|
|
29
|
-
# @rbs (Integer? _token_id, Token? value, Array[
|
|
30
|
-
def on_error: (Integer? _token_id, Token? value, Array[
|
|
31
|
+
# @rbs (Integer? _token_id, Token? value, Array[Object?] _value_stack) -> bot
|
|
32
|
+
def on_error: (Integer? _token_id, Token? value, Array[Object?] _value_stack) -> bot
|
|
31
33
|
|
|
32
34
|
private
|
|
33
35
|
|
|
@@ -21,6 +21,9 @@ module Ibex
|
|
|
21
21
|
# @rbs () -> AST::declaration
|
|
22
22
|
def parse_declaration: () -> AST::declaration
|
|
23
23
|
|
|
24
|
+
# @rbs () -> AST::ParserConfiguration
|
|
25
|
+
def parse_parser_configuration: () -> AST::ParserConfiguration
|
|
26
|
+
|
|
24
27
|
# @rbs () -> AST::Include
|
|
25
28
|
def parse_import: () -> AST::Include
|
|
26
29
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/parser_configuration_support.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
# Shares the closed parser-declaration semantics between bootstrap and generated frontends.
|
|
6
|
+
module ParserConfigurationSupport
|
|
7
|
+
private def token_string: (Token) -> String
|
|
8
|
+
|
|
9
|
+
private def fail_at: (Location, String) -> bot
|
|
10
|
+
|
|
11
|
+
private def extended_only!: (Location, String) -> void
|
|
12
|
+
|
|
13
|
+
PARSER_SETTING_VALUES: Hash[String, Array[String]]
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
# @rbs (Token key, Token value) -> AST::ParserSetting
|
|
18
|
+
def build_parser_setting: (Token key, Token value) -> AST::ParserSetting
|
|
19
|
+
|
|
20
|
+
# @rbs (Token keyword, Array[AST::ParserSetting] settings) -> AST::ParserConfiguration
|
|
21
|
+
def build_parser_configuration: (Token keyword, Array[AST::ParserSetting] settings) -> AST::ParserConfiguration
|
|
22
|
+
|
|
23
|
+
# @rbs (Array[AST::declaration] declarations) -> void
|
|
24
|
+
def validate_root_parser_configuration: (Array[AST::declaration] declarations) -> void
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -23,8 +23,9 @@ module Ibex
|
|
|
23
23
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
|
-
#
|
|
27
|
-
|
|
26
|
+
# AST payloads are recursively heterogeneous and are only traversed to freeze them.
|
|
27
|
+
# @rbs (Object? value) -> Object?
|
|
28
|
+
def deep_freeze_ast: (Object? value) -> Object?
|
|
28
29
|
|
|
29
30
|
# @rbs (IR::source_provenance entry) -> IR::source_provenance
|
|
30
31
|
def copy_provenance: (IR::source_provenance entry) -> IR::source_provenance
|
|
@@ -37,8 +37,8 @@ module Ibex
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
class Token
|
|
40
|
-
# @rbs () -> Hash[Symbol,
|
|
41
|
-
def to_h: () -> Hash[Symbol,
|
|
40
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
41
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
# Advances through source text while maintaining one-based coordinates.
|
|
@@ -6,6 +6,9 @@ module Ibex
|
|
|
6
6
|
module SourceEncoding
|
|
7
7
|
# @rbs (String source, String file) -> String
|
|
8
8
|
def self.validated_utf8: (String source, String file) -> String
|
|
9
|
+
|
|
10
|
+
# @rbs (String file) -> String
|
|
11
|
+
def self.validated_file: (String file) -> String
|
|
9
12
|
end
|
|
10
13
|
|
|
11
14
|
# An immutable position in grammar source.
|
|
@@ -46,8 +49,8 @@ module Ibex
|
|
|
46
49
|
# @rbs () -> bool
|
|
47
50
|
def empty?: () -> bool
|
|
48
51
|
|
|
49
|
-
# @rbs () -> Hash[Symbol,
|
|
50
|
-
def to_h: () -> Hash[Symbol,
|
|
52
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
53
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
51
54
|
end
|
|
52
55
|
end
|
|
53
56
|
end
|
|
@@ -29,7 +29,7 @@ module Ibex
|
|
|
29
29
|
|
|
30
30
|
@pragma_location: Location?
|
|
31
31
|
|
|
32
|
-
@pragmas: Hash[String,
|
|
32
|
+
@pragmas: Hash[String, Location]
|
|
33
33
|
|
|
34
34
|
@fragment: bool?
|
|
35
35
|
|
|
@@ -50,6 +50,12 @@ module Ibex
|
|
|
50
50
|
# @rbs () -> bool
|
|
51
51
|
def cst_pragma?: () -> bool
|
|
52
52
|
|
|
53
|
+
# @rbs () -> Location?
|
|
54
|
+
def extended_pragma_location: () -> Location?
|
|
55
|
+
|
|
56
|
+
# @rbs () -> Location?
|
|
57
|
+
def cst_pragma_location: () -> Location?
|
|
58
|
+
|
|
53
59
|
# @rbs (Token? token) -> String?
|
|
54
60
|
def expectation: (Token? token) -> String?
|
|
55
61
|
|
|
@@ -58,6 +64,12 @@ module Ibex
|
|
|
58
64
|
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
59
65
|
def classify_identifier: (Token token, Array[Token] remaining) -> external_token
|
|
60
66
|
|
|
67
|
+
# @rbs (Token token) -> external_token
|
|
68
|
+
def begin_parser_setting: (Token token) -> external_token
|
|
69
|
+
|
|
70
|
+
# @rbs () -> external_token
|
|
71
|
+
def finish_parser_setting: () -> external_token
|
|
72
|
+
|
|
61
73
|
# @rbs (Array[Token] remaining) -> external_token
|
|
62
74
|
def constant_name: (Array[Token] remaining) -> external_token
|
|
63
75
|
|
|
@@ -43,6 +43,12 @@ module Ibex
|
|
|
43
43
|
# @rbs () -> bool
|
|
44
44
|
def cst_pragma?: () -> bool
|
|
45
45
|
|
|
46
|
+
# @rbs () -> Location?
|
|
47
|
+
def extended_pragma_location: () -> Location?
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Location?
|
|
50
|
+
def cst_pragma_location: () -> Location?
|
|
51
|
+
|
|
46
52
|
# @rbs () -> parser_section
|
|
47
53
|
def section: () -> parser_section
|
|
48
54
|
|
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
|
|
@@ -22,8 +22,8 @@ module Ibex
|
|
|
22
22
|
# @rbs (String path) -> void
|
|
23
23
|
def add_access_path: (String path) -> void
|
|
24
24
|
|
|
25
|
-
# @rbs () -> Hash[String,
|
|
26
|
-
def to_h: () -> Hash[String,
|
|
25
|
+
# @rbs () -> Hash[String, String | Integer]
|
|
26
|
+
def to_h: () -> Hash[String, String | Integer]
|
|
27
27
|
|
|
28
28
|
# Detect content changes even when size and timestamps are preserved.
|
|
29
29
|
# @rbs () -> bool
|