ibex 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +89 -123
- data/docs/architecture.md +477 -31
- data/docs/bison-import.md +103 -0
- data/docs/comparison-policy.md +127 -0
- data/docs/configuration-model.md +59 -0
- data/docs/configuration-report.md +28 -0
- data/docs/conflict-explanation-reviews/v1/records/README.md +28 -0
- data/docs/conflict-explanation-study.md +62 -0
- data/docs/construction-profiling.md +157 -0
- data/docs/cst-migration.md +106 -0
- data/docs/cst.md +237 -0
- data/docs/decisions/0000-template.md +24 -0
- data/docs/decisions/0001-separate-ir-pipeline.md +34 -0
- data/docs/decisions/0002-opaque-user-code-boundary.md +32 -0
- data/docs/decisions/0003-self-hosted-grammar-frontend.md +32 -0
- data/docs/decisions/0004-shared-semantic-and-lossless-source-model.md +33 -0
- data/docs/decisions/0005-contained-grammar-composition.md +34 -0
- data/docs/decisions/0006-bounded-structural-grammar-lowering.md +32 -0
- data/docs/decisions/0007-shared-parser-construction-pipeline.md +33 -0
- data/docs/decisions/0008-versioned-runtime-package-boundary.md +36 -0
- data/docs/decisions/0009-isolated-parser-sessions.md +34 -0
- data/docs/decisions/0010-committed-runtime-observation.md +34 -0
- data/docs/decisions/0011-versioned-semantic-action-boundary.md +37 -0
- data/docs/decisions/0012-bounded-nonexecuting-analysis.md +37 -0
- data/docs/decisions/0013-transactional-generation-publication.md +37 -0
- data/docs/decisions/0014-versioned-generated-lexer.md +35 -0
- data/docs/decisions/0015-worker-isolated-browser-analysis.md +32 -0
- data/docs/decisions/0016-red-green-concrete-syntax.md +34 -0
- data/docs/decisions/0017-persistent-syntax-artifacts.md +35 -0
- data/docs/decisions/0018-conservative-incremental-syntax-reuse.md +38 -0
- data/docs/decisions/0019-runtime-syntax-session-boundary.md +51 -0
- data/docs/decisions/0020-grammar-ir-parser-contract.md +65 -0
- data/docs/decisions/0021-data-only-parser-table-sidecar.md +50 -0
- data/docs/decisions/0022-manifest-bound-verification-report.md +77 -0
- data/docs/decisions/0023-syntax-only-repair-results.md +48 -0
- data/docs/decisions/0024-direct-ielr-construction.md +42 -0
- data/docs/decisions/README.md +74 -0
- data/docs/declarative-configuration.md +262 -0
- data/docs/development.md +306 -0
- data/docs/direct-ielr-decision.md +120 -0
- data/docs/direct-multi-entry-decision.md +82 -0
- data/docs/editor-setup.md +26 -0
- data/docs/error-ux-review-rubric-v1.md +117 -0
- data/docs/error-ux-reviews/v1/records/README.md +22 -0
- data/docs/error-ux-round2-review-status-v1.json +27 -0
- data/docs/error-ux-round2-reviews/v1/records/README.md +30 -0
- data/docs/error-ux-round2-v1.json +1581 -0
- data/docs/error-ux-round2.md +111 -0
- data/docs/error-ux.md +114 -0
- data/docs/getting-started.md +80 -0
- data/docs/grammar-reference.md +629 -18
- data/docs/ielr-design.md +43 -0
- data/docs/ielr.md +92 -0
- data/docs/ja/bison-import.md +51 -0
- data/docs/ja/stable-api.md +53 -0
- data/docs/lexer-construction-profile.md +109 -0
- data/docs/lexer-migration.md +56 -0
- data/docs/maturity.md +128 -0
- data/docs/project-site-strategy.md +54 -0
- data/docs/racc-migration-evidence.md +45 -0
- data/docs/racc-migration.md +45 -6
- data/docs/release-readiness.md +221 -0
- data/docs/repair-semantics.md +123 -0
- data/docs/runtime-abi-evolution.md +307 -0
- data/docs/stability.md +234 -0
- data/docs/status.md +43 -0
- data/docs/syntax-sessions.md +183 -0
- data/docs/table-artifact.md +125 -0
- data/docs/test-interactions.md +219 -0
- data/docs/verification-report.md +137 -0
- data/docs/verifier-trust-boundary.md +199 -0
- data/docs/workloads.md +132 -0
- data/examples/README.md +60 -0
- data/examples/calculator.y +44 -0
- data/examples/csv.y +32 -0
- data/examples/ini.y +70 -0
- data/examples/json.y +48 -0
- data/examples/tiny_language.y +75 -0
- data/lib/ibex/analysis/digraph.rb +128 -0
- data/lib/ibex/analysis/sets.rb +5 -4
- data/lib/ibex/analysis.rb +1 -0
- data/lib/ibex/artifact_set.rb +63 -0
- data/lib/ibex/bison_import/importer.rb +516 -0
- data/lib/ibex/bison_import/tokenizer.rb +260 -0
- data/lib/ibex/bison_import.rb +200 -0
- data/lib/ibex/bounded_subprocess.rb +171 -0
- data/lib/ibex/cli/ambiguity.rb +75 -0
- data/lib/ibex/cli/analysis.rb +134 -0
- data/lib/ibex/cli/bison_import.rb +121 -0
- data/lib/ibex/cli/config.rb +128 -0
- data/lib/ibex/cli/counterexample_options.rb +6 -2
- data/lib/ibex/cli/coverage.rb +173 -0
- data/lib/ibex/cli/debug.rb +106 -0
- data/lib/ibex/cli/diagnostics.rb +136 -0
- data/lib/ibex/cli/documentation.rb +70 -0
- data/lib/ibex/cli/equiv.rb +169 -0
- data/lib/ibex/cli/error_messages.rb +184 -0
- data/lib/ibex/cli/explain.rb +85 -0
- data/lib/ibex/cli/fix.rb +203 -0
- data/lib/ibex/cli/formatting.rb +387 -0
- data/lib/ibex/cli/fuzz.rb +200 -0
- data/lib/ibex/cli/fuzz_regressions.rb +145 -0
- data/lib/ibex/cli/generation_artifacts.rb +189 -0
- data/lib/ibex/cli/generation_error_messages.rb +39 -0
- data/lib/ibex/cli/grammar_tests.rb +140 -0
- data/lib/ibex/cli/ir_tools.rb +128 -0
- data/lib/ibex/cli/lsp.rb +33 -0
- data/lib/ibex/cli/outputs.rb +133 -23
- data/lib/ibex/cli/racc_migration.rb +87 -0
- data/lib/ibex/cli/reduce.rb +202 -0
- data/lib/ibex/cli/reduce_reporting.rb +71 -0
- data/lib/ibex/cli/samples.rb +118 -0
- data/lib/ibex/cli/verify.rb +116 -0
- data/lib/ibex/cli/watch.rb +104 -0
- data/lib/ibex/cli.rb +825 -55
- data/lib/ibex/codegen/action_locations.rb +103 -0
- data/lib/ibex/codegen/action_method_source.rb +209 -0
- data/lib/ibex/codegen/action_source.rb +119 -0
- data/lib/ibex/codegen/ambiguity.rb +174 -0
- data/lib/ibex/codegen/cst_metadata.rb +171 -0
- data/lib/ibex/codegen/documentation.rb +170 -0
- data/lib/ibex/codegen/explain.rb +380 -0
- data/lib/ibex/codegen/generated_action_abi.rb +293 -0
- data/lib/ibex/codegen/html.rb +94 -10
- data/lib/ibex/codegen/mermaid.rb +43 -0
- data/lib/ibex/codegen/railroad.rb +197 -0
- data/lib/ibex/codegen/railroad_documentation.rb +59 -0
- data/lib/ibex/codegen/rbs.rb +331 -2
- data/lib/ibex/codegen/report.rb +67 -15
- data/lib/ibex/codegen/ruby.rb +305 -66
- data/lib/ibex/codegen/ruby_actions.rb +146 -0
- data/lib/ibex/codegen/ruby_ast.rb +121 -0
- data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
- data/lib/ibex/codegen/ruby_lexer.rb +83 -0
- data/lib/ibex/codegen/ruby_syntax.rb +96 -0
- data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
- data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
- data/lib/ibex/codegen/symbol_labels.rb +1 -1
- data/lib/ibex/configuration/analysis_grammar.rb +35 -0
- data/lib/ibex/configuration/explanation.rb +421 -0
- data/lib/ibex/configuration/inspector.rb +232 -0
- data/lib/ibex/configuration.rb +580 -0
- data/lib/ibex/coverage/collector.rb +198 -0
- data/lib/ibex/coverage/event_stream.rb +103 -0
- data/lib/ibex/coverage/report.rb +267 -0
- data/lib/ibex/coverage/runtime_event_validator.rb +169 -0
- data/lib/ibex/coverage.rb +13 -0
- data/lib/ibex/delta_reducer.rb +99 -0
- data/lib/ibex/diff.rb +140 -0
- data/lib/ibex/equiv/machine.rb +135 -0
- data/lib/ibex/equiv.rb +373 -0
- data/lib/ibex/error_messages/parser.rb +159 -0
- data/lib/ibex/error_messages/parser_v2.rb +198 -0
- data/lib/ibex/error_messages/renderer.rb +65 -0
- data/lib/ibex/error_messages/sentence_search.rb +196 -0
- data/lib/ibex/error_messages/update.rb +169 -0
- data/lib/ibex/error_messages.rb +165 -0
- data/lib/ibex/fix.rb +557 -0
- data/lib/ibex/frontend/ast.rb +166 -7
- data/lib/ibex/frontend/bootstrap_parser.rb +40 -4
- data/lib/ibex/frontend/diagnostic.rb +81 -0
- data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
- data/lib/ibex/frontend/dsl.rb +66 -7
- data/lib/ibex/frontend/formatter.rb +453 -0
- data/lib/ibex/frontend/generated_parser.rb +644 -190
- data/lib/ibex/frontend/generated_parser_base.rb +170 -32
- data/lib/ibex/frontend/generated_parser_includes.rb +51 -0
- data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
- data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
- data/lib/ibex/frontend/generation.rb +33 -0
- data/lib/ibex/frontend/lexer.rb +162 -10
- data/lib/ibex/frontend/lexer_recovery.rb +84 -0
- data/lib/ibex/frontend/parser/declarations.rb +262 -11
- data/lib/ibex/frontend/parser/parameters.rb +82 -0
- data/lib/ibex/frontend/parser/rules.rb +43 -6
- data/lib/ibex/frontend/parser.rb +182 -4
- data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
- data/lib/ibex/frontend/regenerator.rb +27 -1
- data/lib/ibex/frontend/resolution.rb +70 -0
- data/lib/ibex/frontend/resolver.rb +217 -0
- data/lib/ibex/frontend/rule_documentation.rb +104 -0
- data/lib/ibex/frontend/source_cursor.rb +133 -9
- data/lib/ibex/frontend/source_document.rb +229 -0
- data/lib/ibex/frontend/source_loader.rb +150 -0
- data/lib/ibex/frontend/source_span.rb +89 -0
- data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
- data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +244 -22
- data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
- data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
- data/lib/ibex/frontend/token_adapter.rb +18 -3
- data/lib/ibex/frontend.rb +14 -2
- data/lib/ibex/fuzz.rb +219 -0
- data/lib/ibex/generation_input.rb +57 -0
- data/lib/ibex/generation_manifest.rb +211 -0
- data/lib/ibex/generation_transaction.rb +261 -0
- data/lib/ibex/generation_transaction_recovery.rb +109 -0
- data/lib/ibex/generation_transaction_validation.rb +196 -0
- data/lib/ibex/grammar_tests.rb +206 -0
- data/lib/ibex/ir/automaton_ir.rb +86 -11
- data/lib/ibex/ir/grammar_ir.rb +170 -26
- data/lib/ibex/ir/lexer_ir.rb +76 -0
- data/lib/ibex/ir/parser_contract.rb +135 -0
- data/lib/ibex/ir/serialize.rb +268 -50
- data/lib/ibex/ir/validator/automaton.rb +375 -0
- data/lib/ibex/ir/validator/base.rb +147 -0
- data/lib/ibex/ir/validator/grammar.rb +634 -0
- data/lib/ibex/ir/validator/lexer.rb +113 -0
- data/lib/ibex/ir/validator.rb +63 -0
- data/lib/ibex/ir.rb +71 -5
- data/lib/ibex/lalr/build_metrics.rb +71 -0
- data/lib/ibex/lalr/builder.rb +514 -52
- data/lib/ibex/lalr/conflict.rb +1 -0
- data/lib/ibex/lalr/conflict_search.rb +26 -9
- data/lib/ibex/lalr/counterexample.rb +38 -18
- data/lib/ibex/lalr/direct_lookaheads.rb +289 -0
- data/lib/ibex/lalr/goto_follows.rb +229 -0
- data/lib/ibex/lalr/ielr/annotator.rb +214 -0
- data/lib/ibex/lalr/ielr/bits.rb +28 -0
- data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
- data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
- data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
- data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
- data/lib/ibex/lalr/ielr/split_state.rb +20 -0
- data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
- data/lib/ibex/lalr/ielr_partition.rb +166 -0
- data/lib/ibex/lalr/inadequacy_report.rb +50 -0
- data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
- data/lib/ibex/lalr/lr0_collection.rb +121 -0
- data/lib/ibex/lalr/on_error_reductions.rb +74 -0
- data/lib/ibex/lalr/unreachable_states.rb +80 -0
- data/lib/ibex/lalr.rb +59 -1
- data/lib/ibex/location.rb +129 -0
- data/lib/ibex/lsp/document_handlers.rb +68 -0
- data/lib/ibex/lsp/document_store.rb +264 -0
- data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
- data/lib/ibex/lsp/document_store_validation.rb +61 -0
- data/lib/ibex/lsp/initialization_handlers.rb +80 -0
- data/lib/ibex/lsp/navigation_handlers.rb +70 -0
- data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
- data/lib/ibex/lsp/position_codec.rb +113 -0
- data/lib/ibex/lsp/protocol_error.rb +33 -0
- data/lib/ibex/lsp/request_handlers.rb +46 -0
- data/lib/ibex/lsp/request_support.rb +94 -0
- data/lib/ibex/lsp/server.rb +148 -0
- data/lib/ibex/lsp/symbol_index.rb +241 -0
- data/lib/ibex/lsp/symbol_index_builder.rb +277 -0
- data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
- data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
- data/lib/ibex/lsp/symbol_occurrence.rb +23 -0
- data/lib/ibex/lsp/transport.rb +128 -0
- data/lib/ibex/lsp/workspace.rb +128 -0
- data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
- data/lib/ibex/lsp.rb +33 -0
- data/lib/ibex/messages/en.yml +28 -0
- data/lib/ibex/messages/ja.yml +28 -0
- data/lib/ibex/messages.rb +68 -0
- data/lib/ibex/metrics.rb +175 -0
- data/lib/ibex/normalize/declarations.rb +142 -7
- data/lib/ibex/normalize/diagnostics.rb +94 -24
- data/lib/ibex/normalize/expander.rb +64 -59
- data/lib/ibex/normalize/expression.rb +63 -40
- data/lib/ibex/normalize/grammar_builder.rb +26 -0
- data/lib/ibex/normalize/inline_expansion.rb +465 -0
- data/lib/ibex/normalize/inline_validation.rb +174 -0
- data/lib/ibex/normalize/lexer.rb +131 -0
- data/lib/ibex/normalize/named_references.rb +60 -0
- data/lib/ibex/normalize/nodes.rb +46 -0
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +70 -0
- data/lib/ibex/normalize/parameter_lowering.rb +143 -0
- data/lib/ibex/normalize/parameter_substitution.rb +125 -0
- data/lib/ibex/normalize/parameter_validation.rb +140 -0
- data/lib/ibex/normalize/parameters.rb +226 -0
- data/lib/ibex/normalize/parser_configuration.rb +70 -0
- data/lib/ibex/normalize/recovery_declarations.rb +84 -0
- data/lib/ibex/normalize.rb +172 -17
- data/lib/ibex/racc_migration/checker.rb +122 -0
- data/lib/ibex/racc_migration/harness.rb +177 -0
- data/lib/ibex/racc_migration/report.rb +97 -0
- data/lib/ibex/racc_migration.rb +12 -0
- data/lib/ibex/rake_task.rb +116 -0
- data/lib/ibex/samples.rb +216 -0
- data/lib/ibex/table_artifact/builder.rb +266 -0
- data/lib/ibex/table_artifact/cst_projection.rb +70 -0
- data/lib/ibex/table_artifact/document.rb +39 -0
- data/lib/ibex/table_artifact/executor.rb +187 -0
- data/lib/ibex/table_artifact/serializer.rb +57 -0
- data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
- data/lib/ibex/table_artifact/validator/support.rb +86 -0
- data/lib/ibex/table_artifact/validator/tables.rb +238 -0
- data/lib/ibex/table_artifact/validator.rb +253 -0
- data/lib/ibex/table_artifact.rb +88 -0
- data/lib/ibex/table_simulation/result.rb +55 -0
- data/lib/ibex/table_simulation/simulator.rb +253 -0
- data/lib/ibex/table_simulation/step.rb +62 -0
- data/lib/ibex/table_simulation/text.rb +31 -0
- data/lib/ibex/table_simulation.rb +13 -0
- data/lib/ibex/tables.rb +22 -69
- data/lib/ibex/verifiable_generation_bundle.rb +86 -0
- data/lib/ibex/verification_report/builder.rb +159 -0
- data/lib/ibex/verification_report/canonical_ir.rb +123 -0
- data/lib/ibex/verification_report/logical_path.rb +68 -0
- data/lib/ibex/verification_report/validator.rb +329 -0
- data/lib/ibex/verification_report.rb +69 -0
- data/lib/ibex/verify/action_correspondence.rb +138 -0
- data/lib/ibex/verify/language_witness.rb +295 -0
- data/lib/ibex/verify/reference_collection.rb +190 -0
- data/lib/ibex/verify/result.rb +73 -0
- data/lib/ibex/verify/verifier.rb +598 -0
- data/lib/ibex/verify.rb +15 -0
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex/watch/runner.rb +181 -0
- data/lib/ibex/watch/source_snapshot.rb +98 -0
- data/lib/ibex/watch.rb +11 -0
- data/lib/ibex.rb +35 -1
- data/schema/automaton-ir-definitions.schema.json +401 -0
- data/schema/automaton-ir.schema.json +65 -0
- data/schema/benchmark-v1.schema.json +212 -0
- data/schema/benchmark-v2.schema.json +61 -0
- data/schema/bison-import-v1.schema.json +106 -0
- data/schema/conflict-explanation-review-v1.schema.json +196 -0
- data/schema/conflict-explanation-study-v1.schema.json +528 -0
- data/schema/construction-profile-v1.schema.json +779 -0
- data/schema/cst-v1.json +170 -0
- data/schema/diff-v1.schema.json +41 -0
- data/schema/direct-ielr-decision-v1.schema.json +200 -0
- data/schema/equiv-v1.schema.json +64 -0
- data/schema/error-ux-review-v1.schema.json +609 -0
- data/schema/error-ux-round2-review-v1.schema.json +191 -0
- data/schema/error-ux-round2-v1.schema.json +519 -0
- data/schema/error-ux-v1.schema.json +258 -0
- data/schema/explain-v1.schema.json +495 -0
- data/schema/fix-v1.schema.json +64 -0
- data/schema/fix-v2.schema.json +66 -0
- data/schema/fix-v3.schema.json +101 -0
- data/schema/frontend-diagnostics-v1.schema.json +154 -0
- data/schema/fuzz-regression-v1.schema.json +79 -0
- data/schema/fuzz-v1.schema.json +114 -0
- data/schema/generation-manifest-v1.schema.json +115 -0
- data/schema/grammar-ir-extensions.schema.json +734 -0
- data/schema/grammar-ir-foundation.schema.json +426 -0
- data/schema/grammar-ir.schema.json +271 -0
- data/schema/ielr-benchmark-v1.schema.json +85 -0
- data/schema/lexer-ir-v1.schema.json +215 -0
- data/schema/lexer-profile-v1.schema.json +491 -0
- data/schema/metrics-v1.schema.json +60 -0
- data/schema/migration-check-v1.schema.json +60 -0
- data/schema/performance-comparison-v1.schema.json +395 -0
- data/schema/public-performance-comparison-v1.schema.json +506 -0
- data/schema/public-performance-profile-v1.schema.json +360 -0
- data/schema/reduce-v1.schema.json +22 -0
- data/schema/reduce-v2.schema.json +63 -0
- data/schema/runtime-coverage-v1.schema.json +86 -0
- data/schema/runtime-event-v1.schema.json +308 -0
- data/schema/table-artifact-v1.schema.json +377 -0
- data/schema/table-simulation-v1.schema.json +70 -0
- data/schema/verification-report-v1.schema.json +222 -0
- data/schema/verify-v1.schema.json +42 -0
- data/sig/ibex/analysis/digraph.rbs +19 -0
- data/sig/ibex/artifact_set.rbs +37 -0
- data/sig/ibex/bison_import/importer.rbs +140 -0
- data/sig/ibex/bison_import/tokenizer.rbs +91 -0
- data/sig/ibex/bison_import.rbs +95 -0
- data/sig/ibex/bounded_subprocess.rbs +76 -0
- data/sig/ibex/cli/ambiguity.rbs +28 -0
- data/sig/ibex/cli/analysis.rbs +43 -0
- data/sig/ibex/cli/bison_import.rbs +32 -0
- data/sig/ibex/cli/config.rbs +35 -0
- data/sig/ibex/cli/counterexample_options.rbs +2 -0
- data/sig/ibex/cli/coverage.rbs +53 -0
- data/sig/ibex/cli/debug.rbs +28 -0
- data/sig/ibex/cli/diagnostics.rbs +51 -0
- data/sig/ibex/cli/documentation.rbs +29 -0
- data/sig/ibex/cli/equiv.rbs +49 -0
- data/sig/ibex/cli/error_messages.rbs +63 -0
- data/sig/ibex/cli/explain.rbs +31 -0
- data/sig/ibex/cli/fix.rbs +53 -0
- data/sig/ibex/cli/formatting.rbs +107 -0
- data/sig/ibex/cli/fuzz.rbs +47 -0
- data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
- data/sig/ibex/cli/generation_artifacts.rbs +69 -0
- data/sig/ibex/cli/generation_error_messages.rbs +19 -0
- data/sig/ibex/cli/grammar_tests.rbs +48 -0
- data/sig/ibex/cli/ir_tools.rbs +39 -0
- data/sig/ibex/cli/lsp.rbs +14 -0
- data/sig/ibex/cli/outputs.rbs +26 -3
- data/sig/ibex/cli/racc_migration.rbs +30 -0
- data/sig/ibex/cli/reduce.rbs +60 -0
- data/sig/ibex/cli/reduce_reporting.rbs +27 -0
- data/sig/ibex/cli/samples.rbs +38 -0
- data/sig/ibex/cli/verify.rbs +28 -0
- data/sig/ibex/cli/watch.rbs +43 -0
- data/sig/ibex/cli.rbs +182 -9
- data/sig/ibex/codegen/action_locations.rbs +45 -0
- data/sig/ibex/codegen/action_method_source.rbs +65 -0
- data/sig/ibex/codegen/action_source.rbs +50 -0
- data/sig/ibex/codegen/ambiguity.rbs +60 -0
- data/sig/ibex/codegen/cst_metadata.rbs +59 -0
- data/sig/ibex/codegen/documentation.rbs +50 -0
- data/sig/ibex/codegen/explain.rbs +105 -0
- data/sig/ibex/codegen/generated_action_abi.rbs +105 -0
- data/sig/ibex/codegen/html.rbs +18 -2
- data/sig/ibex/codegen/mermaid.rbs +16 -0
- data/sig/ibex/codegen/railroad.rbs +82 -0
- data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
- data/sig/ibex/codegen/rbs.rbs +86 -4
- data/sig/ibex/codegen/report.rbs +16 -8
- data/sig/ibex/codegen/ruby.rbs +105 -28
- data/sig/ibex/codegen/ruby_actions.rbs +54 -0
- data/sig/ibex/codegen/ruby_ast.rbs +34 -0
- data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
- data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
- data/sig/ibex/codegen/ruby_syntax.rbs +27 -0
- data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
- data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
- data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
- data/sig/ibex/configuration/explanation.rbs +195 -0
- data/sig/ibex/configuration/inspector.rbs +53 -0
- data/sig/ibex/configuration.rbs +242 -0
- data/sig/ibex/coverage/collector.rbs +78 -0
- data/sig/ibex/coverage/event_stream.rbs +44 -0
- data/sig/ibex/coverage/report.rbs +102 -0
- data/sig/ibex/coverage/runtime_event_validator.rbs +70 -0
- data/sig/ibex/coverage.rbs +7 -0
- data/sig/ibex/delta_reducer.rbs +38 -0
- data/sig/ibex/diff.rbs +47 -0
- data/sig/ibex/equiv/machine.rbs +54 -0
- data/sig/ibex/equiv.rbs +129 -0
- data/sig/ibex/error_messages/parser.rbs +58 -0
- data/sig/ibex/error_messages/parser_v2.rbs +67 -0
- data/sig/ibex/error_messages/renderer.rbs +23 -0
- data/sig/ibex/error_messages/sentence_search.rbs +80 -0
- data/sig/ibex/error_messages/update.rbs +43 -0
- data/sig/ibex/error_messages.rbs +85 -0
- data/sig/ibex/fix.rbs +138 -0
- data/sig/ibex/frontend/ast.rbs +237 -22
- data/sig/ibex/frontend/bootstrap_parser.rbs +13 -0
- data/sig/ibex/frontend/diagnostic.rbs +53 -0
- data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
- data/sig/ibex/frontend/dsl.rbs +33 -4
- data/sig/ibex/frontend/formatter.rbs +143 -0
- data/sig/ibex/frontend/generated_parser.rbs +228 -68
- data/sig/ibex/frontend/generated_parser_base.rbs +65 -12
- data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
- data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
- data/sig/ibex/frontend/generation.rbs +6 -0
- data/sig/ibex/frontend/lexer.rbs +49 -2
- data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
- data/sig/ibex/frontend/parser/declarations.rbs +57 -0
- data/sig/ibex/frontend/parser/parameters.rbs +28 -0
- data/sig/ibex/frontend/parser/rules.rbs +3 -0
- data/sig/ibex/frontend/parser.rbs +66 -0
- data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
- data/sig/ibex/frontend/regenerator.rbs +11 -0
- data/sig/ibex/frontend/resolution.rbs +34 -0
- data/sig/ibex/frontend/resolver.rbs +91 -0
- data/sig/ibex/frontend/rule_documentation.rbs +42 -0
- data/sig/ibex/frontend/source_cursor.rbs +38 -5
- data/sig/ibex/frontend/source_document.rbs +119 -0
- data/sig/ibex/frontend/source_loader.rbs +66 -0
- data/sig/ibex/frontend/source_span.rbs +56 -0
- data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
- data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +83 -3
- data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
- data/sig/ibex/frontend/token_adapter.rbs +11 -2
- data/sig/ibex/frontend.rbs +1 -1
- data/sig/ibex/fuzz.rbs +71 -0
- data/sig/ibex/generation_input.rbs +37 -0
- data/sig/ibex/generation_manifest.rbs +70 -0
- data/sig/ibex/generation_transaction.rbs +82 -0
- data/sig/ibex/generation_transaction_recovery.rbs +36 -0
- data/sig/ibex/generation_transaction_validation.rbs +65 -0
- data/sig/ibex/grammar_tests.rbs +93 -0
- data/sig/ibex/ir/automaton_ir.rbs +35 -10
- data/sig/ibex/ir/grammar_ir.rbs +96 -22
- data/sig/ibex/ir/lexer_ir.rbs +57 -0
- data/sig/ibex/ir/parser_contract.rbs +69 -0
- data/sig/ibex/ir/serialize.rbs +75 -23
- data/sig/ibex/ir/validator/automaton.rbs +112 -0
- data/sig/ibex/ir/validator/base.rbs +69 -0
- data/sig/ibex/ir/validator/grammar.rbs +195 -0
- data/sig/ibex/ir/validator/lexer.rbs +37 -0
- data/sig/ibex/ir/validator.rbs +16 -0
- data/sig/ibex/ir.rbs +45 -5
- data/sig/ibex/lalr/build_metrics.rbs +60 -0
- data/sig/ibex/lalr/builder.rbs +150 -19
- data/sig/ibex/lalr/conflict_search.rbs +12 -5
- data/sig/ibex/lalr/counterexample.rbs +20 -14
- data/sig/ibex/lalr/direct_lookaheads.rbs +93 -0
- data/sig/ibex/lalr/goto_follows.rbs +89 -0
- data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
- data/sig/ibex/lalr/ielr/bits.rbs +14 -0
- data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
- data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
- data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
- data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
- data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
- data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
- data/sig/ibex/lalr/ielr_partition.rbs +71 -0
- data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
- data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
- data/sig/ibex/lalr/lr0_collection.rbs +50 -0
- data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
- data/sig/ibex/lalr/unreachable_states.rbs +25 -0
- data/sig/ibex/lalr.rbs +17 -1
- data/sig/ibex/location.rbs +67 -0
- data/sig/ibex/lsp/document_handlers.rbs +24 -0
- data/sig/ibex/lsp/document_store.rbs +94 -0
- data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
- data/sig/ibex/lsp/document_store_validation.rbs +26 -0
- data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
- data/sig/ibex/lsp/navigation_handlers.rbs +33 -0
- data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
- data/sig/ibex/lsp/position_codec.rbs +44 -0
- data/sig/ibex/lsp/protocol_error.rbs +32 -0
- data/sig/ibex/lsp/request_handlers.rbs +26 -0
- data/sig/ibex/lsp/request_support.rbs +40 -0
- data/sig/ibex/lsp/server.rbs +55 -0
- data/sig/ibex/lsp/symbol_index.rbs +77 -0
- data/sig/ibex/lsp/symbol_index_builder.rbs +88 -0
- data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
- data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
- data/sig/ibex/lsp/symbol_occurrence.rbs +31 -0
- data/sig/ibex/lsp/transport.rbs +47 -0
- data/sig/ibex/lsp/workspace.rbs +42 -0
- data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
- data/sig/ibex/lsp.rbs +7 -0
- data/sig/ibex/messages.rbs +26 -0
- data/sig/ibex/metrics.rbs +50 -0
- data/sig/ibex/normalize/declarations.rbs +31 -0
- data/sig/ibex/normalize/diagnostics.rbs +13 -4
- data/sig/ibex/normalize/expander.rbs +22 -16
- data/sig/ibex/normalize/expression.rbs +11 -9
- data/sig/ibex/normalize/grammar_builder.rbs +11 -0
- data/sig/ibex/normalize/inline_expansion.rbs +129 -0
- data/sig/ibex/normalize/inline_validation.rbs +40 -0
- data/sig/ibex/normalize/lexer.rbs +37 -0
- data/sig/ibex/normalize/named_references.rbs +20 -0
- data/sig/ibex/normalize/nodes.rbs +14 -0
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +33 -0
- data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
- data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
- data/sig/ibex/normalize/parameter_validation.rbs +44 -0
- data/sig/ibex/normalize/parameters.rbs +51 -0
- data/sig/ibex/normalize/parser_configuration.rbs +23 -0
- data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
- data/sig/ibex/normalize.rbs +129 -18
- data/sig/ibex/racc_migration/checker.rbs +36 -0
- data/sig/ibex/racc_migration/harness.rbs +16 -0
- data/sig/ibex/racc_migration/report.rbs +55 -0
- data/sig/ibex/racc_migration.rbs +8 -0
- data/sig/ibex/rake_task.rbs +51 -0
- data/sig/ibex/samples.rbs +60 -0
- data/sig/ibex/table_artifact/builder.rbs +93 -0
- data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
- data/sig/ibex/table_artifact/document.rbs +27 -0
- data/sig/ibex/table_artifact/executor.rbs +66 -0
- data/sig/ibex/table_artifact/serializer.rbs +25 -0
- data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
- data/sig/ibex/table_artifact/validator/support.rbs +46 -0
- data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
- data/sig/ibex/table_artifact/validator.rbs +66 -0
- data/sig/ibex/table_artifact.rbs +32 -0
- data/sig/ibex/table_simulation/result.rbs +36 -0
- data/sig/ibex/table_simulation/simulator.rbs +98 -0
- data/sig/ibex/table_simulation/step.rbs +42 -0
- data/sig/ibex/table_simulation/text.rbs +14 -0
- data/sig/ibex/table_simulation.rbs +7 -0
- data/sig/ibex/tables.rbs +10 -35
- data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
- data/sig/ibex/verification_report/builder.rbs +53 -0
- data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
- data/sig/ibex/verification_report/logical_path.rbs +34 -0
- data/sig/ibex/verification_report/validator.rbs +114 -0
- data/sig/ibex/verification_report.rbs +44 -0
- data/sig/ibex/verify/action_correspondence.rbs +50 -0
- data/sig/ibex/verify/language_witness.rbs +112 -0
- data/sig/ibex/verify/reference_collection.rbs +63 -0
- data/sig/ibex/verify/result.rbs +52 -0
- data/sig/ibex/verify/verifier.rbs +170 -0
- data/sig/ibex/verify.rbs +6 -0
- data/sig/ibex/watch/runner.rbs +58 -0
- data/sig/ibex/watch/source_snapshot.rbs +46 -0
- data/sig/ibex/watch.rbs +7 -0
- data/sig/ibex.rbs +2 -0
- metadata +524 -19
- data/.rubocop.yml +0 -43
- data/CHANGELOG.md +0 -30
- data/Rakefile +0 -25
- data/Steepfile +0 -10
- data/docs/compat-notes.md +0 -37
- data/docs/lexer-coverage.md +0 -14
- data/docs/phase10-extensions.md +0 -27
- data/gemfiles/Gemfile +0 -7
- data/gemfiles/Gemfile.lock +0 -98
- data/lib/ibex/frontend/grammar.y +0 -156
- data/lib/ibex/runtime/parser.rb +0 -360
- data/lib/ibex/runtime.rb +0 -8
- data/sig/ibex/runtime/parser.rbs +0 -167
- data/sig/ibex/runtime.rbs +0 -6
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/documentation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Renders normalized user rules as deterministic Markdown, HTML, or railroad SVG.
|
|
6
|
+
module Documentation
|
|
7
|
+
FORMATS: Array[String]
|
|
8
|
+
|
|
9
|
+
# @rbs (IR::Grammar grammar, format: String | Symbol) -> String
|
|
10
|
+
def self.render: (IR::Grammar grammar, format: String | Symbol) -> String
|
|
11
|
+
|
|
12
|
+
# @rbs (IR::Grammar grammar) -> String
|
|
13
|
+
private def self.render_markdown: (IR::Grammar grammar) -> String
|
|
14
|
+
|
|
15
|
+
# @rbs (Array[String] lines, String? documentation) -> void
|
|
16
|
+
private def self.append_markdown_documentation: (Array[String] lines, String? documentation) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels) -> String
|
|
19
|
+
private def self.markdown_alternative: (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels) -> String
|
|
20
|
+
|
|
21
|
+
# @rbs (IR::Grammar grammar) -> String
|
|
22
|
+
private def self.render_html: (IR::Grammar grammar) -> String
|
|
23
|
+
|
|
24
|
+
# @rbs (String title) -> Array[String]
|
|
25
|
+
private def self.html_start: (String title) -> Array[String]
|
|
26
|
+
|
|
27
|
+
# @rbs (Array[String] lines, IR::Grammar grammar, IR::GrammarSymbol symbol,
|
|
28
|
+
# Array[IR::Production] productions, Hash[Integer, String] labels) -> void
|
|
29
|
+
private def self.append_html_rule: (Array[String] lines, IR::Grammar grammar, IR::GrammarSymbol symbol, Array[IR::Production] productions, Hash[Integer, String] labels) -> void
|
|
30
|
+
|
|
31
|
+
# @rbs (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels) -> String
|
|
32
|
+
private def self.html_alternative: (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels) -> String
|
|
33
|
+
|
|
34
|
+
# @rbs (IR::Grammar grammar) -> Array[[IR::GrammarSymbol, Array[IR::Production]]]
|
|
35
|
+
private def self.rule_groups: (IR::Grammar grammar) -> Array[[ IR::GrammarSymbol, Array[IR::Production] ]]
|
|
36
|
+
|
|
37
|
+
# @rbs (String value) -> String
|
|
38
|
+
private def self.markdown_code: (String value) -> String
|
|
39
|
+
|
|
40
|
+
# @rbs (String value) -> bool
|
|
41
|
+
private def self.markdown_code_padding?: (String value) -> bool
|
|
42
|
+
|
|
43
|
+
# @rbs (String value) -> String
|
|
44
|
+
private def self.markdown_escape: (String value) -> String
|
|
45
|
+
|
|
46
|
+
# @rbs (String value) -> String
|
|
47
|
+
private def self.html_escape: (String value) -> String
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/explain.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
type explain_selection = { state: IR::AutomatonState, conflict: IR::conflict, conflict_index: Integer }
|
|
6
|
+
|
|
7
|
+
type explain_entry = { state: IR::AutomatonState, conflict: IR::conflict, example: LALR::search_counterexample }
|
|
8
|
+
|
|
9
|
+
type explain_token = { name: String, display_name: String?, label: String, ?query: String }
|
|
10
|
+
|
|
11
|
+
type explain_alternative = { kind: String, ?state: Integer, ?production: Integer }
|
|
12
|
+
|
|
13
|
+
type explain_search = { status: String, explored: Integer, exhausted: bool, bounds: Hash[Symbol, Integer] }
|
|
14
|
+
|
|
15
|
+
type explain_tree_node = { ?symbol: explain_token, ?token: explain_token, ?production: Integer, ?children: Array[explain_tree] }
|
|
16
|
+
|
|
17
|
+
type explain_tree = untyped
|
|
18
|
+
|
|
19
|
+
type explain_interpretation = Hash[Symbol, untyped]
|
|
20
|
+
|
|
21
|
+
type string_value = String | Integer | Symbol
|
|
22
|
+
|
|
23
|
+
# Renders a selected conflict explanation from Automaton IR and counterexamples.
|
|
24
|
+
# rubocop:disable Metrics/ClassLength -- inline contracts and two stable output formats stay near selection policy.
|
|
25
|
+
class Explain
|
|
26
|
+
SCHEMA_VERSION: Integer
|
|
27
|
+
|
|
28
|
+
# @rbs (IR::Automaton automaton, ?state: Integer?, ?token: String?, ?max_tokens: Integer,
|
|
29
|
+
# ?max_configurations: Integer) -> void
|
|
30
|
+
def initialize: (IR::Automaton automaton, ?state: Integer?, ?token: String?, ?max_tokens: Integer, ?max_configurations: Integer) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs () -> Hash[Symbol, Object?]
|
|
33
|
+
def to_h: () -> Hash[Symbol, Object?]
|
|
34
|
+
|
|
35
|
+
# @rbs () -> String
|
|
36
|
+
def render_text: () -> String
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
# @rbs (String? query) -> IR::GrammarSymbol?
|
|
41
|
+
def resolve_token: (String? query) -> IR::GrammarSymbol?
|
|
42
|
+
|
|
43
|
+
# @rbs () -> void
|
|
44
|
+
def validate_state!: () -> void
|
|
45
|
+
|
|
46
|
+
# @rbs () -> Array[explain_entry]
|
|
47
|
+
def select_entries: () -> Array[explain_entry]
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Array[explain_selection]
|
|
50
|
+
def selected_conflicts: () -> Array[explain_selection]
|
|
51
|
+
|
|
52
|
+
# @rbs (explain_entry entry) -> Hash[Symbol, Object?]
|
|
53
|
+
def conflict_document: (explain_entry entry) -> Hash[Symbol, Object?]
|
|
54
|
+
|
|
55
|
+
# @rbs (LALR::search_counterexample example) -> String
|
|
56
|
+
def witness_kind: (LALR::search_counterexample example) -> String
|
|
57
|
+
|
|
58
|
+
# @rbs (LALR::search_outcome outcome) -> explain_search
|
|
59
|
+
def search_document: (LALR::search_outcome outcome) -> explain_search
|
|
60
|
+
|
|
61
|
+
# @rbs (IR::conflict conflict) -> Array[explain_alternative]
|
|
62
|
+
def conflict_alternatives: (IR::conflict conflict) -> Array[explain_alternative]
|
|
63
|
+
|
|
64
|
+
# @rbs (IR::interpretation interpretation) -> explain_interpretation
|
|
65
|
+
def interpretation_document: (IR::interpretation interpretation) -> explain_interpretation
|
|
66
|
+
|
|
67
|
+
# @rbs (explain_tree tree) -> explain_tree
|
|
68
|
+
def tree_document: (explain_tree tree) -> explain_tree
|
|
69
|
+
|
|
70
|
+
# @rbs (Hash[Symbol, string_value] value) -> Hash[Symbol, string_value]
|
|
71
|
+
def string_values: (Hash[Symbol, string_value] value) -> Hash[Symbol, string_value]
|
|
72
|
+
|
|
73
|
+
# @rbs (String name) -> explain_token
|
|
74
|
+
def symbol_reference: (String name) -> explain_token
|
|
75
|
+
|
|
76
|
+
# @rbs (IR::GrammarSymbol symbol, ?query: String?) -> explain_token
|
|
77
|
+
def token_reference: (IR::GrammarSymbol symbol, ?query: String?) -> explain_token
|
|
78
|
+
|
|
79
|
+
# @rbs (Array[String] lines, explain_entry entry, Integer number) -> void
|
|
80
|
+
def append_conflict: (Array[String] lines, explain_entry entry, Integer number) -> void
|
|
81
|
+
|
|
82
|
+
# @rbs (Array[String] lines, IR::conflict conflict) -> void
|
|
83
|
+
def append_midrule_origins: (Array[String] lines, IR::conflict conflict) -> void
|
|
84
|
+
|
|
85
|
+
# @rbs (Array[String] lines, IR::AutomatonState state, IR::conflict conflict,
|
|
86
|
+
# LALR::search_counterexample example) -> void
|
|
87
|
+
def append_witness_steps: (Array[String] lines, IR::AutomatonState state, IR::conflict conflict, LALR::search_counterexample example) -> void
|
|
88
|
+
|
|
89
|
+
# @rbs (Array[String] lines, LALR::search_counterexample example) -> void
|
|
90
|
+
def append_interpretations: (Array[String] lines, LALR::search_counterexample example) -> void
|
|
91
|
+
|
|
92
|
+
# @rbs (explain_alternative alternative) -> String
|
|
93
|
+
def alternative_text: (explain_alternative alternative) -> String
|
|
94
|
+
|
|
95
|
+
# @rbs (Array[String] lines, explain_tree tree, String prefix, String connector) -> void
|
|
96
|
+
def append_tree: (Array[String] lines, explain_tree tree, String prefix, String connector) -> void
|
|
97
|
+
|
|
98
|
+
# @rbs (IR::GrammarSymbol symbol, ?query: String?) -> String
|
|
99
|
+
def token_label: (IR::GrammarSymbol symbol, ?query: String?) -> String
|
|
100
|
+
|
|
101
|
+
# @rbs (String name) -> String
|
|
102
|
+
def display_name: (String name) -> String
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/generated_action_abi.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Selects the smallest generated semantic-action ABI that preserves the
|
|
6
|
+
# action's declared inputs.
|
|
7
|
+
# rubocop:disable Metrics/ModuleLength -- ABI proof and source rewriting must evolve together.
|
|
8
|
+
module GeneratedActionABI
|
|
9
|
+
type ripper_token = [ [ Integer, Integer ], Symbol, String, Integer ]
|
|
10
|
+
|
|
11
|
+
type sexp_value = Symbol | String | Integer | nil | Array[sexp_value]
|
|
12
|
+
|
|
13
|
+
LEGACY_PARAMETERS: Array[String]
|
|
14
|
+
|
|
15
|
+
SIMPLE_POSITIONAL_READ: Regexp
|
|
16
|
+
|
|
17
|
+
SIMPLE_POSITIONAL_UNSAFE: Regexp
|
|
18
|
+
|
|
19
|
+
# Keeps semantic-action analysis local to one code-generation run.
|
|
20
|
+
class Cache
|
|
21
|
+
@values_only: Hash[Integer, bool]
|
|
22
|
+
|
|
23
|
+
@borrowed_values: Hash[Integer, bool]
|
|
24
|
+
|
|
25
|
+
@positional_actions: Hash[Integer, String?]
|
|
26
|
+
|
|
27
|
+
# @rbs () -> void
|
|
28
|
+
def initialize: () -> void
|
|
29
|
+
|
|
30
|
+
# @rbs (IR::Production production) -> bool
|
|
31
|
+
def values_only?: (IR::Production production) -> bool
|
|
32
|
+
|
|
33
|
+
# @rbs (IR::Production production) -> bool
|
|
34
|
+
def borrowed_values?: (IR::Production production) -> bool
|
|
35
|
+
|
|
36
|
+
# @rbs (IR::Production production) -> String?
|
|
37
|
+
def positional_action_source: (IR::Production production) -> String?
|
|
38
|
+
|
|
39
|
+
# @rbs (IR::Production production) -> bool
|
|
40
|
+
def positional_values?: (IR::Production production) -> bool
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @rbs (IR::Production production) -> bool
|
|
44
|
+
def self?.values_only?: (IR::Production production) -> bool
|
|
45
|
+
|
|
46
|
+
# The direct runtime can share one reduction-values array with an action
|
|
47
|
+
# and a hook installed by that action only when the action cannot mutate
|
|
48
|
+
# or retain the array itself. Element reads and parallel assignment copy
|
|
49
|
+
# values out without exposing the container.
|
|
50
|
+
# @rbs (IR::Production production, ?analysis: singleton(GeneratedActionABI) | Cache) -> bool
|
|
51
|
+
def self?.borrowed_values?: (IR::Production production, ?analysis: singleton(GeneratedActionABI) | Cache) -> bool
|
|
52
|
+
|
|
53
|
+
# Return semantic source rewritten for zero-to-four positional RHS
|
|
54
|
+
# arguments, or nil when the values container remains observable.
|
|
55
|
+
# @rbs (IR::Production production, ?analysis: singleton(GeneratedActionABI) | Cache) -> String?
|
|
56
|
+
def self?.positional_action_source: (IR::Production production, ?analysis: singleton(GeneratedActionABI) | Cache) -> String?
|
|
57
|
+
|
|
58
|
+
# @rbs (String source, Array[String] parameters) -> String?
|
|
59
|
+
def self?.fast_positional_action_source: (String source, Array[String] parameters) -> String?
|
|
60
|
+
|
|
61
|
+
# @rbs (IR::Production production) -> bool
|
|
62
|
+
def self?.positional_values?: (IR::Production production) -> bool
|
|
63
|
+
|
|
64
|
+
# Avoid loading a Ruby parser for the overwhelmingly common generated
|
|
65
|
+
# action shape. This accepts only a single result assignment (or a bare
|
|
66
|
+
# expression), simple numeric val reads, and no further assignment.
|
|
67
|
+
# Anything less obvious falls back to Ripper below.
|
|
68
|
+
# @rbs (String source) -> bool
|
|
69
|
+
def self?.simple_indexed_values_action?: (String source) -> bool
|
|
70
|
+
|
|
71
|
+
# Keep the most common identity action off the Ripper load path. The
|
|
72
|
+
# whole-source match excludes strings, comments, receivers, and compound
|
|
73
|
+
# expressions before replacing the one direct read.
|
|
74
|
+
# @rbs (String source, Array[String] parameters) -> String?
|
|
75
|
+
def self?.simple_positional_action_source: (String source, Array[String] parameters) -> String?
|
|
76
|
+
|
|
77
|
+
# Rewrite the common string/comment/regexp-free action shape without
|
|
78
|
+
# loading Ripper. The borrowed-values proof has already rejected writes
|
|
79
|
+
# and escaping uses of the values container.
|
|
80
|
+
# @rbs (String source, Array[String] parameters) -> String?
|
|
81
|
+
def self?.simple_indexed_positional_action_source: (String source, Array[String] parameters) -> String?
|
|
82
|
+
|
|
83
|
+
# @rbs (Array[ripper_token] tokens, Array[String] parameters) -> String?
|
|
84
|
+
def self?.rewrite_positional_values: (Array[ripper_token] tokens, Array[String] parameters) -> String?
|
|
85
|
+
|
|
86
|
+
# @rbs (Array[ripper_token] tokens, Integer index, Array[String] parameters) -> [String, Integer]?
|
|
87
|
+
def self?.positional_value_reference: (Array[ripper_token] tokens, Integer index, Array[String] parameters) -> [ String, Integer ]?
|
|
88
|
+
|
|
89
|
+
# @rbs (Array[ripper_token] tokens, Integer index) -> bool
|
|
90
|
+
def self?.receiver_before_value?: (Array[ripper_token] tokens, Integer index) -> bool
|
|
91
|
+
|
|
92
|
+
# @rbs (String source) -> bool
|
|
93
|
+
def self?.references_legacy_parameter?: (String source) -> bool
|
|
94
|
+
|
|
95
|
+
# @rbs (sexp_value node, ?sexp_value parent, ?Integer? child_index) -> bool
|
|
96
|
+
def self?.read_only_value_references?: (sexp_value node, ?sexp_value parent, ?Integer? child_index) -> bool
|
|
97
|
+
|
|
98
|
+
# @rbs (untyped node) -> bool
|
|
99
|
+
def self?.value_reference?: (untyped node) -> bool
|
|
100
|
+
|
|
101
|
+
# @rbs (sexp_value? parent, Integer? child_index) -> bool
|
|
102
|
+
def self?.safe_value_reference?: (sexp_value? parent, Integer? child_index) -> bool
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
data/sig/ibex/codegen/html.rbs
CHANGED
|
@@ -8,6 +8,22 @@ module Ibex
|
|
|
8
8
|
|
|
9
9
|
private def self.state_sections: (IR::Automaton automaton, IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
10
10
|
|
|
11
|
+
private def controls: (IR::Automaton automaton) -> String
|
|
12
|
+
|
|
13
|
+
private def self.controls: (IR::Automaton automaton) -> String
|
|
14
|
+
|
|
15
|
+
private def styles: () -> String
|
|
16
|
+
|
|
17
|
+
private def self.styles: () -> String
|
|
18
|
+
|
|
19
|
+
private def interaction_script: () -> String
|
|
20
|
+
|
|
21
|
+
private def self.interaction_script: () -> String
|
|
22
|
+
|
|
23
|
+
private def one_hop_neighbors: (IR::Automaton automaton, Integer state_id) -> Array[Integer]
|
|
24
|
+
|
|
25
|
+
private def self.one_hop_neighbors: (IR::Automaton automaton, Integer state_id) -> Array[Integer]
|
|
26
|
+
|
|
11
27
|
private def item_html: (IR::AutomatonItem item, IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
12
28
|
|
|
13
29
|
private def self.item_html: (IR::AutomatonItem item, IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
@@ -16,9 +32,9 @@ module Ibex
|
|
|
16
32
|
|
|
17
33
|
private def self.rule_sections: (IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
18
34
|
|
|
19
|
-
private def conflict_sections: (IR::Automaton automaton) -> String
|
|
35
|
+
private def conflict_sections: (IR::Automaton automaton, IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
20
36
|
|
|
21
|
-
private def self.conflict_sections: (IR::Automaton automaton) -> String
|
|
37
|
+
private def self.conflict_sections: (IR::Automaton automaton, IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
22
38
|
|
|
23
39
|
private def escape: (String value) -> String
|
|
24
40
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/mermaid.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Renders an Automaton IR graph as a GitHub-compatible Mermaid flowchart.
|
|
6
|
+
module Mermaid
|
|
7
|
+
# @rbs (IR::Automaton automaton) -> String
|
|
8
|
+
def self?.render: (IR::Automaton automaton) -> String
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
# @rbs (String value) -> String
|
|
13
|
+
def self?.escape: (String value) -> String
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/railroad.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Renders normalized Grammar IR as a self-contained SVG railroad diagram.
|
|
6
|
+
module Railroad
|
|
7
|
+
CHAR_WIDTH: Integer
|
|
8
|
+
|
|
9
|
+
BOX_HEIGHT: Integer
|
|
10
|
+
|
|
11
|
+
BOX_PADDING: Integer
|
|
12
|
+
|
|
13
|
+
TRACK_GAP: Integer
|
|
14
|
+
|
|
15
|
+
ROW_HEIGHT: Integer
|
|
16
|
+
|
|
17
|
+
SECTION_HEADER: Integer
|
|
18
|
+
|
|
19
|
+
SECTION_GAP: Integer
|
|
20
|
+
|
|
21
|
+
PAGE_PADDING: Integer
|
|
22
|
+
|
|
23
|
+
TITLE_HEIGHT: Integer
|
|
24
|
+
|
|
25
|
+
EPSILON_WIDTH: Integer
|
|
26
|
+
|
|
27
|
+
START_RADIUS: Integer
|
|
28
|
+
|
|
29
|
+
END_RADIUS: Integer
|
|
30
|
+
|
|
31
|
+
MIN_RAIL_X: Integer
|
|
32
|
+
|
|
33
|
+
# @rbs STYLE: String
|
|
34
|
+
STYLE: ::String
|
|
35
|
+
|
|
36
|
+
extend RailroadDocumentation
|
|
37
|
+
|
|
38
|
+
# @rbs (IR::Grammar grammar) -> String
|
|
39
|
+
def self.render: (IR::Grammar grammar) -> String
|
|
40
|
+
|
|
41
|
+
# @rbs (IR::Grammar grammar) -> Array[[IR::GrammarSymbol, Array[IR::Production]]]
|
|
42
|
+
private def self.production_groups: (IR::Grammar grammar) -> Array[[ IR::GrammarSymbol, Array[IR::Production] ]]
|
|
43
|
+
|
|
44
|
+
# @rbs (IR::Grammar grammar, Array[[IR::GrammarSymbol, Array[IR::Production]]] groups,
|
|
45
|
+
# Hash[Integer, String] labels, Integer rail_x) -> Integer
|
|
46
|
+
private def self.document_width: (IR::Grammar grammar, Array[[ IR::GrammarSymbol, Array[IR::Production] ]] groups, Hash[Integer, String] labels, Integer rail_x) -> Integer
|
|
47
|
+
|
|
48
|
+
# @rbs (Array[[IR::GrammarSymbol, Array[IR::Production]]] groups) -> Integer
|
|
49
|
+
private def self.document_height: (Array[[ IR::GrammarSymbol, Array[IR::Production] ]] groups) -> Integer
|
|
50
|
+
|
|
51
|
+
# @rbs (IR::Grammar grammar, Integer width, Integer height) -> Array[String]
|
|
52
|
+
private def self.document_start: (IR::Grammar grammar, Integer width, Integer height) -> Array[String]
|
|
53
|
+
|
|
54
|
+
# @rbs (Array[String] lines, IR::Grammar grammar,
|
|
55
|
+
# Array[[IR::GrammarSymbol, Array[IR::Production]]] groups,
|
|
56
|
+
# Hash[Integer, String] labels, Integer rail_x) -> void
|
|
57
|
+
private def self.append_sections: (Array[String] lines, IR::Grammar grammar, Array[[ IR::GrammarSymbol, Array[IR::Production] ]] groups, Hash[Integer, String] labels, Integer rail_x) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (Array[String] lines, IR::Grammar grammar, Array[IR::Production] productions,
|
|
60
|
+
# Hash[Integer, String] labels, Integer rail_x, Integer header_height) -> void
|
|
61
|
+
private def self.append_productions: (Array[String] lines, IR::Grammar grammar, Array[IR::Production] productions, Hash[Integer, String] labels, Integer rail_x, Integer header_height) -> void
|
|
62
|
+
|
|
63
|
+
# @rbs (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels,
|
|
64
|
+
# Integer rail_x, Integer offset_y) -> Array[String]
|
|
65
|
+
private def self.production_lines: (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels, Integer rail_x, Integer offset_y) -> Array[String]
|
|
66
|
+
|
|
67
|
+
# @rbs (Array[String] lines, IR::Grammar grammar, IR::Production production,
|
|
68
|
+
# Hash[Integer, String] labels, Integer cursor) -> Integer
|
|
69
|
+
private def self.append_rhs: (Array[String] lines, IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels, Integer cursor) -> Integer
|
|
70
|
+
|
|
71
|
+
# @rbs (Array[String] lines, Integer cursor) -> Integer
|
|
72
|
+
private def self.append_epsilon: (Array[String] lines, Integer cursor) -> Integer
|
|
73
|
+
|
|
74
|
+
# @rbs (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels,
|
|
75
|
+
# Integer rail_x) -> Integer
|
|
76
|
+
private def self.row_end_x: (IR::Grammar grammar, IR::Production production, Hash[Integer, String] labels, Integer rail_x) -> Integer
|
|
77
|
+
|
|
78
|
+
# @rbs (String value) -> Integer
|
|
79
|
+
private def self.label_width: (String value) -> Integer
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/railroad_documentation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Documentation layout helpers mixed into the railroad renderer singleton.
|
|
6
|
+
module RailroadDocumentation
|
|
7
|
+
DOCUMENTATION_COLUMNS: Integer
|
|
8
|
+
|
|
9
|
+
DOCUMENTATION_LINE_HEIGHT: Integer
|
|
10
|
+
|
|
11
|
+
DOCUMENTATION_GAP: Integer
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
# @rbs (Array[String] lines, IR::GrammarSymbol symbol) -> void
|
|
16
|
+
def append_rule_documentation: (Array[String] lines, IR::GrammarSymbol symbol) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::GrammarSymbol symbol) -> Integer
|
|
19
|
+
def section_header_height: (IR::GrammarSymbol symbol) -> Integer
|
|
20
|
+
|
|
21
|
+
# @rbs (String? documentation) -> Array[String]
|
|
22
|
+
def documentation_lines: (String? documentation) -> Array[String]
|
|
23
|
+
|
|
24
|
+
# @rbs (String | Integer value) -> String
|
|
25
|
+
def escape: (String | Integer value) -> String
|
|
26
|
+
|
|
27
|
+
# @rbs (Integer from, Integer to) -> String
|
|
28
|
+
def track: (Integer from, Integer to) -> String
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/sig/ibex/codegen/rbs.rbs
CHANGED
|
@@ -3,24 +3,106 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module Codegen
|
|
5
5
|
# Generates an RBS declaration for the public surface of a generated parser.
|
|
6
|
+
# rubocop:disable Metrics/ClassLength -- one generator owns the complete parser signature.
|
|
6
7
|
class RBS
|
|
7
|
-
|
|
8
|
+
type syntax_definition = { name: String, kind: Integer, fields: Hash[String, CSTMetadata::field_slot] }
|
|
8
9
|
|
|
9
|
-
@
|
|
10
|
+
@generated_action_abi: GeneratedActionABI::Cache
|
|
11
|
+
|
|
12
|
+
@omit_action_call: bool
|
|
10
13
|
|
|
11
14
|
@superclass: String
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
@grammar: IR::Grammar
|
|
17
|
+
|
|
18
|
+
@automaton: IR::Automaton
|
|
19
|
+
|
|
20
|
+
# @rbs (IR::Automaton automaton, ?superclass: String?, ?omit_action_call: bool?) -> void
|
|
21
|
+
def initialize: (IR::Automaton automaton, ?superclass: String?, ?omit_action_call: bool?) -> void
|
|
15
22
|
|
|
16
23
|
# @rbs () -> String
|
|
17
24
|
def generate: () -> String
|
|
18
25
|
|
|
19
26
|
private
|
|
20
27
|
|
|
28
|
+
# @rbs (Array[String] lines) -> void
|
|
29
|
+
def append_ast_contract: (Array[String] lines) -> void
|
|
30
|
+
|
|
31
|
+
# @rbs (Array[String] lines) -> void
|
|
32
|
+
def append_syntax_contract: (Array[String] lines) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs () -> Hash[String, syntax_definition]
|
|
35
|
+
def syntax_node_definitions: () -> Hash[String, syntax_definition]
|
|
36
|
+
|
|
37
|
+
# @rbs (Hash[String, CSTMetadata::field_slot] left, Hash[String, CSTMetadata::field_slot] right) -> Hash[String, CSTMetadata::field_slot]
|
|
38
|
+
def merge_syntax_fields: (Hash[String, CSTMetadata::field_slot] left, Hash[String, CSTMetadata::field_slot] right) -> Hash[String, CSTMetadata::field_slot]
|
|
39
|
+
|
|
40
|
+
# @rbs (Array[String] lines, syntax_definition definition) -> void
|
|
41
|
+
def append_syntax_node_contract: (Array[String] lines, syntax_definition definition) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (String node_name, Integer index) -> String
|
|
44
|
+
def syntax_field_type: (String node_name, Integer index) -> String
|
|
45
|
+
|
|
46
|
+
# @rbs (Array[String] lines, Hash[String, CSTMetadata::field_slot] fields) -> void
|
|
47
|
+
def append_repetition_contracts: (Array[String] lines, Hash[String, CSTMetadata::field_slot] fields) -> void
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Hash[String, IR::node_annotation]
|
|
50
|
+
def ast_node_definitions: () -> Hash[String, IR::node_annotation]
|
|
51
|
+
|
|
52
|
+
# @rbs (Array[String] lines, IR::node_annotation node) -> void
|
|
53
|
+
def append_ast_node_contract: (Array[String] lines, IR::node_annotation node) -> void
|
|
54
|
+
|
|
55
|
+
# @rbs (String name, Integer length) -> Array[String]
|
|
56
|
+
def ast_node_field_types: (String name, Integer length) -> Array[String]
|
|
57
|
+
|
|
58
|
+
# @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
59
|
+
def append_visitor_contract: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
60
|
+
|
|
61
|
+
# @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
62
|
+
def append_listener_contract: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
63
|
+
|
|
64
|
+
# @rbs (String name) -> String
|
|
65
|
+
def ast_method_name: (String name) -> String
|
|
66
|
+
|
|
21
67
|
# @rbs (Array[String] lines) -> void
|
|
22
68
|
def append_contract: (Array[String] lines) -> void
|
|
23
69
|
|
|
70
|
+
# @rbs (Array[String] lines) -> void
|
|
71
|
+
def append_entry_contract: (Array[String] lines) -> void
|
|
72
|
+
|
|
73
|
+
# @rbs (Array[String] lines) -> void
|
|
74
|
+
def append_parameter_contract: (Array[String] lines) -> void
|
|
75
|
+
|
|
76
|
+
# @rbs (Array[String] lines) -> void
|
|
77
|
+
def append_lexer_contract: (Array[String] lines) -> void
|
|
78
|
+
|
|
79
|
+
# @rbs (Array[String] lines) -> void
|
|
80
|
+
def append_value_printer_signatures: (Array[String] lines) -> void
|
|
81
|
+
|
|
82
|
+
# @rbs (Array[String] lines) -> void
|
|
83
|
+
def append_actions: (Array[String] lines) -> void
|
|
84
|
+
|
|
85
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
86
|
+
def append_action_signature: (Array[String] lines, IR::Production production) -> void
|
|
87
|
+
|
|
88
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
89
|
+
def append_composed_fragment_signatures: (Array[String] lines, IR::Production production) -> void
|
|
90
|
+
|
|
91
|
+
# @rbs (IR::Production production, IR::action_composition_plan plan, Integer slot, Integer step_index) -> String
|
|
92
|
+
def composition_slot_type: (IR::Production production, IR::action_composition_plan plan, Integer slot, Integer step_index) -> String
|
|
93
|
+
|
|
94
|
+
# @rbs (IR::Production production) -> bool
|
|
95
|
+
def action_method?: (IR::Production production) -> bool
|
|
96
|
+
|
|
97
|
+
# @rbs (IR::Production production) -> bool
|
|
98
|
+
def composed_action?: (IR::Production production) -> bool
|
|
99
|
+
|
|
100
|
+
# @rbs (Integer symbol_id) -> String
|
|
101
|
+
def semantic_type: (Integer symbol_id) -> String
|
|
102
|
+
|
|
103
|
+
# @rbs (Integer symbol_id) -> String?
|
|
104
|
+
def inferred_ast_type: (Integer symbol_id) -> String?
|
|
105
|
+
|
|
24
106
|
# @rbs () -> [Array[String], String]
|
|
25
107
|
def class_parts: () -> [ Array[String], String ]
|
|
26
108
|
|
data/sig/ibex/codegen/report.rbs
CHANGED
|
@@ -4,17 +4,17 @@ module Ibex
|
|
|
4
4
|
module Codegen
|
|
5
5
|
# Renders a human-readable state and conflict report from Automaton IR.
|
|
6
6
|
module Report
|
|
7
|
-
private def append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[
|
|
7
|
+
private def append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[LALR::search_counterexample] examples, Hash[Integer, String] labels) -> void
|
|
8
8
|
|
|
9
|
-
private def self.append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[
|
|
9
|
+
private def self.append_state: (Array[String] lines, IR::AutomatonState state, IR::Grammar grammar, Array[LALR::search_counterexample] examples, Hash[Integer, String] labels) -> void
|
|
10
10
|
|
|
11
|
-
private def append_counterexample: (Array[String] lines,
|
|
11
|
+
private def append_counterexample: (Array[String] lines, LALR::search_counterexample example, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
12
12
|
|
|
13
|
-
private def self.append_counterexample: (Array[String] lines,
|
|
13
|
+
private def self.append_counterexample: (Array[String] lines, LALR::search_counterexample example, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
14
14
|
|
|
15
|
-
private def append_tree: (Array[String] lines,
|
|
15
|
+
private def append_tree: (Array[String] lines, Object? tree, String indentation, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
16
16
|
|
|
17
|
-
private def self.append_tree: (Array[String] lines,
|
|
17
|
+
private def self.append_tree: (Array[String] lines, Object? tree, String indentation, IR::Grammar grammar, Hash[Integer, String] labels) -> void
|
|
18
18
|
|
|
19
19
|
private def format_item: (IR::AutomatonItem item, IR::Grammar grammar, Hash[Integer, String] labels) -> String
|
|
20
20
|
|
|
@@ -28,9 +28,17 @@ module Ibex
|
|
|
28
28
|
|
|
29
29
|
private def self.symbol_name: (Hash[Integer, String] labels, Integer id) -> String
|
|
30
30
|
|
|
31
|
-
private def tree_label: (IR::Grammar grammar, Hash[Integer, String] labels,
|
|
31
|
+
private def tree_label: (IR::Grammar grammar, Hash[Integer, String] labels, Object? value) -> Object?
|
|
32
32
|
|
|
33
|
-
private def self.tree_label: (IR::Grammar grammar, Hash[Integer, String] labels,
|
|
33
|
+
private def self.tree_label: (IR::Grammar grammar, Hash[Integer, String] labels, Object? value) -> Object?
|
|
34
|
+
|
|
35
|
+
private def display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, Object?]
|
|
36
|
+
|
|
37
|
+
private def self.display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, Object?]
|
|
38
|
+
|
|
39
|
+
private def format_value: (Object? value) -> String
|
|
40
|
+
|
|
41
|
+
private def self.format_value: (Object? value) -> String
|
|
34
42
|
|
|
35
43
|
# @rbs (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
|
|
36
44
|
def self?.render: (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
|