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,86 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/direct_lookaheads.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Builds an LR(0) collection and propagates LALR(1) lookaheads directly
|
|
6
|
+
# over item occurrences. Canonical LR(1) states are never materialized.
|
|
7
|
+
class DirectLookaheads
|
|
8
|
+
AUGMENTED_PRODUCTION: Integer
|
|
9
|
+
|
|
10
|
+
EMPTY_PRODUCTIONS: Array[IR::Production]
|
|
11
|
+
|
|
12
|
+
EMPTY_NODES: Array[lookahead_node]
|
|
13
|
+
|
|
14
|
+
@terminal_masks: Array[Integer]
|
|
15
|
+
|
|
16
|
+
@terminal_ids: Array[Integer]
|
|
17
|
+
|
|
18
|
+
@production_item_cores: Array[Array[item_core]]
|
|
19
|
+
|
|
20
|
+
@augmented_item_cores: Array[item_core]
|
|
21
|
+
|
|
22
|
+
@production_rhs: Array[Array[Integer]]
|
|
23
|
+
|
|
24
|
+
@augmented_rhs: Array[Integer]
|
|
25
|
+
|
|
26
|
+
@productions_by_lhs: Hash[Integer, Array[IR::Production]]
|
|
27
|
+
|
|
28
|
+
@sets: Analysis::Sets
|
|
29
|
+
|
|
30
|
+
@grammar: IR::Grammar
|
|
31
|
+
|
|
32
|
+
# @rbs (IR::Grammar grammar, Analysis::Sets sets) -> void
|
|
33
|
+
def initialize: (IR::Grammar grammar, Analysis::Sets sets) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs () -> [Array[packed_items], transitions]
|
|
36
|
+
def build: () -> [ Array[packed_items], transitions ]
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
# @rbs () -> [Array[core_set], transitions]
|
|
41
|
+
def lr0_collection: () -> [ Array[core_set], transitions ]
|
|
42
|
+
|
|
43
|
+
# @rbs (core_set seed) -> core_set
|
|
44
|
+
def closure: (core_set seed) -> core_set
|
|
45
|
+
|
|
46
|
+
# @rbs (core_set items) -> Hash[Integer, core_set]
|
|
47
|
+
def shifted_kernels: (core_set items) -> Hash[Integer, core_set]
|
|
48
|
+
|
|
49
|
+
# @rbs (Array[core_set] states) -> Array[packed_items]
|
|
50
|
+
def empty_lookaheads: (Array[core_set] states) -> Array[packed_items]
|
|
51
|
+
|
|
52
|
+
# @rbs (Array[core_set] states, transitions transitions, Array[packed_items] lookaheads) ->
|
|
53
|
+
# Hash[lookahead_node, Array[lookahead_node]]
|
|
54
|
+
def propagation_graph: (Array[core_set] states, transitions transitions, Array[packed_items] lookaheads) -> Hash[lookahead_node, Array[lookahead_node]]
|
|
55
|
+
|
|
56
|
+
# @rbs (Hash[lookahead_node, Array[lookahead_node]] edges, transitions transitions,
|
|
57
|
+
# Integer state_id, Integer production_id, Integer dot) -> void
|
|
58
|
+
def add_transition_edge: (Hash[lookahead_node, Array[lookahead_node]] edges, transitions transitions, Integer state_id, Integer production_id, Integer dot) -> void
|
|
59
|
+
|
|
60
|
+
# @rbs (Hash[lookahead_node, Array[lookahead_node]] edges, Array[packed_items] lookaheads,
|
|
61
|
+
# Integer state_id, Integer production_id, Integer dot) -> void
|
|
62
|
+
def add_closure_relations: (Hash[lookahead_node, Array[lookahead_node]] edges, Array[packed_items] lookaheads, Integer state_id, Integer production_id, Integer dot) -> void
|
|
63
|
+
|
|
64
|
+
# @rbs (Array[packed_items] lookaheads, Hash[lookahead_node, Array[lookahead_node]] edges) -> void
|
|
65
|
+
def propagate: (Array[packed_items] lookaheads, Hash[lookahead_node, Array[lookahead_node]] edges) -> void
|
|
66
|
+
|
|
67
|
+
# @rbs (Array[packed_items] lookaheads, lookahead_node node) -> Set[Integer]
|
|
68
|
+
def node_set: (Array[packed_items] lookaheads, lookahead_node node) -> Set[Integer]
|
|
69
|
+
|
|
70
|
+
# @rbs (Integer bits) -> Array[Integer]
|
|
71
|
+
def terminal_ids: (Integer bits) -> Array[Integer]
|
|
72
|
+
|
|
73
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
74
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
75
|
+
|
|
76
|
+
# @rbs (Integer production_id, Integer rhs_length) -> Array[item_core]
|
|
77
|
+
def item_cores_for: (Integer production_id, Integer rhs_length) -> Array[item_core]
|
|
78
|
+
|
|
79
|
+
# @rbs (Integer production_id, Integer dot) -> item_core
|
|
80
|
+
def item_core: (Integer production_id, Integer dot) -> item_core
|
|
81
|
+
|
|
82
|
+
# @rbs (core_set items) -> Array[item_core]
|
|
83
|
+
def item_key: (core_set items) -> Array[item_core]
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/ielr_partition.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Deterministically merges compatible canonical LR(1) states and splits
|
|
6
|
+
# partitions until their outgoing transitions are congruent.
|
|
7
|
+
class IELRPartition
|
|
8
|
+
AUGMENTED_PRODUCTION: Integer
|
|
9
|
+
|
|
10
|
+
@contributions: Array[Hash[Integer, Set[Array[untyped]]]]
|
|
11
|
+
|
|
12
|
+
@transitions: transitions
|
|
13
|
+
|
|
14
|
+
@states: Array[item_set]
|
|
15
|
+
|
|
16
|
+
@grammar: IR::Grammar
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::Grammar grammar, Array[item_set] states, transitions transitions) -> void
|
|
19
|
+
def initialize: (IR::Grammar grammar, Array[item_set] states, transitions transitions) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs () -> [Array[packed_items], transitions]
|
|
22
|
+
def build: () -> [ Array[packed_items], transitions ]
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
# @rbs () -> Array[state_partition]
|
|
27
|
+
def initial_partitions: () -> Array[state_partition]
|
|
28
|
+
|
|
29
|
+
# @rbs (Array[Integer] members) -> Array[state_partition]
|
|
30
|
+
def compatible_partitions: (Array[Integer] members) -> Array[state_partition]
|
|
31
|
+
|
|
32
|
+
# A canonical member may gain an action only where it previously had no
|
|
33
|
+
# action. Every nonempty member cell must equal the merged cell.
|
|
34
|
+
# @rbs (state_partition members) -> bool
|
|
35
|
+
def compatible?: (state_partition members) -> bool
|
|
36
|
+
|
|
37
|
+
# @rbs (Array[state_partition] partitions) -> Array[state_partition]
|
|
38
|
+
def refine_transitions: (Array[state_partition] partitions) -> Array[state_partition]
|
|
39
|
+
|
|
40
|
+
# @rbs (Integer state_id, Hash[Integer, Integer] indexes) -> Array[[Integer, Integer]]
|
|
41
|
+
def transition_signature: (Integer state_id, Hash[Integer, Integer] indexes) -> Array[[ Integer, Integer ]]
|
|
42
|
+
|
|
43
|
+
# @rbs (Array[state_partition] partitions) -> Hash[Integer, Integer]
|
|
44
|
+
def partition_indexes: (Array[state_partition] partitions) -> Hash[Integer, Integer]
|
|
45
|
+
|
|
46
|
+
# @rbs (state_partition members) -> packed_items
|
|
47
|
+
def merge_items: (state_partition members) -> packed_items
|
|
48
|
+
|
|
49
|
+
# @rbs (Integer state_id) -> Hash[Integer, Set[Array[untyped]]]
|
|
50
|
+
def action_contributions: (Integer state_id) -> Hash[Integer, Set[Array[untyped]]]
|
|
51
|
+
|
|
52
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
53
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
54
|
+
|
|
55
|
+
# @rbs (item_set items) -> Array[item_core]
|
|
56
|
+
def core_key: (item_set items) -> Array[item_core]
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/on_error_reductions.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Delays syntax-error detection by filling only otherwise erroneous table
|
|
6
|
+
# cells with one uniquely highest-priority declared reduction.
|
|
7
|
+
module OnErrorReductions
|
|
8
|
+
# @rbs (IR::Grammar grammar, Array[IR::AutomatonState] states) -> Array[IR::AutomatonState]
|
|
9
|
+
def self?.apply: (IR::Grammar grammar, Array[IR::AutomatonState] states) -> Array[IR::AutomatonState]
|
|
10
|
+
|
|
11
|
+
# @rbs (IR::Grammar grammar) -> Hash[Integer, Integer]
|
|
12
|
+
def self?.reduction_priorities: (IR::Grammar grammar) -> Hash[Integer, Integer]
|
|
13
|
+
|
|
14
|
+
# @rbs (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities,
|
|
15
|
+
# Array[Integer] terminal_ids) -> IR::AutomatonState
|
|
16
|
+
def apply_state: (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities, Array[Integer] terminal_ids) -> IR::AutomatonState
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities) -> Integer?
|
|
19
|
+
def selected_production: (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities) -> Integer?
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/sig/ibex/lalr.rbs
CHANGED
|
@@ -6,12 +6,18 @@ module Ibex
|
|
|
6
6
|
|
|
7
7
|
type item_core = [ Integer, Integer ]
|
|
8
8
|
|
|
9
|
+
type core_set = Set[item_core]
|
|
10
|
+
|
|
9
11
|
type item_set = Set[lr_item]
|
|
10
12
|
|
|
11
13
|
type packed_items = Hash[item_core, Set[Integer]]
|
|
12
14
|
|
|
13
15
|
type transitions = Array[Hash[Integer, Integer]]
|
|
14
16
|
|
|
17
|
+
type lookahead_node = [ Integer, Integer, Integer ]
|
|
18
|
+
|
|
19
|
+
type state_partition = Array[Integer]
|
|
20
|
+
|
|
15
21
|
type derivation_node = Hash[Symbol, untyped]
|
|
16
22
|
|
|
17
23
|
type search_status = :conflict | :shifted | :accepted
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Generated from lib/ibex/location.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Immutable source range suitable for lexer tokens and parser diagnostics.
|
|
5
|
+
#
|
|
6
|
+
# Coordinates are one-based. Byte offsets are optional, zero-based, and
|
|
7
|
+
# half-open. Keeping both forms lets Unicode-aware lexers report human
|
|
8
|
+
# columns without losing an exact source slice.
|
|
9
|
+
class Location
|
|
10
|
+
attr_reader file: String?
|
|
11
|
+
|
|
12
|
+
attr_reader line: Integer
|
|
13
|
+
|
|
14
|
+
attr_reader column: Integer
|
|
15
|
+
|
|
16
|
+
attr_reader end_line: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader end_column: Integer
|
|
19
|
+
|
|
20
|
+
attr_reader start_byte: Integer?
|
|
21
|
+
|
|
22
|
+
attr_reader end_byte: Integer?
|
|
23
|
+
|
|
24
|
+
attr_reader source_line: String?
|
|
25
|
+
|
|
26
|
+
# @rbs (?file: String?, line: Integer, column: Integer, ?end_line: Integer?,
|
|
27
|
+
# ?end_column: Integer?, ?start_byte: Integer?, ?end_byte: Integer?, ?source_line: String?) -> void
|
|
28
|
+
def initialize: (line: Integer, column: Integer, ?file: String?, ?end_line: Integer?, ?end_column: Integer?, ?start_byte: Integer?, ?end_byte: Integer?, ?source_line: String?) -> void
|
|
29
|
+
|
|
30
|
+
# Return the smallest range covering both locations.
|
|
31
|
+
# @rbs (Location other) -> Location
|
|
32
|
+
def join: (Location other) -> Location
|
|
33
|
+
|
|
34
|
+
# Fold a nonempty collection into one covering range.
|
|
35
|
+
# @rbs (Enumerable[Location] locations) -> Location
|
|
36
|
+
def self.join: (Enumerable[Location] locations) -> Location
|
|
37
|
+
|
|
38
|
+
# @rbs () -> bool
|
|
39
|
+
def empty?: () -> bool
|
|
40
|
+
|
|
41
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
42
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
# @rbs (Symbol name, untyped value) -> Integer
|
|
47
|
+
def positive_coordinate: (Symbol name, untyped value) -> Integer
|
|
48
|
+
|
|
49
|
+
# @rbs (Symbol name, untyped value) -> Integer?
|
|
50
|
+
def optional_offset: (Symbol name, untyped value) -> Integer?
|
|
51
|
+
|
|
52
|
+
# @rbs () -> void
|
|
53
|
+
def validate_order!: () -> void
|
|
54
|
+
|
|
55
|
+
# @rbs (Location left, Location right) -> bool
|
|
56
|
+
def before_or_equal?: (Location left, Location right) -> bool
|
|
57
|
+
|
|
58
|
+
# @rbs (Location left, Location right) -> bool
|
|
59
|
+
def before_or_equal_end?: (Location left, Location right) -> bool
|
|
60
|
+
|
|
61
|
+
# @rbs (Location other) -> Integer?
|
|
62
|
+
def joined_start_byte: (Location other) -> Integer?
|
|
63
|
+
|
|
64
|
+
# @rbs (Location other) -> Integer?
|
|
65
|
+
def joined_end_byte: (Location other) -> Integer?
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/document_handlers.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Applies full-text LSP document notifications to the overlay-backed store.
|
|
6
|
+
module DocumentHandlers
|
|
7
|
+
include RequestSupport
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
# @rbs (untyped raw_params) -> nil
|
|
12
|
+
def did_open: (untyped raw_params) -> nil
|
|
13
|
+
|
|
14
|
+
# @rbs (untyped raw_params) -> nil
|
|
15
|
+
def did_change: (untyped raw_params) -> nil
|
|
16
|
+
|
|
17
|
+
# @rbs (untyped raw_params) -> nil
|
|
18
|
+
def did_save: (untyped raw_params) -> nil
|
|
19
|
+
|
|
20
|
+
# @rbs (untyped raw_params) -> nil
|
|
21
|
+
def did_close: (untyped raw_params) -> nil
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/document_store.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Owns open buffers, parsed snapshots, include closures, and reverse dependencies.
|
|
6
|
+
class DocumentStore
|
|
7
|
+
include DocumentStoreValidation
|
|
8
|
+
|
|
9
|
+
include DocumentStoreDiagnostics
|
|
10
|
+
|
|
11
|
+
type snapshot = { uri: String, path: String, version: Integer?, source: String, open: bool, document: Frontend::SourceDocument? }
|
|
12
|
+
|
|
13
|
+
type publication = { uri: String, ?version: Integer, diagnostics: Array[WorkspaceAnalyzer::lsp_diagnostic] }
|
|
14
|
+
|
|
15
|
+
attr_reader loader: Frontend::SourceLoader
|
|
16
|
+
|
|
17
|
+
attr_reader workspace: Workspace
|
|
18
|
+
|
|
19
|
+
# @rbs (Workspace workspace, Frontend::SourceLoader loader) -> void
|
|
20
|
+
def initialize: (Workspace workspace, Frontend::SourceLoader loader) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (String uri, Integer version, String source) -> Array[publication]
|
|
23
|
+
def open: (String uri, Integer version, String source) -> Array[publication]
|
|
24
|
+
|
|
25
|
+
# @rbs (String uri, Integer version, String source) -> Array[publication]
|
|
26
|
+
def change: (String uri, Integer version, String source) -> Array[publication]
|
|
27
|
+
|
|
28
|
+
# @rbs (String uri, ?source: String?) -> Array[publication]
|
|
29
|
+
def save: (String uri, ?source: String?) -> Array[publication]
|
|
30
|
+
|
|
31
|
+
# Clear the open version first, then replace it with a disk snapshot if one exists.
|
|
32
|
+
# @rbs (String uri) -> Array[publication]
|
|
33
|
+
def close: (String uri) -> Array[publication]
|
|
34
|
+
|
|
35
|
+
# @rbs (String path) -> snapshot?
|
|
36
|
+
def snapshot_for: (String path) -> snapshot?
|
|
37
|
+
|
|
38
|
+
# Preserve the URI spelling used to open a document; closed files use their canonical URI.
|
|
39
|
+
# @rbs (String path) -> String
|
|
40
|
+
def uri_for: (String path) -> String
|
|
41
|
+
|
|
42
|
+
# @rbs (String path) -> Array[String]
|
|
43
|
+
def files_for: (String path) -> Array[String]
|
|
44
|
+
|
|
45
|
+
# @rbs (String path) -> Array[Frontend::Resolution]
|
|
46
|
+
def resolutions_for: (String path) -> Array[Frontend::Resolution]
|
|
47
|
+
|
|
48
|
+
# @rbs (String path) -> Array[String]
|
|
49
|
+
def roots_for: (String path) -> Array[String]
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
# @rbs (String path) -> Array[publication]
|
|
54
|
+
def refresh: (String path) -> Array[publication]
|
|
55
|
+
|
|
56
|
+
# @rbs (String path) -> Array[publication]
|
|
57
|
+
def refresh_dependents: (String path) -> Array[publication]
|
|
58
|
+
|
|
59
|
+
# @rbs (String root) -> void
|
|
60
|
+
def refresh_root: (String root) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs () -> void
|
|
63
|
+
def rebuild_reverse_dependencies: () -> void
|
|
64
|
+
|
|
65
|
+
# @rbs (String path) -> Array[String]
|
|
66
|
+
def affected_roots: (String path) -> Array[String]
|
|
67
|
+
|
|
68
|
+
# @rbs (String path, WorkspaceAnalyzer::analyzed_document analyzed, ?own_diagnostics: bool) -> void
|
|
69
|
+
def update_snapshot: (String path, WorkspaceAnalyzer::analyzed_document analyzed, ?own_diagnostics: bool) -> void
|
|
70
|
+
|
|
71
|
+
# @rbs (String path, Frontend::SourceDocument? document) -> void
|
|
72
|
+
def update_root_membership: (String path, Frontend::SourceDocument? document) -> void
|
|
73
|
+
|
|
74
|
+
# @rbs (Array[String] paths) -> Array[publication]
|
|
75
|
+
def publish_paths: (Array[String] paths) -> Array[publication]
|
|
76
|
+
|
|
77
|
+
# @rbs (String uri, String path, Integer? version, String source, bool open,
|
|
78
|
+
# Frontend::SourceDocument? document) -> snapshot
|
|
79
|
+
def snapshot: (String uri, String path, Integer? version, String source, bool open, Frontend::SourceDocument? document) -> snapshot
|
|
80
|
+
|
|
81
|
+
# @rbs (String path, String uri) -> snapshot
|
|
82
|
+
def open_snapshot: (String path, String uri) -> snapshot
|
|
83
|
+
|
|
84
|
+
# @rbs () -> Array[String]
|
|
85
|
+
def empty_paths: () -> Array[String]
|
|
86
|
+
|
|
87
|
+
# @rbs (String path) -> void
|
|
88
|
+
def remove_path: (String path) -> void
|
|
89
|
+
|
|
90
|
+
# @rbs (String path) -> void
|
|
91
|
+
def remove_root_state: (String path) -> void
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/document_store_diagnostics.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Owns per-document and per-root diagnostic aggregation for DocumentStore.
|
|
6
|
+
module DocumentStoreDiagnostics
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs (String root, Array[String] files, Hash[String, WorkspaceAnalyzer::analyzed_document] analyzed,
|
|
10
|
+
# Array[WorkspaceAnalyzer::lsp_diagnostic] errors) -> void
|
|
11
|
+
def replace_root_diagnostics: (String root, Array[String] files, Hash[String, WorkspaceAnalyzer::analyzed_document] analyzed, Array[WorkspaceAnalyzer::lsp_diagnostic] errors) -> void
|
|
12
|
+
|
|
13
|
+
# @rbs (String path) -> Array[WorkspaceAnalyzer::lsp_diagnostic]
|
|
14
|
+
def aggregated_diagnostics: (String path) -> Array[WorkspaceAnalyzer::lsp_diagnostic]
|
|
15
|
+
|
|
16
|
+
# @rbs () -> Array[WorkspaceAnalyzer::lsp_diagnostic]
|
|
17
|
+
def empty_diagnostics: () -> Array[WorkspaceAnalyzer::lsp_diagnostic]
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/document_store_validation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Validates versions, source bounds, and prospective multi-file workspace edits.
|
|
6
|
+
module DocumentStoreValidation
|
|
7
|
+
# @rbs (Hash[String, String] replacements) -> bool
|
|
8
|
+
def valid_replacements?: (Hash[String, String] replacements) -> bool
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
# @rbs (Integer version) -> void
|
|
13
|
+
def validate_version: (Integer version) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs (String source) -> void
|
|
16
|
+
def validate_source: (String source) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (String path, String source) -> void
|
|
19
|
+
def parse_candidate: (String path, String source) -> void
|
|
20
|
+
|
|
21
|
+
# Resolve disk independently from overlay aliases before removing an open buffer.
|
|
22
|
+
# @rbs (String path, String uri) -> String?
|
|
23
|
+
def disk_path_for_close: (String path, String uri) -> String?
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/initialization_handlers.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Handles initialize/initialized/shutdown/exit lifecycle transitions.
|
|
6
|
+
module InitializationHandlers
|
|
7
|
+
include RequestSupport
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
# @rbs (untyped raw_params) -> Hash[String, untyped]
|
|
12
|
+
def initialize_workspace: (untyped raw_params) -> Hash[String, untyped]
|
|
13
|
+
|
|
14
|
+
# @rbs (untyped params) -> nil
|
|
15
|
+
def initialized_notification: (untyped params) -> nil
|
|
16
|
+
|
|
17
|
+
# @rbs (untyped params) -> nil
|
|
18
|
+
def shutdown_request: (untyped params) -> nil
|
|
19
|
+
|
|
20
|
+
# @rbs (untyped params) -> nil
|
|
21
|
+
def exit_notification: (untyped params) -> nil
|
|
22
|
+
|
|
23
|
+
# @rbs () -> Hash[String, untyped]
|
|
24
|
+
def capabilities: () -> Hash[String, untyped]
|
|
25
|
+
|
|
26
|
+
# @rbs (Hash[String, untyped] params) -> Array[String]
|
|
27
|
+
def initialization_roots: (Hash[String, untyped] params) -> Array[String]
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/navigation_handlers.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Serves symbol navigation, rename, and hover requests.
|
|
6
|
+
module NavigationHandlers
|
|
7
|
+
include RequestSupport
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
# @rbs (untyped raw_params) -> Array[Hash[String, untyped]]
|
|
12
|
+
def definition: (untyped raw_params) -> Array[Hash[String, untyped]]
|
|
13
|
+
|
|
14
|
+
# @rbs (untyped raw_params) -> Array[Hash[String, untyped]]
|
|
15
|
+
def references: (untyped raw_params) -> Array[Hash[String, untyped]]
|
|
16
|
+
|
|
17
|
+
# @rbs (untyped raw_params) -> Hash[String, untyped]?
|
|
18
|
+
def prepare_rename: (untyped raw_params) -> Hash[String, untyped]?
|
|
19
|
+
|
|
20
|
+
# @rbs (untyped raw_params) -> Hash[String, untyped]
|
|
21
|
+
def rename: (untyped raw_params) -> Hash[String, untyped]
|
|
22
|
+
|
|
23
|
+
# @rbs (untyped raw_params) -> Hash[String, untyped]?
|
|
24
|
+
def hover: (untyped raw_params) -> Hash[String, untyped]?
|
|
25
|
+
|
|
26
|
+
# @rbs (untyped raw_params) { (SymbolIndex, String, Hash[String, untyped]) -> untyped } -> untyped
|
|
27
|
+
def with_index: (untyped raw_params) { (SymbolIndex, String, Hash[String, untyped]) -> untyped } -> untyped
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/position_codec.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Converts between frontend byte offsets and zero-based LSP UTF-16 positions.
|
|
6
|
+
class PositionCodec
|
|
7
|
+
# @rbs (String source) -> void
|
|
8
|
+
def initialize: (String source) -> void
|
|
9
|
+
|
|
10
|
+
# @rbs (Integer byte_offset) -> Hash[String, Integer]
|
|
11
|
+
def position: (Integer byte_offset) -> Hash[String, Integer]
|
|
12
|
+
|
|
13
|
+
# @rbs (Hash[String, untyped] position) -> Integer
|
|
14
|
+
def byte_offset: (Hash[String, untyped] position) -> Integer
|
|
15
|
+
|
|
16
|
+
# @rbs (Frontend::SourceSpan span) -> Hash[String, Hash[String, Integer]]
|
|
17
|
+
def range: (Frontend::SourceSpan span) -> Hash[String, Hash[String, Integer]]
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
# @rbs () -> Array[Integer]
|
|
22
|
+
def build_line_starts: () -> Array[Integer]
|
|
23
|
+
|
|
24
|
+
# @rbs (Integer line) -> Integer
|
|
25
|
+
def content_end: (Integer line) -> Integer
|
|
26
|
+
|
|
27
|
+
# @rbs (String text) -> Integer
|
|
28
|
+
def utf16_length: (String text) -> Integer
|
|
29
|
+
|
|
30
|
+
# @rbs (String text, Integer units) -> Integer
|
|
31
|
+
def byte_length_at_utf16: (String text, Integer units) -> Integer
|
|
32
|
+
|
|
33
|
+
# @rbs (Hash[String, untyped] position, String name) -> Integer
|
|
34
|
+
def integer_member: (Hash[String, untyped] position, String name) -> Integer
|
|
35
|
+
|
|
36
|
+
# @rbs (Integer byte_offset) -> void
|
|
37
|
+
def validate_byte_offset: (Integer byte_offset) -> void
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/protocol_error.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Resource bounds shared by transport and open-document validation.
|
|
6
|
+
module Limits
|
|
7
|
+
MAX_HEADER_BYTES: untyped
|
|
8
|
+
|
|
9
|
+
MAX_MESSAGE_BYTES: untyped
|
|
10
|
+
|
|
11
|
+
MAX_DOCUMENT_BYTES: untyped
|
|
12
|
+
|
|
13
|
+
MAX_OUTPUT_BYTES: untyped
|
|
14
|
+
|
|
15
|
+
MAX_ERROR_MESSAGE_CHARACTERS: ::Integer
|
|
16
|
+
|
|
17
|
+
MAX_REQUEST_ID_BYTES: ::Integer
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Bounded protocol and workspace failures with their JSON-RPC error code.
|
|
21
|
+
class ProtocolError < Ibex::Error
|
|
22
|
+
attr_reader code: Integer
|
|
23
|
+
|
|
24
|
+
attr_reader request_id: String | Integer | nil
|
|
25
|
+
|
|
26
|
+
attr_reader fatal: bool
|
|
27
|
+
|
|
28
|
+
# @rbs (String message, ?code: Integer, ?request_id: String | Integer | nil, ?fatal: bool) -> void
|
|
29
|
+
def initialize: (String message, ?code: Integer, ?request_id: String | Integer | nil, ?fatal: bool) -> void
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/request_handlers.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Dispatches the finite LSP surface to focused lifecycle, document, and navigation handlers.
|
|
6
|
+
module RequestHandlers
|
|
7
|
+
include InitializationHandlers
|
|
8
|
+
|
|
9
|
+
include DocumentHandlers
|
|
10
|
+
|
|
11
|
+
include NavigationHandlers
|
|
12
|
+
|
|
13
|
+
include RequestSupport
|
|
14
|
+
|
|
15
|
+
HANDLERS: Hash[String, Symbol]
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
# @rbs (String method, untyped params) -> untyped
|
|
20
|
+
def dispatch: (String method, untyped params) -> untyped
|
|
21
|
+
|
|
22
|
+
# @rbs (untyped params) -> nil
|
|
23
|
+
def cancel_request: (untyped params) -> nil
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/request_support.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Shared publication, state, and parameter validation for request handlers.
|
|
6
|
+
module RequestSupport
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs (Array[DocumentStore::publication] publications) -> void
|
|
10
|
+
def publish: (Array[DocumentStore::publication] publications) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (String uri, Integer version) -> bool
|
|
13
|
+
def stale_publication?: (String uri, Integer version) -> bool
|
|
14
|
+
|
|
15
|
+
# @rbs (untyped value) -> Hash[String, untyped]
|
|
16
|
+
def params_hash: (untyped value) -> Hash[String, untyped]
|
|
17
|
+
|
|
18
|
+
# @rbs (Hash[String, untyped] value, String name) -> Hash[String, untyped]
|
|
19
|
+
def hash_member: (Hash[String, untyped] value, String name) -> Hash[String, untyped]
|
|
20
|
+
|
|
21
|
+
# @rbs (Hash[String, untyped] value, String name) -> String
|
|
22
|
+
def string_member: (Hash[String, untyped] value, String name) -> String
|
|
23
|
+
|
|
24
|
+
# @rbs (Hash[String, untyped] value, String name) -> Integer
|
|
25
|
+
def integer_member: (Hash[String, untyped] value, String name) -> Integer
|
|
26
|
+
|
|
27
|
+
# @rbs (Symbol state) -> void
|
|
28
|
+
def require_state!: (Symbol state) -> void
|
|
29
|
+
|
|
30
|
+
# @rbs () -> void
|
|
31
|
+
def require_running!: () -> void
|
|
32
|
+
|
|
33
|
+
# @rbs () -> DocumentStore
|
|
34
|
+
def store: () -> DocumentStore
|
|
35
|
+
|
|
36
|
+
# @rbs () -> Workspace
|
|
37
|
+
def workspace: () -> Workspace
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|