ibex 0.1.0 → 0.2.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 +247 -104
- data/docs/architecture.md +322 -28
- data/docs/cst-migration.md +107 -0
- data/docs/cst.md +213 -0
- data/docs/development.md +129 -0
- data/docs/editor-setup.md +25 -0
- data/docs/error-ux.md +60 -0
- data/docs/grammar-reference.md +458 -18
- data/docs/lexer-migration.md +51 -0
- data/docs/racc-migration.md +34 -6
- data/docs/release-readiness.md +163 -0
- data/docs/stability.md +124 -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/sets.rb +5 -4
- data/lib/ibex/artifact_set.rb +63 -0
- data/lib/ibex/cli/ambiguity.rb +66 -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 +116 -0
- data/lib/ibex/cli/documentation.rb +67 -0
- data/lib/ibex/cli/error_messages.rb +177 -0
- data/lib/ibex/cli/explain.rb +76 -0
- data/lib/ibex/cli/formatting.rb +386 -0
- data/lib/ibex/cli/generation_artifacts.rb +138 -0
- data/lib/ibex/cli/generation_error_messages.rb +39 -0
- data/lib/ibex/cli/grammar_tests.rb +122 -0
- data/lib/ibex/cli/ir_tools.rb +184 -0
- data/lib/ibex/cli/lsp.rb +33 -0
- data/lib/ibex/cli/outputs.rb +91 -8
- data/lib/ibex/cli/racc_migration.rb +87 -0
- data/lib/ibex/cli/samples.rb +92 -0
- data/lib/ibex/cli/watch.rb +103 -0
- data/lib/ibex/cli.rb +506 -37
- data/lib/ibex/codegen/action_locations.rb +103 -0
- data/lib/ibex/codegen/action_method_source.rb +210 -0
- data/lib/ibex/codegen/action_source.rb +118 -0
- data/lib/ibex/codegen/ambiguity.rb +173 -0
- data/lib/ibex/codegen/cst_metadata.rb +171 -0
- data/lib/ibex/codegen/documentation.rb +170 -0
- data/lib/ibex/codegen/explain.rb +312 -0
- data/lib/ibex/codegen/generated_action_abi.rb +288 -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 +323 -2
- data/lib/ibex/codegen/report.rb +46 -6
- data/lib/ibex/codegen/ruby.rb +334 -59
- data/lib/ibex/codegen/ruby_actions.rb +143 -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 +90 -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/coverage/collector.rb +188 -0
- data/lib/ibex/coverage/event_stream.rb +97 -0
- data/lib/ibex/coverage/report.rb +259 -0
- data/lib/ibex/coverage/runtime_event_validator.rb +160 -0
- data/lib/ibex/coverage.rb +13 -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/frontend/ast.rb +145 -6
- data/lib/ibex/frontend/bootstrap_parser.rb +47 -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 +407 -0
- data/lib/ibex/frontend/generated_parser.rb +614 -190
- data/lib/ibex/frontend/generated_parser_base.rb +164 -30
- data/lib/ibex/frontend/generated_parser_includes.rb +61 -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 +247 -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/regenerator.rb +26 -1
- data/lib/ibex/frontend/resolution.rb +69 -0
- data/lib/ibex/frontend/resolver.rb +217 -0
- data/lib/ibex/frontend/rule_documentation.rb +103 -0
- data/lib/ibex/frontend/source_cursor.rb +132 -8
- 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 +81 -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 +216 -26
- 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 +8 -3
- data/lib/ibex/frontend.rb +13 -2
- data/lib/ibex/generation_input.rb +57 -0
- data/lib/ibex/generation_manifest.rb +200 -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 +38 -5
- data/lib/ibex/ir/grammar_ir.rb +137 -24
- data/lib/ibex/ir/lexer_ir.rb +76 -0
- data/lib/ibex/ir/migration.rb +120 -0
- data/lib/ibex/ir/serialize.rb +110 -19
- data/lib/ibex/ir/validator/automaton.rb +345 -0
- data/lib/ibex/ir/validator/base.rb +129 -0
- data/lib/ibex/ir/validator/grammar.rb +604 -0
- data/lib/ibex/ir/validator/lexer.rb +113 -0
- data/lib/ibex/ir/validator.rb +62 -0
- data/lib/ibex/ir.rb +57 -4
- data/lib/ibex/lalr/build_metrics.rb +23 -0
- data/lib/ibex/lalr/builder.rb +379 -52
- data/lib/ibex/lalr/conflict.rb +1 -0
- data/lib/ibex/lalr/conflict_search.rb +11 -5
- data/lib/ibex/lalr/counterexample.rb +20 -5
- data/lib/ibex/lalr/direct_lookaheads.rb +236 -0
- data/lib/ibex/lalr/ielr_partition.rb +152 -0
- data/lib/ibex/lalr/on_error_reductions.rb +74 -0
- data/lib/ibex/lalr.rb +7 -0
- data/lib/ibex/location.rb +129 -0
- data/lib/ibex/lsp/document_handlers.rb +66 -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 +78 -0
- data/lib/ibex/lsp/navigation_handlers.rb +56 -0
- data/lib/ibex/lsp/position_codec.rb +109 -0
- data/lib/ibex/lsp/protocol_error.rb +33 -0
- data/lib/ibex/lsp/request_handlers.rb +45 -0
- data/lib/ibex/lsp/request_support.rb +87 -0
- data/lib/ibex/lsp/server.rb +146 -0
- data/lib/ibex/lsp/symbol_index.rb +241 -0
- data/lib/ibex/lsp/symbol_index_builder.rb +267 -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 +17 -0
- data/lib/ibex/lsp/transport.rb +118 -0
- data/lib/ibex/lsp/workspace.rb +127 -0
- data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
- data/lib/ibex/lsp.rb +32 -0
- data/lib/ibex/normalize/declarations.rb +140 -7
- data/lib/ibex/normalize/diagnostics.rb +50 -5
- data/lib/ibex/normalize/expander.rb +59 -55
- data/lib/ibex/normalize/expression.rb +60 -39
- data/lib/ibex/normalize/inline_expansion.rb +414 -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 +69 -0
- data/lib/ibex/normalize/parameter_lowering.rb +126 -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 +199 -0
- data/lib/ibex/normalize/recovery_declarations.rb +84 -0
- data/lib/ibex/normalize.rb +179 -14
- 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 +94 -0
- data/lib/ibex/racc_migration.rb +12 -0
- data/lib/ibex/rake_task.rb +116 -0
- data/lib/ibex/samples.rb +186 -0
- data/lib/ibex/table_simulation/result.rb +51 -0
- data/lib/ibex/table_simulation/simulator.rb +253 -0
- data/lib/ibex/table_simulation/step.rb +60 -0
- data/lib/ibex/table_simulation/text.rb +31 -0
- data/lib/ibex/table_simulation.rb +13 -0
- data/lib/ibex/tables.rb +9 -70
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex/watch/runner.rb +172 -0
- data/lib/ibex/watch/source_snapshot.rb +93 -0
- data/lib/ibex/watch.rb +11 -0
- data/lib/ibex.rb +25 -1
- data/schema/automaton-ir-v1.schema.json +401 -0
- data/schema/automaton-ir-v2.schema.json +58 -0
- data/schema/benchmark-v1.schema.json +212 -0
- data/schema/benchmark-v2.schema.json +61 -0
- data/schema/cst-v1.json +170 -0
- data/schema/error-ux-v1.schema.json +258 -0
- data/schema/explain-v1.schema.json +433 -0
- data/schema/frontend-diagnostics-v1.schema.json +154 -0
- data/schema/generation-manifest-v1.schema.json +115 -0
- data/schema/grammar-ir-v1.schema.json +426 -0
- data/schema/grammar-ir-v2.schema.json +779 -0
- data/schema/lexer-ir-v1.schema.json +215 -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/runtime-coverage-v1.schema.json +86 -0
- data/schema/runtime-event-v1.schema.json +308 -0
- data/schema/table-simulation-v1.schema.json +70 -0
- data/sig/ibex/artifact_set.rbs +37 -0
- data/sig/ibex/cli/ambiguity.rbs +22 -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 +38 -0
- data/sig/ibex/cli/documentation.rbs +25 -0
- data/sig/ibex/cli/error_messages.rbs +57 -0
- data/sig/ibex/cli/explain.rbs +25 -0
- data/sig/ibex/cli/formatting.rbs +103 -0
- data/sig/ibex/cli/generation_artifacts.rbs +50 -0
- data/sig/ibex/cli/generation_error_messages.rbs +19 -0
- data/sig/ibex/cli/grammar_tests.rbs +36 -0
- data/sig/ibex/cli/ir_tools.rbs +51 -0
- data/sig/ibex/cli/lsp.rbs +14 -0
- data/sig/ibex/cli/outputs.rbs +17 -0
- data/sig/ibex/cli/racc_migration.rbs +30 -0
- data/sig/ibex/cli/samples.rbs +30 -0
- data/sig/ibex/cli/watch.rbs +43 -0
- data/sig/ibex/cli.rbs +104 -5
- 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 +85 -0
- data/sig/ibex/codegen/generated_action_abi.rbs +101 -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 +84 -4
- data/sig/ibex/codegen/report.rbs +8 -0
- data/sig/ibex/codegen/ruby.rbs +97 -23
- 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 +25 -0
- data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
- data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
- data/sig/ibex/coverage/collector.rbs +76 -0
- data/sig/ibex/coverage/event_stream.rbs +42 -0
- data/sig/ibex/coverage/report.rbs +100 -0
- data/sig/ibex/coverage/runtime_event_validator.rbs +68 -0
- data/sig/ibex/coverage.rbs +7 -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/frontend/ast.rbs +208 -19
- data/sig/ibex/frontend/bootstrap_parser.rbs +11 -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 +135 -0
- data/sig/ibex/frontend/generated_parser.rbs +218 -68
- data/sig/ibex/frontend/generated_parser_base.rbs +61 -10
- 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 +54 -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/regenerator.rbs +11 -0
- data/sig/ibex/frontend/resolution.rbs +33 -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 +36 -3
- 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 +53 -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 +73 -5
- data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
- data/sig/ibex/frontend/token_adapter.rbs +5 -2
- data/sig/ibex/frontend.rbs +1 -1
- data/sig/ibex/generation_input.rbs +37 -0
- data/sig/ibex/generation_manifest.rbs +67 -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 +8 -2
- data/sig/ibex/ir/grammar_ir.rbs +75 -15
- data/sig/ibex/ir/lexer_ir.rbs +57 -0
- data/sig/ibex/ir/migration.rbs +34 -0
- data/sig/ibex/ir/serialize.rbs +23 -6
- data/sig/ibex/ir/validator/automaton.rbs +109 -0
- data/sig/ibex/ir/validator/base.rbs +65 -0
- data/sig/ibex/ir/validator/grammar.rbs +184 -0
- data/sig/ibex/ir/validator/lexer.rbs +37 -0
- data/sig/ibex/ir/validator.rbs +16 -0
- data/sig/ibex/ir.rbs +38 -4
- data/sig/ibex/lalr/build_metrics.rbs +20 -0
- data/sig/ibex/lalr/builder.rbs +95 -15
- data/sig/ibex/lalr/conflict_search.rbs +7 -3
- data/sig/ibex/lalr/counterexample.rbs +5 -2
- data/sig/ibex/lalr/direct_lookaheads.rbs +86 -0
- data/sig/ibex/lalr/ielr_partition.rbs +59 -0
- data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
- data/sig/ibex/lalr.rbs +6 -0
- 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 +30 -0
- data/sig/ibex/lsp/position_codec.rbs +40 -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 +78 -0
- data/sig/ibex/lsp/symbol_index_builder.rbs +87 -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 +25 -0
- data/sig/ibex/lsp/transport.rbs +35 -0
- data/sig/ibex/lsp/workspace.rbs +41 -0
- data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
- data/sig/ibex/lsp.rbs +7 -0
- data/sig/ibex/normalize/declarations.rbs +31 -0
- data/sig/ibex/normalize/diagnostics.rbs +9 -0
- data/sig/ibex/normalize/expander.rbs +20 -14
- data/sig/ibex/normalize/expression.rbs +10 -10
- data/sig/ibex/normalize/inline_expansion.rbs +120 -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 +32 -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 +46 -0
- data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
- data/sig/ibex/normalize.rbs +123 -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 +53 -0
- data/sig/ibex/racc_migration.rbs +8 -0
- data/sig/ibex/rake_task.rbs +51 -0
- data/sig/ibex/samples.rbs +51 -0
- data/sig/ibex/table_simulation/result.rbs +32 -0
- data/sig/ibex/table_simulation/simulator.rbs +98 -0
- data/sig/ibex/table_simulation/step.rbs +40 -0
- data/sig/ibex/table_simulation/text.rbs +14 -0
- data/sig/ibex/table_simulation.rbs +7 -0
- data/sig/ibex/tables.rbs +0 -26
- data/sig/ibex/watch/runner.rbs +48 -0
- data/sig/ibex/watch/source_snapshot.rbs +42 -0
- data/sig/ibex/watch.rbs +7 -0
- data/sig/ibex.rbs +2 -0
- metadata +301 -16
- 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,36 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_transaction_recovery.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Failure recovery and best-effort cleanup for GenerationTransaction.
|
|
5
|
+
module GenerationTransactionRecovery
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Exception cause) -> bot
|
|
9
|
+
def handle_failure: (Exception cause) -> bot
|
|
10
|
+
|
|
11
|
+
# @rbs (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync) -> bool
|
|
12
|
+
def source_change_clean?: (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync) -> bool
|
|
13
|
+
|
|
14
|
+
# rubocop:disable Layout/LineLength
|
|
15
|
+
# @rbs (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync, Array[String] recovery) -> Array[String]
|
|
16
|
+
def failure_details: (Exception cause, Array[String] rollback, Array[String] cleanup, Array[String] sync, Array[String] recovery) -> Array[String]
|
|
17
|
+
|
|
18
|
+
# @rbs () -> Array[String]
|
|
19
|
+
def recovery_artifacts: () -> Array[String]
|
|
20
|
+
|
|
21
|
+
# @rbs () -> Array[String]
|
|
22
|
+
def rollback: () -> Array[String]
|
|
23
|
+
|
|
24
|
+
# @rbs (Hash[Symbol, untyped] record) -> void
|
|
25
|
+
def rollback_record: (Hash[Symbol, untyped] record) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs (preserve_backups: bool) -> Array[String]
|
|
28
|
+
def cleanup_artifacts: (preserve_backups: bool) -> Array[String]
|
|
29
|
+
|
|
30
|
+
# @rbs (String path, Array[String] failures) -> void
|
|
31
|
+
def remove_artifact: (String path, Array[String] failures) -> void
|
|
32
|
+
|
|
33
|
+
# @rbs () -> Array[String]
|
|
34
|
+
def sync_directories_best_effort: () -> Array[String]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_transaction_validation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Canonical target, source, symlink, and lock identity checks for generation.
|
|
5
|
+
module GenerationTransactionValidation
|
|
6
|
+
private def lock_path: (String) -> String
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# Follow a final symlink while preserving the symlink path itself during publication.
|
|
11
|
+
# @rbs (String path, ?Hash[String, bool] seen, ?validate_links: bool) -> String
|
|
12
|
+
def resolved_target: (String path, ?Hash[String, bool] seen, ?validate_links: bool) -> String
|
|
13
|
+
|
|
14
|
+
# @rbs (String expanded, bool validate_links) -> String
|
|
15
|
+
def existing_target: (String expanded, bool validate_links) -> String
|
|
16
|
+
|
|
17
|
+
# @rbs (String target) -> void
|
|
18
|
+
def validate_existing_target!: (String target) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs () -> void
|
|
21
|
+
def validate_source_boundaries!: () -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (Array[String] lock_paths) -> void
|
|
24
|
+
def validate_lock_boundaries!: (Array[String] lock_paths) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (String path, File lock) -> void
|
|
27
|
+
def validate_lock_identity!: (String path, File lock) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs () -> Array[String]
|
|
30
|
+
def protected_generation_paths: () -> Array[String]
|
|
31
|
+
|
|
32
|
+
# @rbs () -> Array[File::Stat]
|
|
33
|
+
def protected_generation_stats: () -> Array[File::Stat]
|
|
34
|
+
|
|
35
|
+
# @rbs (File::Stat path_stat, File::Stat lock_stat) -> bool
|
|
36
|
+
def stable_lock_identity?: (File::Stat path_stat, File::Stat lock_stat) -> bool
|
|
37
|
+
|
|
38
|
+
# @rbs (File::Stat left, File::Stat right) -> bool
|
|
39
|
+
def same_inode?: (File::Stat left, File::Stat right) -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs (String left, String right) -> bool
|
|
42
|
+
def paths_alias?: (String left, String right) -> bool
|
|
43
|
+
|
|
44
|
+
# Reject target names that collide on common case-insensitive or
|
|
45
|
+
# normalization-insensitive filesystems, even when the current filesystem
|
|
46
|
+
# would permit both names.
|
|
47
|
+
# @rbs (String path) -> [String, String]
|
|
48
|
+
def portable_target_key: (String path) -> [ String, String ]
|
|
49
|
+
|
|
50
|
+
# @rbs (String phase) -> void
|
|
51
|
+
def ensure_sources_stable!: (String phase) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (String phase) -> void
|
|
54
|
+
def validate_active_locks!: (String phase) -> void
|
|
55
|
+
|
|
56
|
+
# @rbs (String phase) -> void
|
|
57
|
+
def validate_current_targets!: (String phase) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (Hash[Symbol, untyped] record, Array[String] sources, String phase) -> void
|
|
60
|
+
def validate_current_target!: (Hash[Symbol, untyped] record, Array[String] sources, String phase) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs () -> void
|
|
63
|
+
def validate_locked_targets!: () -> void
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Generated from lib/ibex/grammar_tests.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Executes grammar-declared source examples against one generated parser.
|
|
5
|
+
module GrammarTests
|
|
6
|
+
DEFAULT_TIMEOUT: ::Integer
|
|
7
|
+
|
|
8
|
+
RESULT_MARKER: ::String
|
|
9
|
+
|
|
10
|
+
class Result < Struct[Symbol | String? | IR::location | Array[Integer]]
|
|
11
|
+
attr_accessor expectation(): Symbol
|
|
12
|
+
|
|
13
|
+
attr_accessor actual(): Symbol
|
|
14
|
+
|
|
15
|
+
attr_accessor error_class(): String?
|
|
16
|
+
|
|
17
|
+
attr_accessor error_message(): String?
|
|
18
|
+
|
|
19
|
+
attr_accessor location(): IR::location
|
|
20
|
+
|
|
21
|
+
attr_accessor production_ids(): Array[Integer]
|
|
22
|
+
|
|
23
|
+
def self.new: (?expectation: Symbol, ?actual: Symbol, ?error_class: String?, ?error_message: String?, ?location: IR::location, ?production_ids: Array[Integer]) -> instance
|
|
24
|
+
| ({ ?expectation: Symbol, ?actual: Symbol, ?error_class: String?, ?error_message: String?, ?location: IR::location, ?production_ids: Array[Integer] }) -> instance
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Result
|
|
28
|
+
# @rbs () -> bool
|
|
29
|
+
def passed?: () -> bool
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class ProductionCoverage < Struct[Array[Integer] | Integer]
|
|
33
|
+
attr_accessor covered_ids(): Array[Integer]
|
|
34
|
+
|
|
35
|
+
attr_accessor missing_ids(): Array[Integer]
|
|
36
|
+
|
|
37
|
+
attr_accessor production_count(): Integer
|
|
38
|
+
|
|
39
|
+
def self.new: (?covered_ids: Array[Integer], ?missing_ids: Array[Integer], ?production_count: Integer) -> instance
|
|
40
|
+
| ({ ?covered_ids: Array[Integer], ?missing_ids: Array[Integer], ?production_count: Integer }) -> instance
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class ProductionCoverage
|
|
44
|
+
# @rbs () -> Float
|
|
45
|
+
def percentage: () -> Float
|
|
46
|
+
|
|
47
|
+
# @rbs (Integer minimum) -> bool
|
|
48
|
+
def meets?: (Integer minimum) -> bool
|
|
49
|
+
|
|
50
|
+
# @rbs () -> bool
|
|
51
|
+
def complete?: () -> bool
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Runs all examples in one isolated process while creating a fresh parser
|
|
55
|
+
# instance for every case.
|
|
56
|
+
class Runner
|
|
57
|
+
CHILD_RUNNER: ::String
|
|
58
|
+
|
|
59
|
+
@automaton: IR::Automaton
|
|
60
|
+
|
|
61
|
+
@timeout: Integer
|
|
62
|
+
|
|
63
|
+
# @rbs (IR::Automaton automaton, ?timeout: Integer) -> void
|
|
64
|
+
def initialize: (IR::Automaton automaton, ?timeout: Integer) -> void
|
|
65
|
+
|
|
66
|
+
# @rbs () -> Array[Result]
|
|
67
|
+
def run: () -> Array[Result]
|
|
68
|
+
|
|
69
|
+
# @rbs (Array[Result] results) -> ProductionCoverage
|
|
70
|
+
def production_coverage: (Array[Result] results) -> ProductionCoverage
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
# @rbs () -> String
|
|
75
|
+
def generated_parser: () -> String
|
|
76
|
+
|
|
77
|
+
# @rbs (String parser_path, String runner_path) -> Array[Result]
|
|
78
|
+
def execute_child: (String parser_path, String runner_path) -> Array[Result]
|
|
79
|
+
|
|
80
|
+
# @rbs (Integer pid) -> Process::Status
|
|
81
|
+
def wait_for_child: (Integer pid) -> Process::Status
|
|
82
|
+
|
|
83
|
+
# @rbs (Process::Status status, String errors) -> bot
|
|
84
|
+
def raise_child_failure: (Process::Status status, String errors) -> bot
|
|
85
|
+
|
|
86
|
+
# @rbs (String output) -> Array[Result]
|
|
87
|
+
def decode_results: (String output) -> Array[Result]
|
|
88
|
+
|
|
89
|
+
# @rbs (IR::grammar_test test, untyped document) -> Result
|
|
90
|
+
def build_result: (IR::grammar_test test, untyped document) -> Result
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -57,19 +57,25 @@ module Ibex
|
|
|
57
57
|
|
|
58
58
|
attr_reader states: Array[AutomatonState]
|
|
59
59
|
|
|
60
|
+
attr_reader entry_states: Hash[String, Integer]
|
|
61
|
+
|
|
60
62
|
attr_reader conflict_summary: conflict_summary
|
|
61
63
|
|
|
62
64
|
attr_reader schema_version: Integer
|
|
63
65
|
|
|
64
66
|
# @rbs (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary,
|
|
65
|
-
# ?algorithm: String, ?grammar_digest: String?, ?schema_version: Integer
|
|
66
|
-
|
|
67
|
+
# ?algorithm: String, ?grammar_digest: String?, ?schema_version: Integer,
|
|
68
|
+
# ?entry_states: Hash[String, Integer]?) -> void
|
|
69
|
+
def initialize: (grammar: Grammar, states: Array[AutomatonState], conflict_summary: conflict_summary, ?algorithm: String, ?grammar_digest: String?, ?schema_version: Integer, ?entry_states: Hash[String, Integer]?) -> void
|
|
67
70
|
|
|
68
71
|
# @rbs () -> Hash[Symbol, untyped]
|
|
69
72
|
def to_h: () -> Hash[Symbol, untyped]
|
|
70
73
|
|
|
71
74
|
private
|
|
72
75
|
|
|
76
|
+
# @rbs () -> void
|
|
77
|
+
def validate_entry_states: () -> void
|
|
78
|
+
|
|
73
79
|
# @rbs (Grammar grammar) -> String
|
|
74
80
|
def digest_for: (Grammar grammar) -> String
|
|
75
81
|
end
|
data/sig/ibex/ir/grammar_ir.rbs
CHANGED
|
@@ -4,6 +4,8 @@ module Ibex
|
|
|
4
4
|
module IR
|
|
5
5
|
SCHEMA_VERSION: ::Integer
|
|
6
6
|
|
|
7
|
+
SUPPORTED_SCHEMA_VERSIONS: Array[Integer]
|
|
8
|
+
|
|
7
9
|
# @rbs (untyped value) -> untyped
|
|
8
10
|
def self?.deep_freeze: (untyped value) -> untyped
|
|
9
11
|
|
|
@@ -21,9 +23,15 @@ module Ibex
|
|
|
21
23
|
|
|
22
24
|
attr_reader location: location?
|
|
23
25
|
|
|
26
|
+
attr_reader display_name: String?
|
|
27
|
+
|
|
28
|
+
attr_reader semantic_type: String?
|
|
29
|
+
|
|
30
|
+
attr_reader documentation: String?
|
|
31
|
+
|
|
24
32
|
# @rbs (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?,
|
|
25
|
-
# ?location: location?) -> void
|
|
26
|
-
def initialize: (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?, ?location: location?) -> void
|
|
33
|
+
# ?location: location?, ?display_name: String?, ?semantic_type: String?, ?documentation: String?) -> void
|
|
34
|
+
def initialize: (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?, ?location: location?, ?display_name: String?, ?semantic_type: String?, ?documentation: String?) -> void
|
|
27
35
|
|
|
28
36
|
# @rbs () -> bool
|
|
29
37
|
def terminal?: () -> bool
|
|
@@ -31,8 +39,8 @@ module Ibex
|
|
|
31
39
|
# @rbs () -> bool
|
|
32
40
|
def nonterminal?: () -> bool
|
|
33
41
|
|
|
34
|
-
# @rbs () -> Hash[Symbol, untyped]
|
|
35
|
-
def to_h: () -> Hash[Symbol, untyped]
|
|
42
|
+
# @rbs (?schema_version: Integer) -> Hash[Symbol, untyped]
|
|
43
|
+
def to_h: (?schema_version: Integer) -> Hash[Symbol, untyped]
|
|
36
44
|
end
|
|
37
45
|
|
|
38
46
|
# Opaque Ruby semantic action metadata.
|
|
@@ -45,11 +53,14 @@ module Ibex
|
|
|
45
53
|
|
|
46
54
|
attr_reader context_length: Integer
|
|
47
55
|
|
|
48
|
-
|
|
49
|
-
def initialize: (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer) -> void
|
|
56
|
+
attr_reader composition: action_composition?
|
|
50
57
|
|
|
51
|
-
# @rbs (
|
|
52
|
-
|
|
58
|
+
# @rbs (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer,
|
|
59
|
+
# ?composition: action_composition?) -> void
|
|
60
|
+
def initialize: (code: String, location: location, ?named_refs: Array[named_ref], ?context_length: Integer, ?composition: action_composition?) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs (?schema_version: Integer) -> Hash[Symbol, untyped]
|
|
63
|
+
def to_h: (?schema_version: Integer) -> Hash[Symbol, untyped]
|
|
53
64
|
end
|
|
54
65
|
|
|
55
66
|
# A normalized BNF production using symbol ids.
|
|
@@ -66,12 +77,19 @@ module Ibex
|
|
|
66
77
|
|
|
67
78
|
attr_reader origin: Hash[Symbol, untyped]
|
|
68
79
|
|
|
80
|
+
attr_reader documentation: String?
|
|
81
|
+
|
|
82
|
+
attr_reader expansion: production_expansion?
|
|
83
|
+
|
|
84
|
+
attr_reader node: node_annotation?
|
|
85
|
+
|
|
69
86
|
# @rbs (id: Integer, lhs: Integer, rhs: Array[Integer], action: Action?, precedence_override: Integer?,
|
|
70
|
-
# origin: Hash[Symbol, untyped]
|
|
71
|
-
|
|
87
|
+
# origin: Hash[Symbol, untyped], ?documentation: String?, ?expansion: production_expansion?,
|
|
88
|
+
# ?node: node_annotation?) -> void
|
|
89
|
+
def initialize: (id: Integer, lhs: Integer, rhs: Array[Integer], action: Action?, precedence_override: Integer?, origin: Hash[Symbol, untyped], ?documentation: String?, ?expansion: production_expansion?, ?node: node_annotation?) -> void
|
|
72
90
|
|
|
73
|
-
# @rbs () -> Hash[Symbol, untyped]
|
|
74
|
-
def to_h: () -> Hash[Symbol, untyped]
|
|
91
|
+
# @rbs (?schema_version: Integer) -> Hash[Symbol, untyped]
|
|
92
|
+
def to_h: (?schema_version: Integer) -> Hash[Symbol, untyped]
|
|
75
93
|
end
|
|
76
94
|
|
|
77
95
|
# One opaque user-code block and the location of its first code line.
|
|
@@ -95,8 +113,24 @@ module Ibex
|
|
|
95
113
|
|
|
96
114
|
attr_reader start: String
|
|
97
115
|
|
|
116
|
+
attr_reader starts: Array[String]
|
|
117
|
+
|
|
118
|
+
attr_reader mode: grammar_mode
|
|
119
|
+
|
|
98
120
|
attr_reader expect: Integer
|
|
99
121
|
|
|
122
|
+
attr_reader expect_rr: Integer?
|
|
123
|
+
|
|
124
|
+
attr_reader parser_parameters: Array[parser_parameter]
|
|
125
|
+
|
|
126
|
+
attr_reader value_printers: Array[value_printer]
|
|
127
|
+
|
|
128
|
+
attr_reader grammar_tests: Array[grammar_test]
|
|
129
|
+
|
|
130
|
+
attr_reader lexer: Lexer?
|
|
131
|
+
|
|
132
|
+
attr_reader recovery: recovery_policy
|
|
133
|
+
|
|
100
134
|
attr_reader options: grammar_options
|
|
101
135
|
|
|
102
136
|
attr_reader symbols: Array[GrammarSymbol]
|
|
@@ -113,11 +147,22 @@ module Ibex
|
|
|
113
147
|
|
|
114
148
|
attr_reader schema_version: Integer
|
|
115
149
|
|
|
116
|
-
|
|
150
|
+
attr_reader source_provenance: source_provenance?
|
|
151
|
+
|
|
152
|
+
attr_reader migration: migration_metadata?
|
|
153
|
+
|
|
154
|
+
# @rbs (class_name: String, superclass: String?, start: String, expect: Integer, ?expect_rr: Integer?,
|
|
155
|
+
# options: grammar_options,
|
|
117
156
|
# symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String],
|
|
118
157
|
# conversions: Hash[String, String], warnings: Array[grammar_warning], ?user_code_chunks: user_code_chunks?,
|
|
119
|
-
# ?schema_version: Integer
|
|
120
|
-
|
|
158
|
+
# ?schema_version: Integer, ?source_provenance: source_provenance?,
|
|
159
|
+
# ?migration: migration_metadata?, ?parser_parameters: Array[parser_parameter],
|
|
160
|
+
# ?value_printers: Array[value_printer], ?grammar_tests: Array[grammar_test],
|
|
161
|
+
# ?recovery: recovery_policy?, ?lexer: Lexer?,
|
|
162
|
+
# ?mode: grammar_mode, ?starts: Array[String]?) -> void
|
|
163
|
+
# rubocop:disable Metrics/AbcSize, Metrics/ParameterLists
|
|
164
|
+
# Immutable versioned IR is constructed from explicit public fields.
|
|
165
|
+
def initialize: (class_name: String, superclass: String?, start: String, expect: Integer, options: grammar_options, symbols: Array[GrammarSymbol], productions: Array[Production], user_code: Hash[String, String], conversions: Hash[String, String], warnings: Array[grammar_warning], ?expect_rr: Integer?, ?user_code_chunks: user_code_chunks?, ?schema_version: Integer, ?source_provenance: source_provenance?, ?migration: migration_metadata?, ?parser_parameters: Array[parser_parameter], ?value_printers: Array[value_printer], ?grammar_tests: Array[grammar_test], ?recovery: recovery_policy?, ?lexer: Lexer?, ?mode: grammar_mode, ?starts: Array[String]?) -> void
|
|
121
166
|
|
|
122
167
|
# @rbs (String name) -> GrammarSymbol?
|
|
123
168
|
def symbol: (String name) -> GrammarSymbol?
|
|
@@ -136,6 +181,21 @@ module Ibex
|
|
|
136
181
|
|
|
137
182
|
private
|
|
138
183
|
|
|
184
|
+
# @rbs (grammar_mode mode) -> void
|
|
185
|
+
def validate_mode: (grammar_mode mode) -> void
|
|
186
|
+
|
|
187
|
+
# @rbs (String start, Array[String]? starts, grammar_mode mode) -> Array[String]
|
|
188
|
+
def validate_starts: (String start, Array[String]? starts, grammar_mode mode) -> Array[String]
|
|
189
|
+
|
|
190
|
+
# @rbs (Hash[Symbol, untyped] value) -> void
|
|
191
|
+
def append_optional_metadata: (Hash[Symbol, untyped] value) -> void
|
|
192
|
+
|
|
193
|
+
# @rbs (Hash[Symbol, untyped] value) -> void
|
|
194
|
+
def append_parser_metadata: (Hash[Symbol, untyped] value) -> void
|
|
195
|
+
|
|
196
|
+
# @rbs (Hash[Symbol, untyped] value) -> void
|
|
197
|
+
def append_recovery_metadata: (Hash[Symbol, untyped] value) -> void
|
|
198
|
+
|
|
139
199
|
# @rbs () -> void
|
|
140
200
|
def validate_user_code_chunks: () -> void
|
|
141
201
|
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/lexer_ir.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
LEXER_SCHEMA_VERSION: ::Integer
|
|
6
|
+
|
|
7
|
+
SUPPORTED_LEXER_SCHEMA_VERSIONS: Array[Integer]
|
|
8
|
+
|
|
9
|
+
# One normalized, state-scoped lexer rule.
|
|
10
|
+
class LexerRule
|
|
11
|
+
attr_reader id: Integer
|
|
12
|
+
|
|
13
|
+
attr_reader state: String
|
|
14
|
+
|
|
15
|
+
attr_reader kind: Symbol
|
|
16
|
+
|
|
17
|
+
attr_reader token: String?
|
|
18
|
+
|
|
19
|
+
attr_reader pattern: String
|
|
20
|
+
|
|
21
|
+
attr_reader pattern_kind: Symbol
|
|
22
|
+
|
|
23
|
+
attr_reader options: String
|
|
24
|
+
|
|
25
|
+
attr_reader action: String?
|
|
26
|
+
|
|
27
|
+
attr_reader location: location
|
|
28
|
+
|
|
29
|
+
# @rbs (id: Integer, state: String, kind: Symbol, token: String?, pattern: String, pattern_kind: Symbol,
|
|
30
|
+
# options: String, action: String?, location: location) -> void
|
|
31
|
+
def initialize: (id: Integer, state: String, kind: Symbol, token: String?, pattern: String, pattern_kind: Symbol, options: String, action: String?, location: location) -> void
|
|
32
|
+
|
|
33
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
34
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Independently versioned lexer contract embedded by Grammar IR v2.
|
|
38
|
+
class Lexer
|
|
39
|
+
attr_reader states: Array[String]
|
|
40
|
+
|
|
41
|
+
attr_reader rules: Array[LexerRule]
|
|
42
|
+
|
|
43
|
+
attr_reader warnings: Array[Hash[Symbol, untyped]]
|
|
44
|
+
|
|
45
|
+
attr_reader schema_version: Integer
|
|
46
|
+
|
|
47
|
+
attr_reader source_provenance: source_provenance?
|
|
48
|
+
|
|
49
|
+
# @rbs (states: Array[String], rules: Array[LexerRule], warnings: Array[Hash[Symbol, untyped]],
|
|
50
|
+
# ?schema_version: Integer, ?source_provenance: source_provenance?) -> void
|
|
51
|
+
def initialize: (states: Array[String], rules: Array[LexerRule], warnings: Array[Hash[Symbol, untyped]], ?schema_version: Integer, ?source_provenance: source_provenance?) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
54
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/migration.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
# Meaning-preserving upgrades between published IR schema versions.
|
|
6
|
+
module Migration
|
|
7
|
+
UNAVAILABLE_V1_METADATA: Array[String]
|
|
8
|
+
|
|
9
|
+
# @rbs (Grammar | Automaton value, ?to: Integer) -> (Grammar | Automaton)
|
|
10
|
+
def self?.to_version: (Grammar | Automaton value, ?to: Integer) -> (Grammar | Automaton)
|
|
11
|
+
|
|
12
|
+
# @rbs (Grammar | Automaton value) -> (Grammar | Automaton)
|
|
13
|
+
def self?.to_v2: (Grammar | Automaton value) -> (Grammar | Automaton)
|
|
14
|
+
|
|
15
|
+
# @rbs (Grammar grammar) -> Grammar
|
|
16
|
+
def self?.migrate_grammar: (Grammar grammar) -> Grammar
|
|
17
|
+
|
|
18
|
+
# @rbs (Grammar grammar) -> Array[GrammarSymbol]
|
|
19
|
+
def self?.migrate_symbols: (Grammar grammar) -> Array[GrammarSymbol]
|
|
20
|
+
|
|
21
|
+
# @rbs (Grammar grammar) -> Array[Production]
|
|
22
|
+
def self?.migrate_productions: (Grammar grammar) -> Array[Production]
|
|
23
|
+
|
|
24
|
+
# @rbs (Grammar grammar, Array[GrammarSymbol] symbols, Array[Production] productions) -> Grammar
|
|
25
|
+
def self?.build_migrated_grammar: (Grammar grammar, Array[GrammarSymbol] symbols, Array[Production] productions) -> Grammar
|
|
26
|
+
|
|
27
|
+
# @rbs (Action? action) -> Action?
|
|
28
|
+
def self?.migrate_action: (Action? action) -> Action?
|
|
29
|
+
|
|
30
|
+
# @rbs (Automaton automaton) -> Automaton
|
|
31
|
+
def self?.migrate_automaton: (Automaton automaton) -> Automaton
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
data/sig/ibex/ir/serialize.rbs
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module IR
|
|
5
5
|
# Stable JSON serialization for versioned pipeline IR.
|
|
6
|
+
# rubocop:disable Metrics/ModuleLength -- explicit versioned fields keep serialization changes auditable.
|
|
6
7
|
module Serialize
|
|
7
8
|
private def validate_version: (untyped data) -> untyped
|
|
8
9
|
|
|
@@ -16,6 +17,10 @@ module Ibex
|
|
|
16
17
|
|
|
17
18
|
private def self.load_automaton: (untyped data) -> untyped
|
|
18
19
|
|
|
20
|
+
private def load_lexer: (untyped data) -> untyped
|
|
21
|
+
|
|
22
|
+
private def self.load_lexer: (untyped data) -> untyped
|
|
23
|
+
|
|
19
24
|
private def load_state: (untyped state, untyped grammar) -> untyped
|
|
20
25
|
|
|
21
26
|
private def self.load_state: (untyped state, untyped grammar) -> untyped
|
|
@@ -28,23 +33,35 @@ module Ibex
|
|
|
28
33
|
|
|
29
34
|
private def self.normalize_action: (untyped value) -> untyped
|
|
30
35
|
|
|
31
|
-
private def load_production: (untyped production) -> untyped
|
|
36
|
+
private def load_production: (untyped production, Integer schema_version) -> untyped
|
|
32
37
|
|
|
33
|
-
private def self.load_production: (untyped production) -> untyped
|
|
38
|
+
private def self.load_production: (untyped production, Integer schema_version) -> untyped
|
|
34
39
|
|
|
35
40
|
private def load_user_code_chunks: (untyped chunks) -> untyped
|
|
36
41
|
|
|
37
42
|
private def self.load_user_code_chunks: (untyped chunks) -> untyped
|
|
38
43
|
|
|
44
|
+
private def load_symbol_metadata: (untyped symbol, String field) -> String?
|
|
45
|
+
|
|
46
|
+
private def self.load_symbol_metadata: (untyped symbol, String field) -> String?
|
|
47
|
+
|
|
48
|
+
private def load_grammar_tests: (untyped tests) -> untyped
|
|
49
|
+
|
|
50
|
+
private def self.load_grammar_tests: (untyped tests) -> untyped
|
|
51
|
+
|
|
52
|
+
private def symbol_source_position: (untyped symbol) -> String
|
|
53
|
+
|
|
54
|
+
private def self.symbol_source_position: (untyped symbol) -> String
|
|
55
|
+
|
|
39
56
|
private def symbolize: (untyped value) -> untyped
|
|
40
57
|
|
|
41
58
|
private def self.symbolize: (untyped value) -> untyped
|
|
42
59
|
|
|
43
|
-
# @rbs (Grammar | Automaton value) -> String
|
|
44
|
-
def self?.dump: (Grammar | Automaton value) -> String
|
|
60
|
+
# @rbs (Grammar | Automaton | Lexer value) -> String
|
|
61
|
+
def self?.dump: (Grammar | Automaton | Lexer value) -> String
|
|
45
62
|
|
|
46
|
-
# @rbs (String source) -> (Grammar | Automaton)
|
|
47
|
-
def self?.load: (String source) -> (Grammar | Automaton)
|
|
63
|
+
# @rbs (String source) -> (Grammar | Automaton | Lexer)
|
|
64
|
+
def self?.load: (String source) -> (Grammar | Automaton | Lexer)
|
|
48
65
|
end
|
|
49
66
|
end
|
|
50
67
|
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Generated from lib/ibex/ir/validator/automaton.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module IR
|
|
5
|
+
module Validator
|
|
6
|
+
# Structural and referential validation for a versioned Automaton IR JSON object.
|
|
7
|
+
# rubocop:disable Metrics/ClassLength -- inline type contracts accompany one cohesive document validator.
|
|
8
|
+
class AutomatonDocument < Base
|
|
9
|
+
ROOT_REQUIRED: Array[String]
|
|
10
|
+
|
|
11
|
+
V2_ROOT_OPTIONAL: Array[String]
|
|
12
|
+
|
|
13
|
+
STATE_REQUIRED: Array[String]
|
|
14
|
+
|
|
15
|
+
ACTION_TYPES: Array[String]
|
|
16
|
+
|
|
17
|
+
RESOLUTION_KINDS: Array[String]
|
|
18
|
+
|
|
19
|
+
@version: Integer
|
|
20
|
+
|
|
21
|
+
@grammar: GrammarDocument
|
|
22
|
+
|
|
23
|
+
@states_by_id: Hash[Integer, Hash[String, untyped]]
|
|
24
|
+
|
|
25
|
+
@data: Hash[String, untyped]
|
|
26
|
+
|
|
27
|
+
# @rbs (Hash[String, untyped] data, ?version: Integer) -> void
|
|
28
|
+
def initialize: (Hash[String, untyped] data, ?version: Integer) -> void
|
|
29
|
+
|
|
30
|
+
# @rbs () -> self
|
|
31
|
+
def validate: () -> self
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
# @rbs () -> void
|
|
36
|
+
def validate_entry_states: () -> void
|
|
37
|
+
|
|
38
|
+
# @rbs () -> void
|
|
39
|
+
def validate_digest: () -> void
|
|
40
|
+
|
|
41
|
+
# @rbs () -> void
|
|
42
|
+
def validate_state_records: () -> void
|
|
43
|
+
|
|
44
|
+
# @rbs () -> void
|
|
45
|
+
def validate_state_contents: () -> void
|
|
46
|
+
|
|
47
|
+
# @rbs (untyped value, String path) -> void
|
|
48
|
+
def validate_items: (untyped value, String path) -> void
|
|
49
|
+
|
|
50
|
+
# @rbs (Integer production_id, untyped dot_value, String path) -> void
|
|
51
|
+
def validate_item_production: (Integer production_id, untyped dot_value, String path) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (untyped value, String path) -> void
|
|
54
|
+
def validate_lookaheads: (untyped value, String path) -> void
|
|
55
|
+
|
|
56
|
+
# @rbs (untyped value, String path) -> void
|
|
57
|
+
def validate_transitions: (untyped value, String path) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (untyped value, String path) -> void
|
|
60
|
+
def validate_actions: (untyped value, String path) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs (untyped value, String path) -> void
|
|
63
|
+
def validate_gotos: (untyped value, String path) -> void
|
|
64
|
+
|
|
65
|
+
# @rbs (untyped value, String path, ?kind: String?) { (untyped, String, Hash[String, untyped]) -> void } -> void
|
|
66
|
+
def symbol_map: (untyped value, String path, ?kind: String?) { (untyped, String, Hash[String, untyped]) -> void } -> void
|
|
67
|
+
|
|
68
|
+
# @rbs (untyped value, String path) -> void
|
|
69
|
+
def validate_state_reference: (untyped value, String path) -> void
|
|
70
|
+
|
|
71
|
+
# @rbs (untyped value, String path, ?nullable: bool) -> void
|
|
72
|
+
def validate_parser_action: (untyped value, String path, ?nullable: bool) -> void
|
|
73
|
+
|
|
74
|
+
# @rbs (untyped value, String path) -> void
|
|
75
|
+
def validate_production_reference: (untyped value, String path) -> void
|
|
76
|
+
|
|
77
|
+
# @rbs (untyped value, String path) -> void
|
|
78
|
+
def validate_conflicts: (untyped value, String path) -> void
|
|
79
|
+
|
|
80
|
+
# @rbs (Hash[String, untyped] conflict, String path) -> void
|
|
81
|
+
def validate_shift_reduce: (Hash[String, untyped] conflict, String path) -> void
|
|
82
|
+
|
|
83
|
+
# @rbs (Hash[String, untyped] conflict, String path) -> void
|
|
84
|
+
def validate_reduce_reduce: (Hash[String, untyped] conflict, String path) -> void
|
|
85
|
+
|
|
86
|
+
# @rbs (Hash[String, untyped] conflict, String path) -> void
|
|
87
|
+
def validate_conflict_entries: (Hash[String, untyped] conflict, String path) -> void
|
|
88
|
+
|
|
89
|
+
# @rbs (untyped value, String path) -> void
|
|
90
|
+
def validate_midrule_origins: (untyped value, String path) -> void
|
|
91
|
+
|
|
92
|
+
# @rbs (untyped value, String path) -> void
|
|
93
|
+
def validate_conflict_symbol: (untyped value, String path) -> void
|
|
94
|
+
|
|
95
|
+
# @rbs (untyped value, String path, ?reductions: Array[Integer]?) -> void
|
|
96
|
+
def validate_resolution: (untyped value, String path, ?reductions: Array[Integer]?) -> void
|
|
97
|
+
|
|
98
|
+
# @rbs () -> void
|
|
99
|
+
def validate_conflict_summary: () -> void
|
|
100
|
+
|
|
101
|
+
# @rbs (Hash[String, untyped] summary, String path) -> void
|
|
102
|
+
def validate_conflict_counts: (Hash[String, untyped] summary, String path) -> void
|
|
103
|
+
|
|
104
|
+
# @rbs (Hash[String, untyped] summary, String path) -> void
|
|
105
|
+
def validate_expectation: (Hash[String, untyped] summary, String path) -> void
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|