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
data/sig/ibex/analysis/sets.rbs
CHANGED
|
@@ -10,6 +10,13 @@ module Ibex
|
|
|
10
10
|
|
|
11
11
|
attr_reader follow_bits: Array[Integer]
|
|
12
12
|
|
|
13
|
+
# The index is a symbol id; each value lists the symbols that must be
|
|
14
|
+
# recomputed when the indexed symbol's set changes. These edges already
|
|
15
|
+
# point in the impact-propagation direction.
|
|
16
|
+
attr_reader first_dependencies: Array[Array[Integer]]
|
|
17
|
+
|
|
18
|
+
attr_reader follow_dependencies: Array[Array[Integer]]
|
|
19
|
+
|
|
13
20
|
@grammar: IR::Grammar
|
|
14
21
|
|
|
15
22
|
# @rbs (IR::Grammar grammar) -> void
|
|
@@ -44,6 +51,9 @@ module Ibex
|
|
|
44
51
|
# @rbs () -> void
|
|
45
52
|
def compute_follow: () -> void
|
|
46
53
|
|
|
54
|
+
# @rbs (Array[Array[Integer]] dependencies) -> Array[Array[Integer]]
|
|
55
|
+
def freeze_dependencies: (Array[Array[Integer]] dependencies) -> Array[Array[Integer]]
|
|
56
|
+
|
|
47
57
|
# @rbs (IR::Production production, Array[Array[Integer]] dependencies) -> void
|
|
48
58
|
def initialize_follow: (IR::Production production, Array[Array[Integer]] dependencies) -> void
|
|
49
59
|
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Generated from lib/ibex/bison_import/importer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module BisonImport
|
|
5
|
+
# Converts Bison declarations and productions into analysis-only Ibex
|
|
6
|
+
# source without parsing or executing C.
|
|
7
|
+
# rubocop:disable Metrics/ClassLength -- declaration and rule recovery share one positioned directive report.
|
|
8
|
+
class Importer
|
|
9
|
+
type alternative = { items: Array[String], precedence: String? }
|
|
10
|
+
|
|
11
|
+
type rule = { lhs: String, alternatives: Array[alternative] }
|
|
12
|
+
|
|
13
|
+
DEFAULT_MAX_BYTES: Integer
|
|
14
|
+
|
|
15
|
+
DEFAULT_MAX_TOKENS: Integer
|
|
16
|
+
|
|
17
|
+
DEFAULT_MAX_RULES: Integer
|
|
18
|
+
|
|
19
|
+
DEFAULT_MAX_ACTIONS: Integer
|
|
20
|
+
|
|
21
|
+
# @rbs (String source, file: String, ?class_name: String?, ?max_bytes: Integer,
|
|
22
|
+
# ?max_tokens: Integer, ?max_rules: Integer, ?max_actions: Integer) -> void
|
|
23
|
+
def initialize: (String source, file: String, ?class_name: String?, ?max_bytes: Integer, ?max_tokens: Integer, ?max_rules: Integer, ?max_actions: Integer) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Result
|
|
26
|
+
def run: () -> Result
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
# @rbs () -> void
|
|
31
|
+
def validate_source: () -> void
|
|
32
|
+
|
|
33
|
+
# @rbs () -> [String, String, Integer]
|
|
34
|
+
def split_sections: () -> [ String, String, Integer ]
|
|
35
|
+
|
|
36
|
+
# @rbs (String source) -> void
|
|
37
|
+
def parse_declarations: (String source) -> void
|
|
38
|
+
|
|
39
|
+
# @rbs (String source) -> Array[{ name: String, detail: String, line: Integer, column: Integer }]
|
|
40
|
+
def declaration_chunks: (String source) -> Array[{ name: String, detail: String, line: Integer, column: Integer }]
|
|
41
|
+
|
|
42
|
+
# @rbs (String detail) -> void
|
|
43
|
+
def parse_token_declaration: (String detail) -> void
|
|
44
|
+
|
|
45
|
+
# @rbs (String association, String detail) -> void
|
|
46
|
+
def parse_precedence: (String association, String detail) -> void
|
|
47
|
+
|
|
48
|
+
# @rbs (String detail) -> void
|
|
49
|
+
def parse_start: (String detail) -> void
|
|
50
|
+
|
|
51
|
+
# @rbs (Array[Tokenizer::Token] tokens) -> Array[rule]
|
|
52
|
+
def parse_rules: (Array[Tokenizer::Token] tokens) -> Array[rule]
|
|
53
|
+
|
|
54
|
+
# @rbs (Array[Tokenizer::Token] tokens) -> void
|
|
55
|
+
def register_nonterminals: (Array[Tokenizer::Token] tokens) -> void
|
|
56
|
+
|
|
57
|
+
# @rbs (Array[Tokenizer::Token] tokens, Integer cursor) -> [Integer, Integer]?
|
|
58
|
+
def next_lhs: (Array[Tokenizer::Token] tokens, Integer cursor) -> [ Integer, Integer ]?
|
|
59
|
+
|
|
60
|
+
# Bison permits a named reference between an LHS and its colon:
|
|
61
|
+
# `expression[result]: ...`.
|
|
62
|
+
# @rbs (Array[Tokenizer::Token] tokens, Integer cursor) -> [Integer, Integer]?
|
|
63
|
+
def lhs_definition_at: (Array[Tokenizer::Token] tokens, Integer cursor) -> [ Integer, Integer ]?
|
|
64
|
+
|
|
65
|
+
# @rbs (Array[Tokenizer::Token] tokens, Integer cursor) -> [Array[alternative], Integer]
|
|
66
|
+
def parse_alternatives: (Array[Tokenizer::Token] tokens, Integer cursor) -> [ Array[alternative], Integer ]
|
|
67
|
+
|
|
68
|
+
# @rbs (Array[Tokenizer::Token] tokens, Integer cursor, alternative alternative) -> Integer
|
|
69
|
+
def consume_rule_directive: (Array[Tokenizer::Token] tokens, Integer cursor, alternative alternative) -> Integer
|
|
70
|
+
|
|
71
|
+
# @rbs (Tokenizer::Token token) -> String
|
|
72
|
+
def render_symbol: (Tokenizer::Token token) -> String
|
|
73
|
+
|
|
74
|
+
# @rbs (Tokenizer::Token token) -> String
|
|
75
|
+
def render_action: (Tokenizer::Token token) -> String
|
|
76
|
+
|
|
77
|
+
# @rbs (String code) -> String
|
|
78
|
+
def transform_action: (String code) -> String
|
|
79
|
+
|
|
80
|
+
# @rbs (Array[rule] rules) -> String
|
|
81
|
+
def render_source: (Array[rule] rules) -> String
|
|
82
|
+
|
|
83
|
+
# @rbs () -> String
|
|
84
|
+
def structural_status: () -> String
|
|
85
|
+
|
|
86
|
+
# @rbs (Array[String] lines) -> void
|
|
87
|
+
def render_precedence: (Array[String] lines) -> void
|
|
88
|
+
|
|
89
|
+
# @rbs (Array[String] lines, rule rule) -> void
|
|
90
|
+
def render_rule: (Array[String] lines, rule rule) -> void
|
|
91
|
+
|
|
92
|
+
# @rbs (String name, Integer line, Integer column, String detail) -> void
|
|
93
|
+
def record_directive: (String name, Integer line, Integer column, String detail) -> void
|
|
94
|
+
|
|
95
|
+
# @rbs (String detail) -> Array[String]
|
|
96
|
+
def declaration_atoms: (String detail) -> Array[String]
|
|
97
|
+
|
|
98
|
+
# @rbs (String source) -> String
|
|
99
|
+
def strip_declaration_comments: (String source) -> String
|
|
100
|
+
|
|
101
|
+
# @rbs (String value) -> bool
|
|
102
|
+
def identifier_atom?: (String value) -> bool
|
|
103
|
+
|
|
104
|
+
# @rbs (String value) -> bool
|
|
105
|
+
def literal_atom?: (String value) -> bool
|
|
106
|
+
|
|
107
|
+
# @rbs (String value) -> String
|
|
108
|
+
def sanitize_symbol: (String value) -> String
|
|
109
|
+
|
|
110
|
+
# @rbs (String value) -> String
|
|
111
|
+
def terminal_name: (String value) -> String
|
|
112
|
+
|
|
113
|
+
# All imported nonterminals receive a lowercase namespace. This avoids
|
|
114
|
+
# Ibex's terminal-by-case convention and declaration keyword collisions.
|
|
115
|
+
# @rbs (String value) -> String
|
|
116
|
+
def nonterminal_name: (String value) -> String
|
|
117
|
+
|
|
118
|
+
# @rbs () -> String
|
|
119
|
+
def resolved_class_name: () -> String
|
|
120
|
+
|
|
121
|
+
# @rbs (String value) -> String
|
|
122
|
+
def sanitize_class_name: (String value) -> String
|
|
123
|
+
|
|
124
|
+
# @rbs (String value) -> Integer?
|
|
125
|
+
def first_integer: (String value) -> Integer?
|
|
126
|
+
|
|
127
|
+
# @rbs (Integer count) -> void
|
|
128
|
+
def check_rule_budget: (Integer count) -> void
|
|
129
|
+
|
|
130
|
+
# @rbs (Integer count, Tokenizer::Token token) -> void
|
|
131
|
+
def check_action_budget: (Integer count, Tokenizer::Token token) -> void
|
|
132
|
+
|
|
133
|
+
# @rbs (Integer value, Symbol name) -> Integer
|
|
134
|
+
def positive_limit: (Integer value, Symbol name) -> Integer
|
|
135
|
+
|
|
136
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
137
|
+
def bounds: () -> Hash[Symbol, Integer]
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Generated from lib/ibex/bison_import/tokenizer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module BisonImport
|
|
5
|
+
# Iterative scanner for the punctuation needed to recover Bison rules.
|
|
6
|
+
class Tokenizer
|
|
7
|
+
# One structural token with a byte-oriented source position.
|
|
8
|
+
class Token
|
|
9
|
+
attr_reader type: Symbol
|
|
10
|
+
|
|
11
|
+
attr_reader value: String
|
|
12
|
+
|
|
13
|
+
attr_reader line: Integer
|
|
14
|
+
|
|
15
|
+
attr_reader column: Integer
|
|
16
|
+
|
|
17
|
+
# @rbs (type: Symbol, value: String, line: Integer, column: Integer) -> void
|
|
18
|
+
def initialize: (type: Symbol, value: String, line: Integer, column: Integer) -> void
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
IDENTIFIER_START: Regexp
|
|
22
|
+
|
|
23
|
+
IDENTIFIER_CONTINUE: Regexp
|
|
24
|
+
|
|
25
|
+
# @rbs (String source, start_line: Integer, max_tokens: Integer) -> void
|
|
26
|
+
def initialize: (String source, start_line: Integer, max_tokens: Integer) -> void
|
|
27
|
+
|
|
28
|
+
# @rbs () -> Array[Token]
|
|
29
|
+
def tokenize: () -> Array[Token]
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
# @rbs () -> Token
|
|
34
|
+
def scan_token: () -> Token
|
|
35
|
+
|
|
36
|
+
# @rbs () -> void
|
|
37
|
+
def skip_ignored: () -> void
|
|
38
|
+
|
|
39
|
+
# @rbs () -> String
|
|
40
|
+
def scan_identifier: () -> String
|
|
41
|
+
|
|
42
|
+
# @rbs () -> String
|
|
43
|
+
def scan_directive: () -> String
|
|
44
|
+
|
|
45
|
+
# @rbs (Integer quote) -> String
|
|
46
|
+
def scan_quoted: (Integer quote) -> String
|
|
47
|
+
|
|
48
|
+
# @rbs () -> String
|
|
49
|
+
def scan_action: () -> String
|
|
50
|
+
|
|
51
|
+
# @rbs (Integer? byte) -> bool
|
|
52
|
+
def skip_action_opaque?: (Integer? byte) -> bool
|
|
53
|
+
|
|
54
|
+
# @rbs (Integer opener, Integer closer) -> String
|
|
55
|
+
def scan_delimited: (Integer opener, Integer closer) -> String
|
|
56
|
+
|
|
57
|
+
# @rbs () -> void
|
|
58
|
+
def skip_block_comment: () -> void
|
|
59
|
+
|
|
60
|
+
# @rbs () -> void
|
|
61
|
+
def skip_line: () -> void
|
|
62
|
+
|
|
63
|
+
# @rbs (String value) -> Symbol
|
|
64
|
+
def punctuation_type: (String value) -> Symbol
|
|
65
|
+
|
|
66
|
+
# @rbs (Integer? byte) -> bool
|
|
67
|
+
def identifier_start?: (Integer? byte) -> bool
|
|
68
|
+
|
|
69
|
+
# @rbs (Integer? byte) -> bool
|
|
70
|
+
def identifier_continue?: (Integer? byte) -> bool
|
|
71
|
+
|
|
72
|
+
# @rbs (Integer? byte) -> bool
|
|
73
|
+
def whitespace?: (Integer? byte) -> bool
|
|
74
|
+
|
|
75
|
+
# @rbs (Integer count) -> void
|
|
76
|
+
def check_token_budget: (Integer count) -> void
|
|
77
|
+
|
|
78
|
+
# @rbs () -> Integer?
|
|
79
|
+
def current_byte: () -> Integer?
|
|
80
|
+
|
|
81
|
+
# @rbs () -> Integer?
|
|
82
|
+
def peek_byte: () -> Integer?
|
|
83
|
+
|
|
84
|
+
# @rbs () -> bool
|
|
85
|
+
def eof?: () -> bool
|
|
86
|
+
|
|
87
|
+
# @rbs () -> void
|
|
88
|
+
def advance: () -> void
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Generated from lib/ibex/bison_import.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Clean-room, nonexecuting import of Bison grammar structure.
|
|
5
|
+
module BisonImport
|
|
6
|
+
DIRECTIVES: Hash[String, Symbol]
|
|
7
|
+
|
|
8
|
+
FOREIGN_ACTION_SENTINEL: String
|
|
9
|
+
|
|
10
|
+
STRUCTURAL_STATUS_MARKER: String
|
|
11
|
+
|
|
12
|
+
STRUCTURE_NEUTRAL_UNSUPPORTED: Array[String]
|
|
13
|
+
|
|
14
|
+
class BudgetExceeded < Ibex::Error
|
|
15
|
+
attr_reader details: Hash[Symbol, Object?]
|
|
16
|
+
|
|
17
|
+
# @rbs (Hash[Symbol, Object?] details) -> void
|
|
18
|
+
def initialize: (Hash[Symbol, Object?] details) -> void
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# One directive occurrence and its original source position.
|
|
22
|
+
class Directive
|
|
23
|
+
attr_reader name: String
|
|
24
|
+
|
|
25
|
+
attr_reader status: Symbol
|
|
26
|
+
|
|
27
|
+
attr_reader line: Integer
|
|
28
|
+
|
|
29
|
+
attr_reader column: Integer
|
|
30
|
+
|
|
31
|
+
attr_reader detail: String
|
|
32
|
+
|
|
33
|
+
# @rbs (name: String, status: Symbol, line: Integer, column: Integer, detail: String) -> void
|
|
34
|
+
def initialize: (name: String, status: Symbol, line: Integer, column: Integer, detail: String) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
37
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# One opaque C action and its mechanical reference rewrite.
|
|
41
|
+
class Action
|
|
42
|
+
attr_reader id: Integer
|
|
43
|
+
|
|
44
|
+
attr_reader line: Integer
|
|
45
|
+
|
|
46
|
+
attr_reader column: Integer
|
|
47
|
+
|
|
48
|
+
attr_reader original: String
|
|
49
|
+
|
|
50
|
+
attr_reader transformed: String
|
|
51
|
+
|
|
52
|
+
attr_reader encoded: String
|
|
53
|
+
|
|
54
|
+
# @rbs (id: Integer, line: Integer, column: Integer, original: String, transformed: String,
|
|
55
|
+
# encoded: String) -> void
|
|
56
|
+
def initialize: (id: Integer, line: Integer, column: Integer, original: String, transformed: String, encoded: String) -> void
|
|
57
|
+
|
|
58
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
59
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Immutable source artifact and versioned analysis report.
|
|
63
|
+
class Result
|
|
64
|
+
attr_reader source: String
|
|
65
|
+
|
|
66
|
+
attr_reader file: String
|
|
67
|
+
|
|
68
|
+
attr_reader class_name: String
|
|
69
|
+
|
|
70
|
+
attr_reader directives: Array[Directive]
|
|
71
|
+
|
|
72
|
+
attr_reader actions: Array[Action]
|
|
73
|
+
|
|
74
|
+
attr_reader rule_count: Integer
|
|
75
|
+
|
|
76
|
+
attr_reader bounds: Hash[Symbol, Integer]
|
|
77
|
+
|
|
78
|
+
# @rbs (source: String, file: String, class_name: String, directives: Array[Directive],
|
|
79
|
+
# actions: Array[Action], rule_count: Integer, bounds: Hash[Symbol, Integer]) -> void
|
|
80
|
+
def initialize: (source: String, file: String, class_name: String, directives: Array[Directive], actions: Array[Action], rule_count: Integer, bounds: Hash[Symbol, Integer]) -> void
|
|
81
|
+
|
|
82
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
83
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
84
|
+
|
|
85
|
+
# @rbs () -> Array[Directive]
|
|
86
|
+
def structural_unsupported: () -> Array[Directive]
|
|
87
|
+
|
|
88
|
+
# @rbs () -> bool
|
|
89
|
+
def structurally_complete?: () -> bool
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# @rbs (String source) -> bool
|
|
93
|
+
def self?.bison_source?: (String source) -> bool
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Generated from lib/ibex/bounded_subprocess.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Captures one shell-free child process under wall-clock and output budgets.
|
|
5
|
+
class BoundedSubprocess
|
|
6
|
+
DEFAULT_TIMEOUT_SECONDS: Integer
|
|
7
|
+
|
|
8
|
+
DEFAULT_MAX_OUTPUT_BYTES: Integer
|
|
9
|
+
|
|
10
|
+
TERMINATION_GRACE_SECONDS: Float
|
|
11
|
+
|
|
12
|
+
POLL_SECONDS: Float
|
|
13
|
+
|
|
14
|
+
# Immutable observation of one bounded child-process execution.
|
|
15
|
+
class Result
|
|
16
|
+
attr_reader stdout: String
|
|
17
|
+
|
|
18
|
+
attr_reader stderr: String
|
|
19
|
+
|
|
20
|
+
attr_reader status: Process::Status
|
|
21
|
+
|
|
22
|
+
attr_reader timed_out: bool
|
|
23
|
+
|
|
24
|
+
attr_reader output_limited: bool
|
|
25
|
+
|
|
26
|
+
# @rbs (stdout: String, stderr: String, status: Process::Status,
|
|
27
|
+
# timed_out: bool, output_limited: bool) -> void
|
|
28
|
+
def initialize: (stdout: String, stderr: String, status: Process::Status, timed_out: bool, output_limited: bool) -> void
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @rbs (timeout_seconds: Integer, max_output_bytes: Integer) -> void
|
|
32
|
+
def initialize: (timeout_seconds: Integer, max_output_bytes: Integer) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (Array[String] command, input: String) -> Result
|
|
35
|
+
def run: (Array[String] command, input: String) -> Result
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
# @rbs (Array[String] command, String input, File stdin, File stdout, File stderr) -> Result
|
|
40
|
+
def run_with_files: (Array[String] command, String input, File stdin, File stdout, File stderr) -> Result
|
|
41
|
+
|
|
42
|
+
# @rbs (Array[String] command, File stdin, File stdout, File stderr) -> Integer
|
|
43
|
+
def spawn_child: (Array[String] command, File stdin, File stdout, File stderr) -> Integer
|
|
44
|
+
|
|
45
|
+
# @rbs (Integer pid, String stdout_path, String stderr_path) ->
|
|
46
|
+
# [Process::Status, bool, bool]
|
|
47
|
+
def wait: (Integer pid, String stdout_path, String stderr_path) -> [ Process::Status, bool, bool ]
|
|
48
|
+
|
|
49
|
+
# @rbs (Integer pid) -> Process::Status
|
|
50
|
+
def terminate: (Integer pid) -> Process::Status
|
|
51
|
+
|
|
52
|
+
# @rbs (Integer pid) -> void
|
|
53
|
+
def terminate_descendants: (Integer pid) -> void
|
|
54
|
+
|
|
55
|
+
# @rbs (String signal, Integer pid) -> void
|
|
56
|
+
def signal_process_tree: (String signal, Integer pid) -> void
|
|
57
|
+
|
|
58
|
+
# @rbs (Integer pid) -> bool
|
|
59
|
+
def process_group_alive?: (Integer pid) -> bool
|
|
60
|
+
|
|
61
|
+
# @rbs () -> bool
|
|
62
|
+
def process_groups?: () -> bool
|
|
63
|
+
|
|
64
|
+
# @rbs (Integer pid) -> Process::Status
|
|
65
|
+
def process_status: (Integer pid) -> Process::Status
|
|
66
|
+
|
|
67
|
+
# @rbs (String stdout_path, String stderr_path) -> bool
|
|
68
|
+
def output_exceeded?: (String stdout_path, String stderr_path) -> bool
|
|
69
|
+
|
|
70
|
+
# @rbs (String path) -> String
|
|
71
|
+
def read_bounded: (String path) -> String
|
|
72
|
+
|
|
73
|
+
# @rbs () -> Float
|
|
74
|
+
def monotonic_time: () -> Float
|
|
75
|
+
end
|
|
76
|
+
end
|
data/sig/ibex/cli/ambiguity.rbs
CHANGED
|
@@ -11,6 +11,10 @@ module Ibex
|
|
|
11
11
|
|
|
12
12
|
private def normalize_grammar_path: (String) -> IR::Grammar
|
|
13
13
|
|
|
14
|
+
private def configuration_value: (String) -> untyped
|
|
15
|
+
|
|
16
|
+
private def set_configuration_option: (Symbol, Object?) -> void
|
|
17
|
+
|
|
14
18
|
private
|
|
15
19
|
|
|
16
20
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -18,5 +22,7 @@ module Ibex
|
|
|
18
22
|
|
|
19
23
|
# @rbs () -> OptionParser
|
|
20
24
|
def ambiguity_option_parser: () -> OptionParser
|
|
25
|
+
|
|
26
|
+
private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
21
27
|
end
|
|
22
28
|
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/analysis.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI entry points for deterministic grammar diff and metrics reports.
|
|
5
|
+
module CLIAnalysis
|
|
6
|
+
type analysis_options = Hash[Symbol, untyped]
|
|
7
|
+
|
|
8
|
+
private def normalize_grammar_path: (String) -> IR::Grammar
|
|
9
|
+
|
|
10
|
+
private def set_configuration_option: (Symbol, Object?) -> void
|
|
11
|
+
|
|
12
|
+
private def local_configuration_value: (Hash[Symbol, untyped], String) -> untyped
|
|
13
|
+
|
|
14
|
+
private def set_local_configuration_option: (Hash[Symbol, untyped], Symbol, untyped) -> void
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
19
|
+
def run_diff_command: (Array[String] arguments) -> Integer
|
|
20
|
+
|
|
21
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
22
|
+
def run_metrics_command: (Array[String] arguments) -> Integer
|
|
23
|
+
|
|
24
|
+
# @rbs (Array[String] arguments, String command, operands: String) -> Hash[Symbol, untyped]
|
|
25
|
+
def analysis_options: (Array[String] arguments, String command, operands: String) -> Hash[Symbol, untyped]
|
|
26
|
+
|
|
27
|
+
# @rbs (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
|
|
28
|
+
def load_analysis_automaton: (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
|
|
29
|
+
|
|
30
|
+
# @rbs (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
|
|
31
|
+
def build_analysis_automaton: (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
|
|
32
|
+
|
|
33
|
+
# @rbs (Hash[Symbol, untyped] report, String format) -> void
|
|
34
|
+
def write_analysis_report: (Hash[Symbol, untyped] report, String format) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs (Hash[Symbol, untyped] settings) -> bool
|
|
37
|
+
def algo_set?: (Hash[Symbol, untyped] settings) -> bool
|
|
38
|
+
|
|
39
|
+
private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, untyped], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
40
|
+
|
|
41
|
+
private def configuration_value: (String) -> untyped
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/bison_import.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI boundary for analysis-only Bison grammar import.
|
|
5
|
+
module CLIBisonImport
|
|
6
|
+
type bison_import_options = { format: String, max_bytes: Integer, max_tokens: Integer, max_rules: Integer, max_actions: Integer, ?output: String, ?class_name: String, ?help: bool }
|
|
7
|
+
|
|
8
|
+
private def same_file_target?: (String, String) -> bool
|
|
9
|
+
|
|
10
|
+
private def atomic_write_ir: (String, String) -> void
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
15
|
+
def run_bison_import_command: (Array[String] arguments) -> Integer
|
|
16
|
+
|
|
17
|
+
# @rbs () -> bison_import_options
|
|
18
|
+
def default_bison_import_options: () -> bison_import_options
|
|
19
|
+
|
|
20
|
+
# @rbs (bison_import_options settings) -> OptionParser
|
|
21
|
+
def bison_import_option_parser: (bison_import_options settings) -> OptionParser
|
|
22
|
+
|
|
23
|
+
# @rbs (OptionParser options, bison_import_options settings) -> void
|
|
24
|
+
def add_bison_import_budgets: (OptionParser options, bison_import_options settings) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (String path, bison_import_options settings) -> BisonImport::Result
|
|
27
|
+
def build_bison_import: (String path, bison_import_options settings) -> BisonImport::Result
|
|
28
|
+
|
|
29
|
+
# @rbs (String input, String? output, String source) -> void
|
|
30
|
+
def write_bison_import: (String input, String? output, String source) -> void
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/config.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Static effective-configuration reporting for source grammars and Grammar IR.
|
|
5
|
+
module CLIConfig
|
|
6
|
+
type config_options = { format: String, mode: Symbol, configuration_explicit: Array[Symbol], ?from: String, ?algorithm: Symbol, ?entry_isolation: bool, ?cst_trivia: Symbol, ?superclass: String, ?omit_actions: bool, ?help: String }
|
|
7
|
+
|
|
8
|
+
private def input_path: (Array[String]) -> String
|
|
9
|
+
|
|
10
|
+
private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
15
|
+
def run_config_command: (Array[String] arguments) -> Integer
|
|
16
|
+
|
|
17
|
+
# @rbs (Array[String] arguments) -> [config_options, Array[String]]
|
|
18
|
+
def config_options: (Array[String] arguments) -> [ config_options, Array[String] ]
|
|
19
|
+
|
|
20
|
+
# @rbs (OptionParser options, config_options settings) -> void
|
|
21
|
+
def add_config_options: (OptionParser options, config_options settings) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (OptionParser options, config_options settings) -> void
|
|
24
|
+
def add_config_contract_options: (OptionParser options, config_options settings) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (String path, config_options settings) -> Configuration::Input
|
|
27
|
+
def load_configuration_input: (String path, config_options settings) -> Configuration::Input
|
|
28
|
+
|
|
29
|
+
# @rbs (String path) -> Configuration::Input
|
|
30
|
+
def load_grammar_ir_configuration: (String path) -> Configuration::Input
|
|
31
|
+
|
|
32
|
+
# @rbs (Configuration::Report report, String format) -> void
|
|
33
|
+
def write_configuration_report: (Configuration::Report report, String format) -> void
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -7,10 +7,14 @@ module Ibex
|
|
|
7
7
|
|
|
8
8
|
DEFAULT_MAX_DIAGNOSTICS: Integer
|
|
9
9
|
|
|
10
|
-
type diagnostic_settings =
|
|
10
|
+
type diagnostic_settings = Hash[Symbol, untyped]
|
|
11
11
|
|
|
12
12
|
private def input_path: (Array[String]) -> String
|
|
13
13
|
|
|
14
|
+
private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
|
|
15
|
+
|
|
16
|
+
private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
|
|
17
|
+
|
|
14
18
|
private
|
|
15
19
|
|
|
16
20
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -32,7 +36,16 @@ module Ibex
|
|
|
32
36
|
# @rbs (Frontend::ParseResult result, format: String) -> void
|
|
33
37
|
def write_diagnostics: (Frontend::ParseResult result, format: String) -> void
|
|
34
38
|
|
|
35
|
-
# @rbs (Frontend::ParseResult result) -> Hash[String,
|
|
36
|
-
def diagnostics_document: (Frontend::ParseResult result) -> Hash[String,
|
|
39
|
+
# @rbs (Frontend::ParseResult result) -> Hash[String, Object?]
|
|
40
|
+
def diagnostics_document: (Frontend::ParseResult result) -> Hash[String, Object?]
|
|
41
|
+
|
|
42
|
+
# @rbs (Frontend::Diagnostic diagnostic) -> String
|
|
43
|
+
def localized_diagnostic_text: (Frontend::Diagnostic diagnostic) -> String
|
|
44
|
+
|
|
45
|
+
# @rbs (Frontend::Diagnostic diagnostic) -> Hash[Symbol, Object?]
|
|
46
|
+
def localized_diagnostic_hash: (Frontend::Diagnostic diagnostic) -> Hash[Symbol, Object?]
|
|
47
|
+
|
|
48
|
+
# @rbs (Frontend::Diagnostic diagnostic) -> String
|
|
49
|
+
def localized_diagnostic_message: (Frontend::Diagnostic diagnostic) -> String
|
|
37
50
|
end
|
|
38
51
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
# Generates standalone grammar documentation from the canonical include closure.
|
|
5
5
|
module CLIDocumentation
|
|
6
|
-
type documentation_settings =
|
|
6
|
+
type documentation_settings = Hash[Symbol, untyped]
|
|
7
7
|
|
|
8
8
|
private def input_path: (Array[String]) -> String
|
|
9
9
|
|
|
@@ -11,6 +11,10 @@ module Ibex
|
|
|
11
11
|
|
|
12
12
|
private def atomic_write_ir: (String path, String source) -> void
|
|
13
13
|
|
|
14
|
+
private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
|
|
15
|
+
|
|
16
|
+
private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
|
|
17
|
+
|
|
14
18
|
private
|
|
15
19
|
|
|
16
20
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Generated from lib/ibex/cli/equiv.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# CLI entry point for bounded language comparison.
|
|
5
|
+
module CLIEquiv
|
|
6
|
+
type equiv_options = Hash[Symbol, untyped]
|
|
7
|
+
|
|
8
|
+
private def normalize_grammar_path: (String) -> IR::Grammar
|
|
9
|
+
|
|
10
|
+
private def configuration_value: (String) -> untyped
|
|
11
|
+
|
|
12
|
+
private def set_configuration_option: (Symbol, Object?) -> void
|
|
13
|
+
|
|
14
|
+
private def local_configuration_value: (Hash[Symbol, Object?], String) -> Object?
|
|
15
|
+
|
|
16
|
+
private def set_local_configuration_option: (Hash[Symbol, Object?], Symbol, Object?) -> void
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
# @rbs (Array[String] arguments) -> Integer
|
|
21
|
+
def run_equiv_command: (Array[String] arguments) -> Integer
|
|
22
|
+
|
|
23
|
+
# @rbs (Array[String] arguments) -> equiv_options
|
|
24
|
+
def equiv_options: (Array[String] arguments) -> equiv_options
|
|
25
|
+
|
|
26
|
+
# @rbs () -> equiv_options
|
|
27
|
+
def default_equiv_options: () -> equiv_options
|
|
28
|
+
|
|
29
|
+
# @rbs (OptionParser options, equiv_options settings) -> void
|
|
30
|
+
def add_equiv_search_options: (OptionParser options, equiv_options settings) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
|
|
33
|
+
def load_equiv_automaton: (String path, Symbol algorithm, explicit: bool) -> IR::Automaton
|
|
34
|
+
|
|
35
|
+
# @rbs (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
|
|
36
|
+
def build_equiv_automaton: (IR::Grammar grammar, Symbol algorithm, bool algorithm_explicit) -> IR::Automaton
|
|
37
|
+
|
|
38
|
+
# @rbs (Hash[Symbol, Object?] report, String format) -> void
|
|
39
|
+
def write_equiv_report: (Hash[Symbol, Object?] report, String format) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (equiv_options settings) -> bool
|
|
42
|
+
def algorithm_explicit_equiv?: (equiv_options settings) -> bool
|
|
43
|
+
|
|
44
|
+
private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
45
|
+
|
|
46
|
+
# @rbs (Integer value, String name) -> Integer
|
|
47
|
+
def positive_equiv_option: (Integer value, String name) -> Integer
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -25,6 +25,10 @@ module Ibex
|
|
|
25
25
|
|
|
26
26
|
private def record_generation_input: (String, String) -> GenerationInput
|
|
27
27
|
|
|
28
|
+
private def select_configuration_mode: (String) -> void
|
|
29
|
+
|
|
30
|
+
private def set_configuration_option: (Symbol, Object?) -> void
|
|
31
|
+
|
|
28
32
|
private
|
|
29
33
|
|
|
30
34
|
# @rbs (Array[String] arguments) -> Integer
|
|
@@ -53,5 +57,7 @@ module Ibex
|
|
|
53
57
|
|
|
54
58
|
# @rbs (String path) -> Integer
|
|
55
59
|
def messages_file_mode: (String path) -> Integer
|
|
60
|
+
|
|
61
|
+
private def activate_analysis_grammar: (IR::Grammar, ?options: Hash[Symbol, Object?], ?explicit_keys: Array[Symbol]) -> IR::Grammar
|
|
56
62
|
end
|
|
57
63
|
end
|