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,120 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/inline_expansion.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Deterministically substitutes inline-rule productions before LR construction.
|
|
5
|
+
# rubocop:disable Metrics/ModuleLength -- expansion, action plans, and id remapping share one invariant.
|
|
6
|
+
module NormalizeInlineExpansion
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs () -> void
|
|
10
|
+
def expand_inline_rules: () -> void
|
|
11
|
+
|
|
12
|
+
# Explicit heap frames avoid tying grammar depth to the Ruby call stack.
|
|
13
|
+
# The single-definition path reuses its accumulated arrays, so a long
|
|
14
|
+
# acyclic chain remains linear in the size of its final action plan.
|
|
15
|
+
# @rbs (IR::Production production, Hash[Integer, Array[IR::Production]] definitions) ->
|
|
16
|
+
# Array[Hash[Symbol, untyped]]
|
|
17
|
+
def expand_inline_production: (IR::Production production, Hash[Integer, Array[IR::Production]] definitions) -> Array[Hash[Symbol, untyped]]
|
|
18
|
+
|
|
19
|
+
# @rbs (Array[Hash[Symbol, untyped]] frames, Hash[Integer, Array[IR::Production]] definitions,
|
|
20
|
+
# Array[Array[Hash[Symbol, untyped]]] worklist, Array[Hash[Symbol, untyped]] variants,
|
|
21
|
+
# IR::location? location) -> void
|
|
22
|
+
def drain_inline_expansion_frames: (Array[Hash[Symbol, untyped]] frames, Hash[Integer, Array[IR::Production]] definitions, Array[Array[Hash[Symbol, untyped]]] worklist, Array[Hash[Symbol, untyped]] variants, IR::location? location) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs (Array[Hash[Symbol, untyped]] frames, Hash[Integer, Array[IR::Production]] definitions,
|
|
25
|
+
# Array[Array[Hash[Symbol, untyped]]] worklist, Array[Hash[Symbol, untyped]] variants,
|
|
26
|
+
# IR::location? location) -> bool
|
|
27
|
+
def advance_inline_expansion_frame?: (Array[Hash[Symbol, untyped]] frames, Hash[Integer, Array[IR::Production]] definitions, Array[Array[Hash[Symbol, untyped]]] worklist, Array[Hash[Symbol, untyped]] variants, IR::location? location) -> bool
|
|
28
|
+
|
|
29
|
+
# @rbs (Array[Hash[Symbol, untyped]] frames, Array[IR::Production] choices, Integer symbol_id,
|
|
30
|
+
# Array[Array[Hash[Symbol, untyped]]] worklist) -> void
|
|
31
|
+
def schedule_inline_choice_branches: (Array[Hash[Symbol, untyped]] frames, Array[IR::Production] choices, Integer symbol_id, Array[Array[Hash[Symbol, untyped]]] worklist) -> void
|
|
32
|
+
|
|
33
|
+
# @rbs (Array[Hash[Symbol, untyped]] frames, Array[Hash[Symbol, untyped]] variants,
|
|
34
|
+
# Array[Array[Hash[Symbol, untyped]]] worklist, IR::location? location) -> bool
|
|
35
|
+
def complete_inline_expansion_frame?: (Array[Hash[Symbol, untyped]] frames, Array[Hash[Symbol, untyped]] variants, Array[Array[Hash[Symbol, untyped]]] worklist, IR::location? location) -> bool
|
|
36
|
+
|
|
37
|
+
# @rbs (IR::Production production, Integer? symbol_id) -> Hash[Symbol, untyped]
|
|
38
|
+
def inline_expansion_frame: (IR::Production production, Integer? symbol_id) -> Hash[Symbol, untyped]
|
|
39
|
+
|
|
40
|
+
# @rbs (Array[Hash[Symbol, untyped]] frames) -> Array[Hash[Symbol, untyped]]
|
|
41
|
+
def clone_inline_expansion_frames: (Array[Hash[Symbol, untyped]] frames) -> Array[Hash[Symbol, untyped]]
|
|
42
|
+
|
|
43
|
+
# @rbs (IR::Production production) -> Hash[Symbol, untyped]
|
|
44
|
+
def empty_inline_variant: (IR::Production production) -> Hash[Symbol, untyped]
|
|
45
|
+
|
|
46
|
+
# @rbs (Hash[Symbol, untyped] variant, Integer symbol_id) -> Hash[Symbol, untyped]
|
|
47
|
+
def append_inline_symbol: (Hash[Symbol, untyped] variant, Integer symbol_id) -> Hash[Symbol, untyped]
|
|
48
|
+
|
|
49
|
+
# @rbs (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child) -> Hash[Symbol, untyped]
|
|
50
|
+
def combine_inline_variant: (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child) -> Hash[Symbol, untyped]
|
|
51
|
+
|
|
52
|
+
# @rbs (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child,
|
|
53
|
+
# Integer physical_offset, Integer step_offset) -> Array[Hash[Symbol, untyped]]
|
|
54
|
+
def combined_inline_steps: (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child, Integer physical_offset, Integer step_offset) -> Array[Hash[Symbol, untyped]]
|
|
55
|
+
|
|
56
|
+
# @rbs (Array[untyped] left, Array[untyped] right) -> Array[untyped]
|
|
57
|
+
def append_inline_array: (Array[untyped] left, Array[untyped] right) -> Array[untyped]
|
|
58
|
+
|
|
59
|
+
# @rbs (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child) -> Integer?
|
|
60
|
+
def combined_inline_precedence: (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child) -> Integer?
|
|
61
|
+
|
|
62
|
+
# @rbs (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child,
|
|
63
|
+
# Integer physical_offset, Integer step_offset) -> Array[Hash[Symbol, untyped]]
|
|
64
|
+
def remap_inline_steps: (Hash[Symbol, untyped] parent, Hash[Symbol, untyped] child, Integer physical_offset, Integer step_offset) -> Array[Hash[Symbol, untyped]]
|
|
65
|
+
|
|
66
|
+
# @rbs (Array[Symbol | Integer] reference, Integer physical_offset, Integer step_offset) ->
|
|
67
|
+
# Array[Symbol | Integer]
|
|
68
|
+
def remap_inline_reference: (Array[Symbol | Integer] reference, Integer physical_offset, Integer step_offset) -> Array[Symbol | Integer]
|
|
69
|
+
|
|
70
|
+
# @rbs (Hash[Symbol, untyped] variant, IR::Production production) -> Hash[Symbol, untyped]
|
|
71
|
+
def finish_inline_precedence: (Hash[Symbol, untyped] variant, IR::Production production) -> Hash[Symbol, untyped]
|
|
72
|
+
|
|
73
|
+
# @rbs (Hash[Symbol, untyped] variant, IR::Production production, Integer symbol_id) ->
|
|
74
|
+
# Hash[Symbol, untyped]
|
|
75
|
+
def finish_inline_choice: (Hash[Symbol, untyped] variant, IR::Production production, Integer symbol_id) -> Hash[Symbol, untyped]
|
|
76
|
+
|
|
77
|
+
# @rbs (IR::Production production, Array[Array[Symbol | Integer]] inputs, Integer lookahead,
|
|
78
|
+
# Symbol kind, String? rule) -> Hash[Symbol, untyped]
|
|
79
|
+
def inline_action_step: (IR::Production production, Array[Array[Symbol | Integer]] inputs, Integer lookahead, Symbol kind, String? rule) -> Hash[Symbol, untyped]
|
|
80
|
+
|
|
81
|
+
# @rbs (IR::Production production, Hash[Symbol, untyped] variant, Integer id) -> IR::Production
|
|
82
|
+
def composed_inline_production: (IR::Production production, Hash[Symbol, untyped] variant, Integer id) -> IR::Production
|
|
83
|
+
|
|
84
|
+
# @rbs (IR::Production production, Integer physical_length, Array[Hash[Symbol, untyped]]) -> IR::Action
|
|
85
|
+
def composed_inline_action: (IR::Production production, Integer physical_length, Array[Hash[Symbol, untyped]]) -> IR::Action
|
|
86
|
+
|
|
87
|
+
# @rbs (Hash[Symbol, untyped] step, Integer physical_length) -> Hash[Symbol, untyped]
|
|
88
|
+
def composition_plan_step: (Hash[Symbol, untyped] step, Integer physical_length) -> Hash[Symbol, untyped]
|
|
89
|
+
|
|
90
|
+
# @rbs (Array[Symbol | Integer] reference, Integer physical_length) -> Integer
|
|
91
|
+
def resolve_inline_reference: (Array[Symbol | Integer] reference, Integer physical_length) -> Integer
|
|
92
|
+
|
|
93
|
+
# @rbs (Integer rhs_length) -> String
|
|
94
|
+
def inline_implicit_code: (Integer rhs_length) -> String
|
|
95
|
+
|
|
96
|
+
# @rbs (IR::location location) -> IR::source_provenance
|
|
97
|
+
def inline_source_provenance: (IR::location location) -> IR::source_provenance
|
|
98
|
+
|
|
99
|
+
# @rbs (IR::Production production, Hash[Symbol, untyped] variant) -> IR::production_expansion
|
|
100
|
+
def inline_production_expansion: (IR::Production production, Hash[Symbol, untyped] variant) -> IR::production_expansion
|
|
101
|
+
|
|
102
|
+
# @rbs (IR::Production production, Integer id) -> IR::Production
|
|
103
|
+
def copy_inline_production: (IR::Production production, Integer id) -> IR::Production
|
|
104
|
+
|
|
105
|
+
# @rbs (IR::Production production) -> void
|
|
106
|
+
def charge_inline_expansion!: (IR::Production production) -> void
|
|
107
|
+
|
|
108
|
+
# @rbs (Integer count, IR::location? location) -> void
|
|
109
|
+
def enforce_inline_choice_limit!: (Integer count, IR::location? location) -> void
|
|
110
|
+
|
|
111
|
+
# @rbs (Array[IR::Production] productions) -> void
|
|
112
|
+
def rebuild_inline_symbols: (Array[IR::Production] productions) -> void
|
|
113
|
+
|
|
114
|
+
# @rbs (IR::GrammarSymbol definition, Integer id) -> IR::GrammarSymbol
|
|
115
|
+
def remap_inline_symbol: (IR::GrammarSymbol definition, Integer id) -> IR::GrammarSymbol
|
|
116
|
+
|
|
117
|
+
# @rbs (IR::Production production, Integer id, Hash[Integer, Integer] id_map) -> IR::Production
|
|
118
|
+
def remap_inline_production: (IR::Production production, Integer id, Hash[Integer, Integer] id_map) -> IR::Production
|
|
119
|
+
end
|
|
120
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/inline_validation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Static validation and collection for rules eliminated by inline expansion.
|
|
5
|
+
module NormalizeInlineValidation
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs () -> void
|
|
9
|
+
def gather_inline_rules: () -> void
|
|
10
|
+
|
|
11
|
+
# @rbs () -> void
|
|
12
|
+
def validate_inline_terminal_collisions: () -> void
|
|
13
|
+
|
|
14
|
+
# @rbs () -> void
|
|
15
|
+
def validate_inline_start: () -> void
|
|
16
|
+
|
|
17
|
+
# @rbs () -> void
|
|
18
|
+
def validate_inline_cycles: () -> void
|
|
19
|
+
|
|
20
|
+
# A formal is live for cycle analysis only when substituting its actual can
|
|
21
|
+
# introduce a grammar reference. Calls propagate liveness through their
|
|
22
|
+
# callee's live positions until the finite formal set reaches a fixed point.
|
|
23
|
+
# @rbs () -> Hash[String, Set[Integer]]
|
|
24
|
+
def parameter_formal_liveness: () -> Hash[String, Set[Integer]]
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::item item, Array[String] formals,
|
|
27
|
+
# Hash[String, Set[Integer]] liveness, Set[Integer] found) -> void
|
|
28
|
+
def collect_live_formals: (Frontend::AST::item item, Array[String] formals, Hash[String, Set[Integer]] liveness, Set[Integer] found) -> void
|
|
29
|
+
|
|
30
|
+
# Structural AST traversal necessarily branches once for each public item shape.
|
|
31
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
32
|
+
# @rbs (Frontend::AST::item item, Array[String] formals, Set[String] names,
|
|
33
|
+
# Array[[String, Frontend::Location]] edges, Hash[String, Set[Integer]] liveness) -> void
|
|
34
|
+
def collect_inline_edges: (Frontend::AST::item item, Array[String] formals, Set[String] names, Array[[ String, Frontend::Location ]] edges, Hash[String, Set[Integer]] liveness) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs (String name, Hash[String, Array[[String, Frontend::Location]]] graph,
|
|
37
|
+
# Hash[String, Symbol] states) -> void
|
|
38
|
+
def visit_inline_cycle: (String name, Hash[String, Array[[ String, Frontend::Location ]]] graph, Hash[String, Symbol] states) -> void
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/lexer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Lexer declaration normalization and static safety checks.
|
|
5
|
+
module NormalizeLexer
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs () -> IR::Lexer?
|
|
9
|
+
def normalize_lexer: () -> IR::Lexer?
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::LexerState definition, Array[String] states, Array[IR::LexerRule] rules,
|
|
12
|
+
# Array[Hash[Symbol, untyped]] warnings) -> void
|
|
13
|
+
def normalize_lexer_state: (Frontend::AST::LexerState definition, Array[String] states, Array[IR::LexerRule] rules, Array[Hash[Symbol, untyped]] warnings) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs (Frontend::AST::LexerRule definition, String state, Integer id,
|
|
16
|
+
# Array[Hash[Symbol, untyped]] warnings) -> IR::LexerRule
|
|
17
|
+
def normalize_lexer_rule: (Frontend::AST::LexerRule definition, String state, Integer id, Array[Hash[Symbol, untyped]] warnings) -> IR::LexerRule
|
|
18
|
+
|
|
19
|
+
# @rbs (Frontend::AST::LexerRule definition) -> void
|
|
20
|
+
def validate_lexer_token: (Frontend::AST::LexerRule definition) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (Frontend::AST::LexerRule definition) -> void
|
|
23
|
+
def validate_lexer_action: (Frontend::AST::LexerRule definition) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (Frontend::AST::LexerRule definition) -> [String, String]
|
|
26
|
+
def normalize_lexer_pattern: (Frontend::AST::LexerRule definition) -> [ String, String ]
|
|
27
|
+
|
|
28
|
+
# @rbs (String raw, Frontend::Location location) -> String
|
|
29
|
+
def decode_lexer_literal: (String raw, Frontend::Location location) -> String
|
|
30
|
+
|
|
31
|
+
# @rbs (Frontend::AST::LexerRule definition, String source, String options) -> void
|
|
32
|
+
def validate_lexer_regexp: (Frontend::AST::LexerRule definition, String source, String options) -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (String source) -> bool
|
|
35
|
+
def risky_lexer_pattern?: (String source) -> bool
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/named_references.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Named-reference collection and validation shared by ordinary and parameterized items.
|
|
5
|
+
module NormalizeNamedReferences
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Group group) -> void
|
|
9
|
+
def reject_group_named_references: (Frontend::AST::Group group) -> void
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
12
|
+
def named_reference_in: (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
13
|
+
|
|
14
|
+
# @rbs (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
15
|
+
def add_named_reference: (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
18
|
+
def unwrap_reference: (Frontend::AST::item item) -> (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference)?
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/nodes.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Validation and normalization for generated AST node declarations.
|
|
5
|
+
module NormalizeNodes
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Alternative alternative, Array[String] rhs) -> IR::node_annotation?
|
|
9
|
+
def normalize_node_annotation: (Frontend::AST::Alternative alternative, Array[String] rhs) -> IR::node_annotation?
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::NodeAnnotation annotation, Array[String] rhs) -> void
|
|
12
|
+
def validate_node_fields: (Frontend::AST::NodeAnnotation annotation, Array[String] rhs) -> void
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_ebnf_lowering.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Resumable EBNF lowering used inside specialized parameter alternatives.
|
|
5
|
+
module NormalizeParameterEbnfLowering
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Hash[Symbol, untyped] frame,
|
|
9
|
+
# Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
10
|
+
def lower_parameter_suffix: (Hash[Symbol, untyped] frame, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (Hash[Symbol, untyped] frame,
|
|
13
|
+
# Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
14
|
+
def finish_parameter_suffix: (Hash[Symbol, untyped] frame, Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs (Hash[Symbol, untyped] frame, Frontend::AST::SeparatedList item) -> void
|
|
17
|
+
def lower_parameter_separated_list: (Hash[Symbol, untyped] frame, Frontend::AST::SeparatedList item) -> void
|
|
18
|
+
|
|
19
|
+
# @rbs (Hash[Symbol, untyped] frame, Frontend::AST::SeparatedList item) -> void
|
|
20
|
+
def finish_parameter_separated_list: (Hash[Symbol, untyped] frame, Frontend::AST::SeparatedList item) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (Hash[Symbol, untyped] frame, Frontend::AST::Group item) -> void
|
|
23
|
+
def lower_parameter_group: (Hash[Symbol, untyped] frame, Frontend::AST::Group item) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (Hash[Symbol, untyped] frame, String helper, Frontend::AST::Group item,
|
|
26
|
+
# Array[Frontend::AST::item] alternative) -> void
|
|
27
|
+
def start_parameter_group_alternative: (Hash[Symbol, untyped] frame, String helper, Frontend::AST::Group item, Array[Frontend::AST::item] alternative) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Hash[Symbol, untyped] frame, String helper, Frontend::AST::Group item, Integer length) -> void
|
|
30
|
+
def finish_parameter_group_alternative: (Hash[Symbol, untyped] frame, String helper, Frontend::AST::Group item, Integer length) -> void
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_lowering.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Resumable, source-ordered lowering for specialized parameter alternatives.
|
|
5
|
+
module NormalizeParameterLowering
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Hash[Symbol, untyped] frame) -> void
|
|
9
|
+
def advance_parameter_alternative: (Hash[Symbol, untyped] frame) -> void
|
|
10
|
+
|
|
11
|
+
# @rbs (Hash[Symbol, untyped] frame) { () -> void } -> void
|
|
12
|
+
def with_parameter_frame_context: (Hash[Symbol, untyped] frame) { () -> void } -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (Hash[Symbol, untyped] frame) -> bool
|
|
15
|
+
def parameter_items_remaining?: (Hash[Symbol, untyped] frame) -> bool
|
|
16
|
+
|
|
17
|
+
# @rbs (Hash[Symbol, untyped] frame) -> void
|
|
18
|
+
def start_parameter_item: (Hash[Symbol, untyped] frame) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs (Hash[Symbol, untyped] frame, Array[untyped] operation) -> void
|
|
21
|
+
def process_parameter_operation: (Hash[Symbol, untyped] frame, Array[untyped] operation) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (Hash[Symbol, untyped] frame, Frontend::AST::item item) -> void
|
|
24
|
+
def lower_parameter_item: (Hash[Symbol, untyped] frame, Frontend::AST::item item) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (Hash[Symbol, untyped] frame, Frontend::AST::ParameterizedReference item) -> void
|
|
27
|
+
def lower_parameter_call: (Hash[Symbol, untyped] frame, Frontend::AST::ParameterizedReference item) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Hash[Symbol, untyped] frame, Frontend::AST::item item) -> void
|
|
30
|
+
def finish_parameter_item: (Hash[Symbol, untyped] frame, Frontend::AST::item item) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Hash[Symbol, untyped] frame) -> void
|
|
33
|
+
def finish_parameter_alternative: (Hash[Symbol, untyped] frame) -> void
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_substitution.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Structural, sharing-preserving substitution for parameterized user rules.
|
|
5
|
+
module NormalizeParameterSubstitution
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) ->
|
|
9
|
+
# Frontend::AST::Alternative
|
|
10
|
+
def substitute_parameter_alternative: (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Alternative
|
|
11
|
+
|
|
12
|
+
# @rbs (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> String?
|
|
13
|
+
def substitute_parameter_precedence: (Frontend::AST::Alternative alternative, Hash[String, Frontend::AST::item] bindings) -> String?
|
|
14
|
+
|
|
15
|
+
# @rbs (Frontend::AST::item item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
16
|
+
def substitute_parameter_item: (Frontend::AST::item item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
17
|
+
|
|
18
|
+
# @rbs (Frontend::AST::SymbolReference formal, Frontend::AST::item argument) -> Frontend::AST::item
|
|
19
|
+
def substitute_formal_reference: (Frontend::AST::SymbolReference formal, Frontend::AST::item argument) -> Frontend::AST::item
|
|
20
|
+
|
|
21
|
+
# @rbs (Frontend::AST::item item, ?Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
22
|
+
def clone_parameter_item: (Frontend::AST::item item, ?Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
23
|
+
|
|
24
|
+
# @rbs (Frontend::AST::SymbolReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
25
|
+
def clone_parameter_symbol: (Frontend::AST::SymbolReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
26
|
+
|
|
27
|
+
# @rbs (Frontend::AST::ParameterizedReference item, Hash[String, Frontend::AST::item] bindings) ->
|
|
28
|
+
# Frontend::AST::ParameterizedReference
|
|
29
|
+
def clone_parameter_call: (Frontend::AST::ParameterizedReference item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::ParameterizedReference
|
|
30
|
+
|
|
31
|
+
# @rbs (Frontend::AST::Group item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Group
|
|
32
|
+
def clone_parameter_group: (Frontend::AST::Group item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::Group
|
|
33
|
+
|
|
34
|
+
# @rbs (Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item,
|
|
35
|
+
# Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
36
|
+
def clone_parameter_suffix: (Frontend::AST::Optional | Frontend::AST::Star | Frontend::AST::Plus item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::item
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::AST::SeparatedList item, Hash[String, Frontend::AST::item] bindings) ->
|
|
39
|
+
# Frontend::AST::SeparatedList
|
|
40
|
+
def clone_parameter_separated_list: (Frontend::AST::SeparatedList item, Hash[String, Frontend::AST::item] bindings) -> Frontend::AST::SeparatedList
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameter_validation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Static validation and collection of parameterized user rule definitions.
|
|
5
|
+
module NormalizeParameterValidation
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs () -> void
|
|
9
|
+
def gather_parameter_templates: () -> void
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::Rule rule, Hash[String, Frontend::AST::Rule] plain_rules) -> void
|
|
12
|
+
def gather_parameterized_rule: (Frontend::AST::Rule rule, Hash[String, Frontend::AST::Rule] plain_rules) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (Frontend::AST::Rule rule) -> void
|
|
15
|
+
def validate_parameter_formals: (Frontend::AST::Rule rule) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::AST::Rule rule) -> bot
|
|
18
|
+
def reject_mixed_parameterized_rule: (Frontend::AST::Rule rule) -> bot
|
|
19
|
+
|
|
20
|
+
# @rbs () -> void
|
|
21
|
+
def validate_parameter_terminal_collisions: () -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (Frontend::AST::Rule rule) -> void
|
|
24
|
+
def validate_parameter_references: (Frontend::AST::Rule rule) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::item item, Array[String] formals, inside_argument: bool) -> void
|
|
27
|
+
def validate_parameter_item: (Frontend::AST::item item, Array[String] formals, inside_argument: bool) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Frontend::AST::ParameterizedReference item, Array[String] formals, inside_argument: bool) -> void
|
|
30
|
+
def validate_parameterized_item: (Frontend::AST::ParameterizedReference item, Array[String] formals, inside_argument: bool) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item) -> bot
|
|
33
|
+
def reject_argument_named_reference: (Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item) -> bot
|
|
34
|
+
|
|
35
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> void
|
|
36
|
+
def validate_parameter_call: (Frontend::AST::ParameterizedReference reference) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::AST::Rule rule) -> bool
|
|
39
|
+
def parameterized_rule?: (Frontend::AST::Rule rule) -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs (String name) -> bool
|
|
42
|
+
def parameter_template?: (String name) -> bool
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/parameters.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Iterative, hygienic specialization of validated parameterized user rules.
|
|
5
|
+
module NormalizeParameters
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> String
|
|
9
|
+
def specialize_parameterized_reference: (Frontend::AST::ParameterizedReference reference) -> String
|
|
10
|
+
|
|
11
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> [String, bool]
|
|
12
|
+
def schedule_parameter_specialization: (Frontend::AST::ParameterizedReference reference) -> [ String, bool ]
|
|
13
|
+
|
|
14
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> void
|
|
15
|
+
def enforce_parameter_limits!: (Frontend::AST::ParameterizedReference reference) -> void
|
|
16
|
+
|
|
17
|
+
# A constructor-growing recursive call can create infinitely many distinct
|
|
18
|
+
# specializations. Calls whose arguments shrink or merely change are
|
|
19
|
+
# allowed; they may reach a memoized fixed point after finite expansion.
|
|
20
|
+
# @rbs (Array[Frontend::AST::item] candidates, Array[Frontend::AST::item] ancestors) -> bool
|
|
21
|
+
def growing_parameter_arguments?: (Array[Frontend::AST::item] candidates, Array[Frontend::AST::item] ancestors) -> bool
|
|
22
|
+
|
|
23
|
+
# @rbs (Frontend::AST::item candidate, String target) -> bool
|
|
24
|
+
def parameter_argument_contains?: (Frontend::AST::item candidate, String target) -> bool
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::ParameterizedReference reference) -> String
|
|
27
|
+
def new_parameter_helper: (Frontend::AST::ParameterizedReference reference) -> String
|
|
28
|
+
|
|
29
|
+
# @rbs (Frontend::AST::ParameterizedReference reference, String helper,
|
|
30
|
+
# Array[Frontend::AST::item] arguments, Array[String] rendered_arguments) ->
|
|
31
|
+
# Hash[Symbol, untyped]
|
|
32
|
+
def parameter_frame: (Frontend::AST::ParameterizedReference reference, String helper, Array[Frontend::AST::item] arguments, Array[String] rendered_arguments) -> Hash[Symbol, untyped]
|
|
33
|
+
|
|
34
|
+
# @rbs () -> void
|
|
35
|
+
def drain_parameter_worklist: () -> void
|
|
36
|
+
|
|
37
|
+
# @rbs (Hash[Symbol, untyped] frame) -> bool
|
|
38
|
+
def prepare_parameter_alternative?: (Hash[Symbol, untyped] frame) -> bool
|
|
39
|
+
|
|
40
|
+
# @rbs (Hash[Symbol, untyped] frame, Frontend::AST::Rule template, Integer index) -> void
|
|
41
|
+
def prepare_parameter_alternative_entry: (Hash[Symbol, untyped] frame, Frontend::AST::Rule template, Integer index) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (Hash[Symbol, untyped] frame) -> void
|
|
44
|
+
def clear_parameter_alternative: (Hash[Symbol, untyped] frame) -> void
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated from lib/ibex/normalize/recovery_declarations.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Recovery declaration extraction and post-interning symbol validation.
|
|
5
|
+
module NormalizeRecoveryDeclarations
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# @rbs (Frontend::AST::Start | Frontend::AST::Recovery | Frontend::AST::OnErrorReduce |
|
|
9
|
+
# Frontend::AST::GrammarTest declaration) -> void
|
|
10
|
+
def read_parser_control_declaration: (Frontend::AST::Start | Frontend::AST::Recovery | Frontend::AST::OnErrorReduce | Frontend::AST::GrammarTest declaration) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (Frontend::AST::GrammarTest declaration) -> void
|
|
13
|
+
def read_grammar_test: (Frontend::AST::GrammarTest declaration) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs (Frontend::AST::Recovery declaration) -> void
|
|
16
|
+
def read_recovery_declaration: (Frontend::AST::Recovery declaration) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (Frontend::AST::OnErrorReduce declaration) -> void
|
|
19
|
+
def read_on_error_reduce_declaration: (Frontend::AST::OnErrorReduce declaration) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs () -> void
|
|
22
|
+
def validate_recovery_declarations: () -> void
|
|
23
|
+
end
|
|
24
|
+
end
|
data/sig/ibex/normalize.rbs
CHANGED
|
@@ -5,52 +5,141 @@ module Ibex
|
|
|
5
5
|
class Normalizer
|
|
6
6
|
include NormalizeDeclarations
|
|
7
7
|
|
|
8
|
+
include NormalizeLexer
|
|
9
|
+
|
|
10
|
+
include NormalizeRecoveryDeclarations
|
|
11
|
+
|
|
12
|
+
include NormalizeParameterValidation
|
|
13
|
+
|
|
14
|
+
include NormalizeInlineValidation
|
|
15
|
+
|
|
16
|
+
include NormalizeParameterSubstitution
|
|
17
|
+
|
|
18
|
+
include NormalizeParameterEbnfLowering
|
|
19
|
+
|
|
20
|
+
include NormalizeParameterLowering
|
|
21
|
+
|
|
22
|
+
include NormalizeParameters
|
|
23
|
+
|
|
24
|
+
include NormalizeNamedReferences
|
|
25
|
+
|
|
26
|
+
include NormalizeNodes
|
|
27
|
+
|
|
8
28
|
include NormalizeExpander
|
|
9
29
|
|
|
30
|
+
include NormalizeInlineExpansion
|
|
31
|
+
|
|
10
32
|
include NormalizeDiagnostics
|
|
11
33
|
|
|
12
34
|
RESERVED_NAMES: Array[String]
|
|
13
35
|
|
|
14
|
-
|
|
36
|
+
RUBY_KEYWORDS: Array[String]
|
|
15
37
|
|
|
16
|
-
|
|
38
|
+
DEFAULT_MAX_PARAMETER_SPECIALIZATIONS: ::Integer
|
|
17
39
|
|
|
18
|
-
|
|
40
|
+
DEFAULT_MAX_INLINE_EXPANSIONS: ::Integer
|
|
19
41
|
|
|
20
|
-
@
|
|
42
|
+
@explicit_starts: Array[String]?
|
|
21
43
|
|
|
22
|
-
@
|
|
44
|
+
@lexer_declaration: Frontend::AST::Lexer?
|
|
23
45
|
|
|
24
|
-
@
|
|
46
|
+
@grammar_tests: Array[IR::grammar_test]
|
|
25
47
|
|
|
26
|
-
@
|
|
48
|
+
@on_error_reduce_groups: Array[Array[String]]
|
|
27
49
|
|
|
28
|
-
@
|
|
50
|
+
@recovery_sync_tokens: Array[String]
|
|
29
51
|
|
|
30
|
-
@
|
|
52
|
+
@value_printers: Hash[String, IR::value_printer]
|
|
31
53
|
|
|
32
|
-
@
|
|
54
|
+
@parser_parameters: Array[IR::parser_parameter]
|
|
33
55
|
|
|
34
|
-
@
|
|
56
|
+
@conversions: Hash[String, String]
|
|
57
|
+
|
|
58
|
+
@expected_rr_conflicts: Integer?
|
|
35
59
|
|
|
36
60
|
@expected_conflicts: Integer
|
|
37
61
|
|
|
38
|
-
@
|
|
62
|
+
@options: IR::grammar_options
|
|
39
63
|
|
|
40
|
-
@
|
|
64
|
+
@semantic_type_locations: Hash[String, IR::location]
|
|
41
65
|
|
|
42
|
-
@
|
|
66
|
+
@semantic_types: Hash[String, String]
|
|
67
|
+
|
|
68
|
+
@display_name_locations: Hash[String, IR::location]
|
|
69
|
+
|
|
70
|
+
@display_names: Hash[String, String]
|
|
71
|
+
|
|
72
|
+
@precedence_locations: Hash[String, IR::location]
|
|
73
|
+
|
|
74
|
+
@precedence: Hash[String, IR::precedence]
|
|
75
|
+
|
|
76
|
+
@node_shapes: Hash[String, Array[String]]
|
|
77
|
+
|
|
78
|
+
@inline_expansion_count: Integer
|
|
79
|
+
|
|
80
|
+
@max_inline_expansions: Integer
|
|
81
|
+
|
|
82
|
+
@inline_rule_by_symbol: Hash[Integer, String]
|
|
83
|
+
|
|
84
|
+
@inline_symbol_ids: Set[Integer]
|
|
85
|
+
|
|
86
|
+
@inline_rule_names: Set[String]
|
|
87
|
+
|
|
88
|
+
@rule_documentation: Hash[String, String]
|
|
89
|
+
|
|
90
|
+
@current_parameter_expansion: IR::parameter_expansion?
|
|
91
|
+
|
|
92
|
+
@max_parameter_specializations: Integer
|
|
93
|
+
|
|
94
|
+
@parameter_worklist_active: bool
|
|
95
|
+
|
|
96
|
+
@parameter_worklist: Array[Hash[Symbol, untyped]]
|
|
97
|
+
|
|
98
|
+
@parameter_specializations: Hash[[ String, Array[String] ], String]
|
|
99
|
+
|
|
100
|
+
@parameter_formals: Hash[String, Array[String]]
|
|
101
|
+
|
|
102
|
+
@parameter_templates: Hash[String, Array[Frontend::AST::Rule]]
|
|
43
103
|
|
|
44
104
|
@start_location: Frontend::Location?
|
|
45
105
|
|
|
46
|
-
|
|
47
|
-
|
|
106
|
+
@start_name: String
|
|
107
|
+
|
|
108
|
+
@start_names: Array[String]
|
|
109
|
+
|
|
110
|
+
@declared_tokens: Hash[String, IR::location]
|
|
111
|
+
|
|
112
|
+
@helper_sequence: Integer
|
|
113
|
+
|
|
114
|
+
@warnings: Array[IR::grammar_warning]
|
|
115
|
+
|
|
116
|
+
@productions: Array[IR::Production]
|
|
117
|
+
|
|
118
|
+
@symbols_by_name: Hash[String, IR::GrammarSymbol]
|
|
119
|
+
|
|
120
|
+
@symbols: Array[IR::GrammarSymbol]
|
|
121
|
+
|
|
122
|
+
@mode: IR::grammar_mode
|
|
123
|
+
|
|
124
|
+
@current_include_chain: Array[IR::source_provenance]
|
|
125
|
+
|
|
126
|
+
@resolution: Frontend::Resolution?
|
|
127
|
+
|
|
128
|
+
@ast: Frontend::AST::Root
|
|
129
|
+
|
|
130
|
+
# @rbs (Frontend::AST::Root | Frontend::AST::Fragment | Frontend::Resolution input,
|
|
131
|
+
# ?mode: Symbol | String, ?max_parameter_specializations: Integer,
|
|
132
|
+
# ?max_inline_expansions: Integer) -> void
|
|
133
|
+
def initialize: (Frontend::AST::Root | Frontend::AST::Fragment | Frontend::Resolution input, ?mode: Symbol | String, ?max_parameter_specializations: Integer, ?max_inline_expansions: Integer) -> void
|
|
48
134
|
|
|
49
135
|
# @rbs () -> IR::Grammar
|
|
50
136
|
def normalize: () -> IR::Grammar
|
|
51
137
|
|
|
52
138
|
private
|
|
53
139
|
|
|
140
|
+
# @rbs (Symbol name, untyped value) -> void
|
|
141
|
+
def validate_positive_limit!: (Symbol name, untyped value) -> void
|
|
142
|
+
|
|
54
143
|
# @rbs () -> void
|
|
55
144
|
def intern_reserved_symbols: () -> void
|
|
56
145
|
|
|
@@ -60,8 +149,21 @@ module Ibex
|
|
|
60
149
|
# @rbs () -> void
|
|
61
150
|
def intern_user_nonterminals: () -> void
|
|
62
151
|
|
|
63
|
-
# @rbs (
|
|
64
|
-
def
|
|
152
|
+
# @rbs () -> Array[String]
|
|
153
|
+
def normalized_start_names: () -> Array[String]
|
|
154
|
+
|
|
155
|
+
# @rbs (Frontend::AST::Rule rule) -> bool
|
|
156
|
+
def start_rule_candidate?: (Frontend::AST::Rule rule) -> bool
|
|
157
|
+
|
|
158
|
+
# @rbs (Frontend::AST::Rule rule) -> void
|
|
159
|
+
def intern_user_nonterminal: (Frontend::AST::Rule rule) -> void
|
|
160
|
+
|
|
161
|
+
# @rbs () -> Hash[String, String]
|
|
162
|
+
def validated_rule_documentation: () -> Hash[String, String]
|
|
163
|
+
|
|
164
|
+
# @rbs (String name, Symbol kind, ?reserved: bool, ?location: IR::location?,
|
|
165
|
+
# ?documentation: String?, ?metadata_name: String?) -> IR::GrammarSymbol
|
|
166
|
+
def intern: (String name, Symbol kind, ?reserved: bool, ?location: IR::location?, ?documentation: String?, ?metadata_name: String?) -> IR::GrammarSymbol
|
|
65
167
|
|
|
66
168
|
# @rbs (String name) -> IR::GrammarSymbol?
|
|
67
169
|
def symbol: (String name) -> IR::GrammarSymbol?
|
|
@@ -92,5 +194,8 @@ module Ibex
|
|
|
92
194
|
|
|
93
195
|
# @rbs (IR::location? location, String message) -> bot
|
|
94
196
|
def fail_hash: (IR::location? location, String message) -> bot
|
|
197
|
+
|
|
198
|
+
# @rbs () -> IR::production_expansion?
|
|
199
|
+
def resolved_expansion: () -> IR::production_expansion?
|
|
95
200
|
end
|
|
96
201
|
end
|