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,55 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/server.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Coordinates JSON-RPC lifecycle, request responses, and protocol-safe logging.
|
|
6
|
+
class Server
|
|
7
|
+
include RequestHandlers
|
|
8
|
+
|
|
9
|
+
REQUEST_METHODS: Array[String]
|
|
10
|
+
|
|
11
|
+
NOTIFICATION_METHODS: Array[String]
|
|
12
|
+
|
|
13
|
+
# @rbs (stdin: untyped, stdout: untyped, stderr: untyped) -> void
|
|
14
|
+
def initialize: (stdin: untyped, stdout: untyped, stderr: untyped) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs () -> Integer
|
|
17
|
+
def run: () -> Integer
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
# @rbs () -> Hash[String, untyped]?
|
|
22
|
+
def read_message: () -> Hash[String, untyped]?
|
|
23
|
+
|
|
24
|
+
# @rbs (Hash[String, untyped] message) -> void
|
|
25
|
+
def process_message: (Hash[String, untyped] message) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs (Hash[String, untyped] message) -> (String | Integer)?
|
|
28
|
+
def safe_request_id: (Hash[String, untyped] message) -> (String | Integer)?
|
|
29
|
+
|
|
30
|
+
# @rbs (Hash[String, untyped] message) -> bool
|
|
31
|
+
def notification_envelope?: (Hash[String, untyped] message) -> bool
|
|
32
|
+
|
|
33
|
+
# @rbs (String method, bool request) -> void
|
|
34
|
+
def validate_message_kind!: (String method, bool request) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs (Hash[String, untyped] message) -> (String | Integer)?
|
|
37
|
+
def validate_envelope: (Hash[String, untyped] message) -> (String | Integer)?
|
|
38
|
+
|
|
39
|
+
# @rbs (untyped value) -> bool
|
|
40
|
+
def valid_request_id?: (untyped value) -> bool
|
|
41
|
+
|
|
42
|
+
# @rbs (String method) -> void
|
|
43
|
+
def validate_lifecycle!: (String method) -> void
|
|
44
|
+
|
|
45
|
+
# @rbs (String | Integer request_id, untyped result) -> void
|
|
46
|
+
def send_result: (String | Integer request_id, untyped result) -> void
|
|
47
|
+
|
|
48
|
+
# @rbs (String | Integer | nil request_id, ProtocolError error) -> void
|
|
49
|
+
def send_error: (String | Integer | nil request_id, ProtocolError error) -> void
|
|
50
|
+
|
|
51
|
+
# @rbs (String message) -> void
|
|
52
|
+
def log: (String message) -> void
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/symbol_index.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Answers source navigation and guarded workspace rename operations.
|
|
6
|
+
class SymbolIndex
|
|
7
|
+
IDENTIFIER: Regexp
|
|
8
|
+
|
|
9
|
+
RESERVED: Array[String]
|
|
10
|
+
|
|
11
|
+
# @rbs (DocumentStore store, String path) -> void
|
|
12
|
+
def initialize: (DocumentStore store, String path) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (String path, Hash[String, untyped] position) -> Array[Hash[String, untyped]]
|
|
15
|
+
def definition: (String path, Hash[String, untyped] position) -> Array[Hash[String, untyped]]
|
|
16
|
+
|
|
17
|
+
# @rbs (String path, Hash[String, untyped] position, ?include_declaration: bool) ->
|
|
18
|
+
# Array[Hash[String, untyped]]
|
|
19
|
+
def references: (String path, Hash[String, untyped] position, ?include_declaration: bool) -> Array[Hash[String, untyped]]
|
|
20
|
+
|
|
21
|
+
# @rbs (String path, Hash[String, untyped] position) -> Hash[String, untyped]?
|
|
22
|
+
def prepare_rename: (String path, Hash[String, untyped] position) -> Hash[String, untyped]?
|
|
23
|
+
|
|
24
|
+
# @rbs (String path, Hash[String, untyped] position, String new_name) -> Hash[String, untyped]
|
|
25
|
+
def rename: (String path, Hash[String, untyped] position, String new_name) -> Hash[String, untyped]
|
|
26
|
+
|
|
27
|
+
# @rbs (String path, Hash[String, untyped] position) -> Hash[String, untyped]?
|
|
28
|
+
def hover: (String path, Hash[String, untyped] position) -> Hash[String, untyped]?
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
# @rbs (String path, Hash[String, untyped] position) -> SymbolOccurrence?
|
|
33
|
+
def occurrence_at: (String path, Hash[String, untyped] position) -> SymbolOccurrence?
|
|
34
|
+
|
|
35
|
+
# @rbs (Array[untyped] key, ?role: Symbol?) -> Array[SymbolOccurrence]
|
|
36
|
+
def matching: (Array[untyped] key, ?role: Symbol?) -> Array[SymbolOccurrence]
|
|
37
|
+
|
|
38
|
+
# @rbs (SymbolOccurrence occurrence) -> Hash[String, untyped]
|
|
39
|
+
def location: (SymbolOccurrence occurrence) -> Hash[String, untyped]
|
|
40
|
+
|
|
41
|
+
# @rbs (SymbolOccurrence occurrence) -> Hash[String, untyped]
|
|
42
|
+
def include_target_location: (SymbolOccurrence occurrence) -> Hash[String, untyped]
|
|
43
|
+
|
|
44
|
+
# @rbs (SymbolOccurrence occurrence) -> Hash[String, Hash[String, Integer]]
|
|
45
|
+
def range: (SymbolOccurrence occurrence) -> Hash[String, Hash[String, Integer]]
|
|
46
|
+
|
|
47
|
+
# @rbs (String path, Hash[String, untyped] position) -> SymbolOccurrence
|
|
48
|
+
def renameable_occurrence: (String path, Hash[String, untyped] position) -> SymbolOccurrence
|
|
49
|
+
|
|
50
|
+
# @rbs (SymbolOccurrence occurrence, String new_name) -> void
|
|
51
|
+
def validate_new_name: (SymbolOccurrence occurrence, String new_name) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (SymbolOccurrence candidate, SymbolOccurrence occurrence) -> bool
|
|
54
|
+
def collision_scope?: (SymbolOccurrence candidate, SymbolOccurrence occurrence) -> bool
|
|
55
|
+
|
|
56
|
+
# @rbs (Array[SymbolOccurrence] entries) -> void
|
|
57
|
+
def validate_nonoverlapping: (Array[SymbolOccurrence] entries) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (Array[SymbolOccurrence] entries) -> void
|
|
60
|
+
def validate_unshared: (Array[SymbolOccurrence] entries) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs () -> void
|
|
63
|
+
def ensure_fresh!: () -> void
|
|
64
|
+
|
|
65
|
+
# @rbs (Array[SymbolOccurrence] entries, String new_name) -> Hash[String, String]
|
|
66
|
+
def changed_sources: (Array[SymbolOccurrence] entries, String new_name) -> Hash[String, String]
|
|
67
|
+
|
|
68
|
+
# @rbs (SymbolOccurrence occurrence) -> String?
|
|
69
|
+
def hover_value: (SymbolOccurrence occurrence) -> String?
|
|
70
|
+
|
|
71
|
+
# @rbs (SymbolOccurrence occurrence) -> String
|
|
72
|
+
def rule_hover: (SymbolOccurrence occurrence) -> String
|
|
73
|
+
|
|
74
|
+
# @rbs (SymbolOccurrence occurrence) -> String
|
|
75
|
+
def terminal_hover: (SymbolOccurrence occurrence) -> String
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/symbol_index_builder.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Builds source occurrences and hover metadata from lossless frontend documents.
|
|
6
|
+
class SymbolIndexBuilder
|
|
7
|
+
include SymbolIndexSourceQueries
|
|
8
|
+
|
|
9
|
+
include SymbolIndexPrecedenceReferences
|
|
10
|
+
|
|
11
|
+
# @rbs (DocumentStore store, Array[String] files) -> void
|
|
12
|
+
def initialize: (DocumentStore store, Array[String] files) -> void
|
|
13
|
+
|
|
14
|
+
# @rbs () -> [Array[SymbolOccurrence], Hash[String, Frontend::SourceDocument]]
|
|
15
|
+
def build: () -> [ Array[SymbolOccurrence], Hash[String, Frontend::SourceDocument] ]
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
# @rbs () -> void
|
|
20
|
+
def collect_documents: () -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (String path, Frontend::SourceDocument document) -> void
|
|
23
|
+
def collect_definitions: (String path, Frontend::SourceDocument document) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs (String path, Frontend::SourceDocument document, Frontend::AST::declaration declaration,
|
|
26
|
+
# Frontend::Location? following) -> void
|
|
27
|
+
def collect_declaration: (String path, Frontend::SourceDocument document, Frontend::AST::declaration declaration, Frontend::Location? following) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Frontend::AST::Precedence declaration) -> void
|
|
30
|
+
def collect_precedence: (Frontend::AST::Precedence declaration) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (String path, Array[Frontend::Token] tokens, Frontend::AST::Include declaration) -> void
|
|
33
|
+
def collect_include: (String path, Array[Frontend::Token] tokens, Frontend::AST::Include declaration) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (String path, Frontend::SourceDocument document, Frontend::AST::Rule rule) -> void
|
|
36
|
+
def collect_rule_definition: (String path, Frontend::SourceDocument document, Frontend::AST::Rule rule) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (String path, Frontend::SourceDocument document, Frontend::AST::Rule rule,
|
|
39
|
+
# Frontend::Token lhs_token) -> void
|
|
40
|
+
def collect_parameters: (String path, Frontend::SourceDocument document, Frontend::AST::Rule rule, Frontend::Token lhs_token) -> void
|
|
41
|
+
|
|
42
|
+
# @rbs (String path, Frontend::SourceDocument document) -> void
|
|
43
|
+
def collect_references: (String path, Frontend::SourceDocument document) -> void
|
|
44
|
+
|
|
45
|
+
# @rbs (String path, Frontend::SourceDocument document, Frontend::AST::declaration declaration,
|
|
46
|
+
# Frontend::Location? following) -> void
|
|
47
|
+
def collect_declaration_references: (String path, Frontend::SourceDocument document, Frontend::AST::declaration declaration, Frontend::Location? following) -> void
|
|
48
|
+
|
|
49
|
+
# @rbs (String path, Frontend::SourceDocument document, Frontend::AST::Rule rule,
|
|
50
|
+
# Frontend::Location? following_rule) -> void
|
|
51
|
+
def collect_rule_references: (String path, Frontend::SourceDocument document, Frontend::AST::Rule rule, Frontend::Location? following_rule) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (String path, Frontend::SourceDocument document, Frontend::AST::item item,
|
|
54
|
+
# Frontend::AST::Rule rule, Integer rule_id) -> void
|
|
55
|
+
def collect_item: (String path, Frontend::SourceDocument document, Frontend::AST::item item, Frontend::AST::Rule rule, Integer rule_id) -> void
|
|
56
|
+
|
|
57
|
+
# @rbs (String path, Frontend::SourceDocument document,
|
|
58
|
+
# Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item,
|
|
59
|
+
# Frontend::AST::Rule rule, Integer rule_id) -> void
|
|
60
|
+
def collect_named_item: (String path, Frontend::SourceDocument document, Frontend::AST::SymbolReference | Frontend::AST::ParameterizedReference item, Frontend::AST::Rule rule, Integer rule_id) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs (String path, Frontend::Token token, String name) -> void
|
|
63
|
+
def add_global_reference: (String path, Frontend::Token token, String name) -> void
|
|
64
|
+
|
|
65
|
+
# @rbs (Symbol kind, String name) -> Hash[Symbol, untyped]
|
|
66
|
+
def symbol_data: (Symbol kind, String name) -> Hash[Symbol, untyped]
|
|
67
|
+
|
|
68
|
+
# @rbs (String path, Array[Frontend::Token] tokens, Array[String] names, Symbol kind, Symbol role) -> void
|
|
69
|
+
def add_named_tokens: (String path, Array[Frontend::Token] tokens, Array[String] names, Symbol kind, Symbol role) -> void
|
|
70
|
+
|
|
71
|
+
# @rbs (**untyped attributes) -> void
|
|
72
|
+
def add_occurrence: (**untyped attributes) -> void
|
|
73
|
+
|
|
74
|
+
# @rbs (String name) -> Array[untyped]
|
|
75
|
+
def global_key: (String name) -> Array[untyped]
|
|
76
|
+
|
|
77
|
+
# @rbs (String path, Integer rule_id, String name) -> Array[untyped]
|
|
78
|
+
def parameter_key: (String path, Integer rule_id, String name) -> Array[untyped]
|
|
79
|
+
|
|
80
|
+
# @rbs (Array[String] parameters) -> String
|
|
81
|
+
def parameter_signature: (Array[String] parameters) -> String
|
|
82
|
+
|
|
83
|
+
# @rbs (Frontend::AST::Include declaration) -> String?
|
|
84
|
+
def canonical_include_target: (Frontend::AST::Include declaration) -> String?
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/symbol_index_precedence_references.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Indexes rule-scoped item and alternative precedence references.
|
|
6
|
+
module SymbolIndexPrecedenceReferences
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs (String path, Frontend::SourceDocument document, Frontend::AST::Alternative alternative,
|
|
10
|
+
# Frontend::Location? following, Frontend::AST::Rule rule, Integer rule_id) -> void
|
|
11
|
+
def collect_alternative_precedence: (String path, Frontend::SourceDocument document, Frontend::AST::Alternative alternative, Frontend::Location? following, Frontend::AST::Rule rule, Integer rule_id) -> void
|
|
12
|
+
|
|
13
|
+
# @rbs (String path, Frontend::Token token, String name, Frontend::AST::Rule rule,
|
|
14
|
+
# Integer rule_id) -> void
|
|
15
|
+
def add_rule_reference: (String path, Frontend::Token token, String name, Frontend::AST::Rule rule, Integer rule_id) -> void
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/symbol_index_source_queries.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Locates lossless frontend tokens used by the symbol index.
|
|
6
|
+
module SymbolIndexSourceQueries
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs (Frontend::SourceDocument document, Frontend::Location start,
|
|
10
|
+
# Frontend::Location? finish) -> Array[Frontend::Token]
|
|
11
|
+
def tokens_between: (Frontend::SourceDocument document, Frontend::Location start, Frontend::Location? finish) -> Array[Frontend::Token]
|
|
12
|
+
|
|
13
|
+
# @rbs (Frontend::SourceDocument document, Frontend::Location location, String value) -> Frontend::Token?
|
|
14
|
+
def token_at: (Frontend::SourceDocument document, Frontend::Location location, String value) -> Frontend::Token?
|
|
15
|
+
|
|
16
|
+
# @rbs (Frontend::SourceDocument document, Frontend::Token lhs_token) -> Array[Frontend::Token]
|
|
17
|
+
def parameter_tokens: (Frontend::SourceDocument document, Frontend::Token lhs_token) -> Array[Frontend::Token]
|
|
18
|
+
|
|
19
|
+
# @rbs (Frontend::AST::declaration declaration) -> Array[String]
|
|
20
|
+
def declaration_reference_names: (Frontend::AST::declaration declaration) -> Array[String]
|
|
21
|
+
|
|
22
|
+
# @rbs (Frontend::Location left, Frontend::Location right) -> bool
|
|
23
|
+
def location_before?: (Frontend::Location left, Frontend::Location right) -> bool
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/symbol_occurrence.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# A source-backed grammar symbol definition or reference.
|
|
6
|
+
class SymbolOccurrence < Struct[String | Symbol | Array[untyped] | Frontend::SourceSpan | Hash[Symbol, untyped]]
|
|
7
|
+
attr_accessor name(): String
|
|
8
|
+
|
|
9
|
+
attr_accessor kind(): Symbol
|
|
10
|
+
|
|
11
|
+
attr_accessor role(): Symbol
|
|
12
|
+
|
|
13
|
+
attr_accessor key(): Array[untyped]
|
|
14
|
+
|
|
15
|
+
attr_accessor path(): String
|
|
16
|
+
|
|
17
|
+
attr_accessor span(): Frontend::SourceSpan
|
|
18
|
+
|
|
19
|
+
attr_accessor data(): Hash[Symbol, untyped]
|
|
20
|
+
|
|
21
|
+
def self.new: (?name: String, ?kind: Symbol, ?role: Symbol, ?key: Array[untyped], ?path: String, ?span: Frontend::SourceSpan, ?data: Hash[Symbol, untyped]) -> instance
|
|
22
|
+
| ({ ?name: String, ?kind: Symbol, ?role: Symbol, ?key: Array[untyped], ?path: String, ?span: Frontend::SourceSpan, ?data: Hash[Symbol, untyped] }) -> instance
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/transport.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Reads and writes bounded LSP JSON-RPC messages over Content-Length framing.
|
|
6
|
+
class Transport
|
|
7
|
+
HEADER_SEPARATOR: ::String
|
|
8
|
+
|
|
9
|
+
# @rbs (untyped input, untyped output) -> void
|
|
10
|
+
def initialize: (untyped input, untyped output) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs () -> Hash[String, untyped]?
|
|
13
|
+
def read_message: () -> Hash[String, untyped]?
|
|
14
|
+
|
|
15
|
+
# @rbs (Hash[String, untyped] message) -> void
|
|
16
|
+
def write_message: (Hash[String, untyped] message) -> void
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
# @rbs () -> String?
|
|
21
|
+
def read_header: () -> String?
|
|
22
|
+
|
|
23
|
+
# @rbs (String header) -> Integer
|
|
24
|
+
def content_length: (String header) -> Integer
|
|
25
|
+
|
|
26
|
+
# @rbs (Integer length) -> String
|
|
27
|
+
def read_bytes: (Integer length) -> String
|
|
28
|
+
|
|
29
|
+
# IO#read(length) may wait for the entire length on a live pipe. readpartial
|
|
30
|
+
# lets the stdio server process the bytes that are already available.
|
|
31
|
+
# @rbs (Integer length) -> String?
|
|
32
|
+
def read_chunk: (Integer length) -> String?
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/workspace.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Converts file URIs to canonical paths constrained to initialized workspace roots.
|
|
6
|
+
class Workspace
|
|
7
|
+
attr_reader roots: Array[String]
|
|
8
|
+
|
|
9
|
+
# @rbs (Array[String] root_uris, Frontend::SourceLoader loader) -> void
|
|
10
|
+
def initialize: (Array[String] root_uris, Frontend::SourceLoader loader) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (String uri, ?allow_missing: bool) -> String
|
|
13
|
+
def path: (String uri, ?allow_missing: bool) -> String
|
|
14
|
+
|
|
15
|
+
# @rbs (String path) -> String
|
|
16
|
+
def uri: (String path) -> String
|
|
17
|
+
|
|
18
|
+
# @rbs (String path) -> String?
|
|
19
|
+
def root_for: (String path) -> String?
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
# URI is a stdlib boundary whose implementation class varies by scheme.
|
|
24
|
+
# @rbs (String uri) -> untyped
|
|
25
|
+
def parse_file_uri: (String uri) -> untyped
|
|
26
|
+
|
|
27
|
+
# Ruby's URI::File may discard userinfo and port, so validate the raw authority first.
|
|
28
|
+
# @rbs (String uri) -> void
|
|
29
|
+
def validate_raw_authority!: (String uri) -> void
|
|
30
|
+
|
|
31
|
+
# @rbs (String uri) -> String
|
|
32
|
+
def canonical_root: (String uri) -> String
|
|
33
|
+
|
|
34
|
+
# @rbs (String encoded) -> String
|
|
35
|
+
def decode_path: (String encoded) -> String
|
|
36
|
+
|
|
37
|
+
# @rbs (String path, String root) -> bool
|
|
38
|
+
def inside?: (String path, String root) -> bool
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/workspace_analyzer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Parses workspace sources, discovers safe include closures, and renders diagnostics.
|
|
6
|
+
class WorkspaceAnalyzer
|
|
7
|
+
GLOB_CHARACTERS: Regexp
|
|
8
|
+
|
|
9
|
+
WINDOWS_ABSOLUTE: Regexp
|
|
10
|
+
|
|
11
|
+
type lsp_diagnostic = Hash[String, untyped]
|
|
12
|
+
|
|
13
|
+
type analyzed_document = { source: String, document: Frontend::SourceDocument?, diagnostics: Array[lsp_diagnostic] }
|
|
14
|
+
|
|
15
|
+
# @rbs (Workspace workspace, Frontend::SourceLoader loader) -> void
|
|
16
|
+
def initialize: (Workspace workspace, Frontend::SourceLoader loader) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (String path) -> analyzed_document
|
|
19
|
+
def analyze: (String path) -> analyzed_document
|
|
20
|
+
|
|
21
|
+
# @rbs (String root) -> [Array[String], Hash[String, analyzed_document]]
|
|
22
|
+
def closure: (String root) -> [ Array[String], Hash[String, analyzed_document] ]
|
|
23
|
+
|
|
24
|
+
# @rbs (String root) -> [Frontend::Resolution?, Array[lsp_diagnostic]]
|
|
25
|
+
def resolve: (String root) -> [ Frontend::Resolution?, Array[lsp_diagnostic] ]
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
# @rbs (String path, String source) -> analyzed_document
|
|
30
|
+
def analyze_root: (String path, String source) -> analyzed_document
|
|
31
|
+
|
|
32
|
+
# @rbs (String path, String source) -> analyzed_document
|
|
33
|
+
def analyze_fragment: (String path, String source) -> analyzed_document
|
|
34
|
+
|
|
35
|
+
# @rbs (String source, String path) -> bool
|
|
36
|
+
def fragment_source?: (String source, String path) -> bool
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::SourceDocument? document) -> Array[String]
|
|
39
|
+
def dependencies: (Frontend::SourceDocument? document) -> Array[String]
|
|
40
|
+
|
|
41
|
+
# @rbs (Frontend::AST::Include include_node) -> String
|
|
42
|
+
def canonical_include: (Frontend::AST::Include include_node) -> String
|
|
43
|
+
|
|
44
|
+
# @rbs (Frontend::AST::Include include_node) -> bot
|
|
45
|
+
def invalid_include: (Frontend::AST::Include include_node) -> bot
|
|
46
|
+
|
|
47
|
+
# @rbs (String message, String source, String fallback_path) -> lsp_diagnostic
|
|
48
|
+
def diagnostic: (String message, String source, String fallback_path) -> lsp_diagnostic
|
|
49
|
+
|
|
50
|
+
# @rbs (Frontend::Diagnostic diagnostic, String source) -> lsp_diagnostic
|
|
51
|
+
def frontend_diagnostic: (Frontend::Diagnostic diagnostic, String source) -> lsp_diagnostic
|
|
52
|
+
|
|
53
|
+
# @rbs (String message, String fallback_path) -> [String, Integer, Integer, String]
|
|
54
|
+
def diagnostic_parts: (String message, String fallback_path) -> [ String, Integer, Integer, String ]
|
|
55
|
+
|
|
56
|
+
# @rbs (String source, Integer line, Integer column) -> Hash[String, Hash[String, Integer]]
|
|
57
|
+
def diagnostic_range: (String source, Integer line, Integer column) -> Hash[String, Hash[String, Integer]]
|
|
58
|
+
|
|
59
|
+
# @rbs (String path) -> String
|
|
60
|
+
def readable_source: (String path) -> String
|
|
61
|
+
|
|
62
|
+
# @rbs (String message, String fallback) -> String
|
|
63
|
+
def file_for_error: (String message, String fallback) -> String
|
|
64
|
+
|
|
65
|
+
# @rbs (String message, String fallback) -> String
|
|
66
|
+
def source_for_error: (String message, String fallback) -> String
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data/sig/ibex/lsp.rbs
ADDED
|
@@ -11,6 +11,37 @@ module Ibex
|
|
|
11
11
|
# @rbs (Frontend::AST::declaration declaration) -> void
|
|
12
12
|
def read_declaration: (Frontend::AST::declaration declaration) -> void
|
|
13
13
|
|
|
14
|
+
# @rbs (Frontend::AST::Start declaration) -> void
|
|
15
|
+
def read_start_declaration: (Frontend::AST::Start declaration) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs (Frontend::AST::symbol_metadata | Frontend::AST::Parameter | Frontend::AST::Printer declaration) -> void
|
|
18
|
+
def read_extended_declaration: (Frontend::AST::symbol_metadata | Frontend::AST::Parameter | Frontend::AST::Printer declaration) -> void
|
|
19
|
+
|
|
20
|
+
# @rbs (Frontend::AST::Printer declaration) -> void
|
|
21
|
+
def read_value_printer: (Frontend::AST::Printer declaration) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs () -> void
|
|
24
|
+
def validate_value_printers: () -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (Frontend::AST::Parameter declaration) -> void
|
|
27
|
+
def read_parser_parameter: (Frontend::AST::Parameter declaration) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Frontend::AST::Tokens declaration) -> void
|
|
30
|
+
def read_tokens: (Frontend::AST::Tokens declaration) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs (Frontend::AST::Options declaration) -> void
|
|
33
|
+
def read_options: (Frontend::AST::Options declaration) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (Frontend::AST::Convert declaration) -> void
|
|
36
|
+
def read_conversions: (Frontend::AST::Convert declaration) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (Frontend::AST::symbol_metadata declaration) -> void
|
|
39
|
+
def read_symbol_metadata_declaration: (Frontend::AST::symbol_metadata declaration) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (Frontend::AST::symbol_metadata declaration, Hash[String, String] values,
|
|
42
|
+
# Hash[String, IR::location] locations, String label) -> void
|
|
43
|
+
def read_symbol_metadata: (Frontend::AST::symbol_metadata declaration, Hash[String, String] values, Hash[String, IR::location] locations, String label) -> void
|
|
44
|
+
|
|
14
45
|
# @rbs (Frontend::AST::Precedence declaration) -> void
|
|
15
46
|
def read_precedence: (Frontend::AST::Precedence declaration) -> void
|
|
16
47
|
|
|
@@ -8,6 +8,9 @@ module Ibex
|
|
|
8
8
|
# @rbs () -> void
|
|
9
9
|
def validate_grammar: () -> void
|
|
10
10
|
|
|
11
|
+
# @rbs () -> void
|
|
12
|
+
def validate_symbol_metadata: () -> void
|
|
13
|
+
|
|
11
14
|
# @rbs () -> void
|
|
12
15
|
def warn_duplicate_productions: () -> void
|
|
13
16
|
|
|
@@ -20,6 +23,12 @@ module Ibex
|
|
|
20
23
|
# @rbs () -> void
|
|
21
24
|
def warn_unused_terminals: () -> void
|
|
22
25
|
|
|
26
|
+
# @rbs () -> void
|
|
27
|
+
def warn_unreachable_terminals: () -> void
|
|
28
|
+
|
|
29
|
+
# @rbs () -> void
|
|
30
|
+
def warn_unused_precedence: () -> void
|
|
31
|
+
|
|
23
32
|
# @rbs () -> void
|
|
24
33
|
def warn_empty_language: () -> void
|
|
25
34
|
|
|
@@ -11,6 +11,9 @@ module Ibex
|
|
|
11
11
|
# @rbs (Frontend::AST::Rule rule, Frontend::AST::Alternative alternative) -> void
|
|
12
12
|
def normalize_alternative: (Frontend::AST::Rule rule, Frontend::AST::Alternative alternative) -> void
|
|
13
13
|
|
|
14
|
+
# @rbs (Frontend::AST::Alternative alternative) -> Array[Frontend::AST::item]
|
|
15
|
+
def normalized_alternative_items: (Frontend::AST::Alternative alternative) -> Array[Frontend::AST::item]
|
|
16
|
+
|
|
14
17
|
# @rbs (Frontend::AST::item item) -> String
|
|
15
18
|
def normalize_item: (Frontend::AST::item item) -> String
|
|
16
19
|
|
|
@@ -20,27 +23,36 @@ module Ibex
|
|
|
20
23
|
# @rbs (Frontend::AST::Optional item) -> String
|
|
21
24
|
def expand_optional: (Frontend::AST::Optional item) -> String
|
|
22
25
|
|
|
26
|
+
# @rbs (Frontend::AST::Optional item, String base) -> String
|
|
27
|
+
def build_optional: (Frontend::AST::Optional item, String base) -> String
|
|
28
|
+
|
|
23
29
|
# @rbs (Frontend::AST::Star item) -> String
|
|
24
30
|
def expand_star: (Frontend::AST::Star item) -> String
|
|
25
31
|
|
|
32
|
+
# @rbs (Frontend::AST::Star item, String base) -> String
|
|
33
|
+
def build_star: (Frontend::AST::Star item, String base) -> String
|
|
34
|
+
|
|
26
35
|
# @rbs (Frontend::AST::Plus item) -> String
|
|
27
36
|
def expand_plus: (Frontend::AST::Plus item) -> String
|
|
28
37
|
|
|
38
|
+
# @rbs (Frontend::AST::Plus item, String base) -> String
|
|
39
|
+
def build_plus: (Frontend::AST::Plus item, String base) -> String
|
|
40
|
+
|
|
29
41
|
# @rbs (Frontend::AST::SeparatedList item) -> String
|
|
30
42
|
def expand_separated_list: (Frontend::AST::SeparatedList item) -> String
|
|
31
43
|
|
|
44
|
+
# @rbs (Frontend::AST::SeparatedList item, String base, String separator) -> String
|
|
45
|
+
def build_separated_list: (Frontend::AST::SeparatedList item, String base, String separator) -> String
|
|
46
|
+
|
|
32
47
|
# @rbs (Frontend::AST::Group item) -> String
|
|
33
48
|
def expand_group: (Frontend::AST::Group item) -> String
|
|
34
49
|
|
|
50
|
+
# @rbs (String helper, Array[String] rhs, Frontend::AST::Group item) -> void
|
|
51
|
+
def add_group_production: (String helper, Array[String] rhs, Frontend::AST::Group item) -> void
|
|
52
|
+
|
|
35
53
|
# @rbs (Integer length) -> String
|
|
36
54
|
def group_value_expression: (Integer length) -> String
|
|
37
55
|
|
|
38
|
-
# @rbs (Frontend::AST::Group group) -> void
|
|
39
|
-
def reject_group_named_references: (Frontend::AST::Group group) -> void
|
|
40
|
-
|
|
41
|
-
# @rbs (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
42
|
-
def named_reference_in: (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
43
|
-
|
|
44
56
|
# @rbs (String kind, Frontend::Location location) -> String
|
|
45
57
|
def new_helper: (String kind, Frontend::Location location) -> String
|
|
46
58
|
|
|
@@ -53,14 +65,8 @@ module Ibex
|
|
|
53
65
|
# @rbs (Frontend::AST::InlineAction? action, Array[IR::named_ref] named_refs) -> IR::Action?
|
|
54
66
|
def normalize_action: (Frontend::AST::InlineAction? action, Array[IR::named_ref] named_refs) -> IR::Action?
|
|
55
67
|
|
|
56
|
-
# @rbs (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
57
|
-
def add_named_reference: (Frontend::AST::item item, Array[IR::named_ref] refs, Integer index) -> void
|
|
58
|
-
|
|
59
|
-
# @rbs (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
60
|
-
def unwrap_reference: (Frontend::AST::item item) -> Frontend::AST::SymbolReference?
|
|
61
|
-
|
|
62
68
|
# @rbs (String lhs_name, Array[String] rhs_names, IR::Action? action, String? precedence_name,
|
|
63
|
-
# Hash[Symbol, untyped] origin) -> void
|
|
64
|
-
def add_production: (String lhs_name, Array[String] rhs_names, IR::Action? action, String? precedence_name, Hash[Symbol, untyped] origin) -> void
|
|
69
|
+
# Hash[Symbol, untyped] origin, ?String? documentation, ?IR::node_annotation? node) -> void
|
|
70
|
+
def add_production: (String lhs_name, Array[String] rhs_names, IR::Action? action, String? precedence_name, Hash[Symbol, untyped] origin, ?String? documentation, ?IR::node_annotation? node) -> void
|
|
65
71
|
end
|
|
66
72
|
end
|
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
# Deterministically renders frontend EBNF items for production origin metadata.
|
|
5
5
|
module NormalizeExpression
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
private def self.render_reference: (Frontend::AST::SymbolReference item) -> String
|
|
9
|
-
|
|
10
|
-
private def render_group: (Frontend::AST::Group item) -> String
|
|
6
|
+
# @rbs (Frontend::AST::item item) -> String
|
|
7
|
+
def self.render: (Frontend::AST::item item) -> String
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
# @rbs (Array[untyped] pending, Frontend::AST::item item) -> void
|
|
10
|
+
private def self.push_render_item: (Array[untyped] pending, Frontend::AST::item item) -> void
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
# @rbs (Array[untyped] pending, Frontend::AST::ParameterizedReference item) -> void
|
|
13
|
+
private def self.push_render_parameterized_reference: (Array[untyped] pending, Frontend::AST::ParameterizedReference item) -> void
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
# @rbs (Array[untyped] pending, Frontend::AST::Group item) -> void
|
|
16
|
+
private def self.push_render_group: (Array[untyped] pending, Frontend::AST::Group item) -> void
|
|
17
17
|
|
|
18
|
-
# @rbs (Frontend::AST::item
|
|
19
|
-
def self
|
|
18
|
+
# @rbs (Array[untyped] pending, Array[Frontend::AST::item] items, String separator) -> void
|
|
19
|
+
private def self.push_render_items: (Array[untyped] pending, Array[Frontend::AST::item] items, String separator) -> void
|
|
20
20
|
end
|
|
21
21
|
end
|