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,119 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/source_document.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
# An immutable lexical unit or trivia slice in a concrete syntax tree.
|
|
6
|
+
class Segment
|
|
7
|
+
TRIVIA_KINDS: Array[Symbol]
|
|
8
|
+
|
|
9
|
+
OPAQUE_KINDS: Array[Symbol]
|
|
10
|
+
|
|
11
|
+
attr_reader kind: Symbol
|
|
12
|
+
|
|
13
|
+
attr_reader span: SourceSpan
|
|
14
|
+
|
|
15
|
+
attr_reader text: String
|
|
16
|
+
|
|
17
|
+
attr_reader token_type: Symbol?
|
|
18
|
+
|
|
19
|
+
attr_reader token_index: Integer?
|
|
20
|
+
|
|
21
|
+
# @rbs (kind: Symbol, span: SourceSpan, text: String, ?token_type: Symbol?,
|
|
22
|
+
# ?token_index: Integer?) -> void
|
|
23
|
+
def initialize: (kind: Symbol, span: SourceSpan, text: String, ?token_type: Symbol?, ?token_index: Integer?) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> bool
|
|
26
|
+
def trivia?: () -> bool
|
|
27
|
+
|
|
28
|
+
# @rbs () -> bool
|
|
29
|
+
def opaque?: () -> bool
|
|
30
|
+
|
|
31
|
+
# @rbs () -> bool
|
|
32
|
+
def token?: () -> bool
|
|
33
|
+
|
|
34
|
+
# @rbs () -> String
|
|
35
|
+
def render: () -> String
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
module CST
|
|
39
|
+
# The immutable lexical root of a grammar source document.
|
|
40
|
+
class Document
|
|
41
|
+
include Enumerable[Segment]
|
|
42
|
+
|
|
43
|
+
attr_reader segments: Array[Segment]
|
|
44
|
+
|
|
45
|
+
# @rbs (Array[Segment] segments) -> void
|
|
46
|
+
def initialize: (Array[Segment] segments) -> void
|
|
47
|
+
|
|
48
|
+
def each: () -> Enumerator[Segment, Document]
|
|
49
|
+
| () { (Segment) -> void } -> Document
|
|
50
|
+
|
|
51
|
+
# @rbs () -> String
|
|
52
|
+
def render: () -> String
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
# @rbs (Array[Segment] segments) -> void
|
|
57
|
+
def validate_contiguous: (Array[Segment] segments) -> void
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Lossless grammar source plus its semantic parse and lexical concrete syntax tree.
|
|
62
|
+
class SourceDocument
|
|
63
|
+
attr_reader source: String
|
|
64
|
+
|
|
65
|
+
attr_reader file: String
|
|
66
|
+
|
|
67
|
+
attr_reader tokens: Array[Token]
|
|
68
|
+
|
|
69
|
+
attr_reader cst: CST::Document
|
|
70
|
+
|
|
71
|
+
attr_reader ast: AST::Root | AST::Fragment | nil
|
|
72
|
+
|
|
73
|
+
# @rbs (source: String, file: String, tokens: Array[Token], cst: CST::Document,
|
|
74
|
+
# ?ast: AST::Root | AST::Fragment | nil) -> void
|
|
75
|
+
def initialize: (source: String, file: String, tokens: Array[Token], cst: CST::Document, ?ast: AST::Root | AST::Fragment | nil) -> void
|
|
76
|
+
|
|
77
|
+
# @rbs () -> String
|
|
78
|
+
def render: () -> String
|
|
79
|
+
|
|
80
|
+
# @rbs (SourceSpan span) -> String
|
|
81
|
+
def slice: (SourceSpan span) -> String
|
|
82
|
+
|
|
83
|
+
# @rbs (Integer byte_offset) -> SourcePosition
|
|
84
|
+
def position_at: (Integer byte_offset) -> SourcePosition
|
|
85
|
+
|
|
86
|
+
# @rbs (Integer line, Integer column) -> Integer
|
|
87
|
+
def byte_offset_at: (Integer line, Integer column) -> Integer
|
|
88
|
+
|
|
89
|
+
# @rbs (Integer start_byte, Integer end_byte) -> SourceSpan
|
|
90
|
+
def span: (Integer start_byte, Integer end_byte) -> SourceSpan
|
|
91
|
+
|
|
92
|
+
# @rbs (Segment segment) -> Token?
|
|
93
|
+
def token_for: (Segment segment) -> Token?
|
|
94
|
+
|
|
95
|
+
# @rbs (AST::Root | AST::Fragment ast) -> SourceDocument
|
|
96
|
+
def with_ast: (AST::Root | AST::Fragment ast) -> SourceDocument
|
|
97
|
+
|
|
98
|
+
private
|
|
99
|
+
|
|
100
|
+
# @rbs () -> Array[Integer]
|
|
101
|
+
def build_line_starts: () -> Array[Integer]
|
|
102
|
+
|
|
103
|
+
# @rbs () -> void
|
|
104
|
+
def validate_render: () -> void
|
|
105
|
+
|
|
106
|
+
# @rbs () -> bool
|
|
107
|
+
def full_source_coverage?: () -> bool
|
|
108
|
+
|
|
109
|
+
# @rbs () -> bool
|
|
110
|
+
def segment_slices_match?: () -> bool
|
|
111
|
+
|
|
112
|
+
# @rbs (Integer byte_offset) -> void
|
|
113
|
+
def validate_byte_offset: (Integer byte_offset) -> void
|
|
114
|
+
|
|
115
|
+
# @rbs (SourceSpan span) -> void
|
|
116
|
+
def validate_span: (SourceSpan span) -> void
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/source_loader.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
# Resolves canonical grammar paths and reads either open-buffer overlays or disk.
|
|
6
|
+
class SourceLoader
|
|
7
|
+
@access_paths: Hash[String, Array[String]]
|
|
8
|
+
|
|
9
|
+
@record_reads: bool
|
|
10
|
+
|
|
11
|
+
@read_records: Hash[String, GenerationInput]
|
|
12
|
+
|
|
13
|
+
@aliases: Hash[String, String]
|
|
14
|
+
|
|
15
|
+
@overlays: Hash[String, String]
|
|
16
|
+
|
|
17
|
+
# @rbs () -> Array[GenerationInput]
|
|
18
|
+
def read_records: () -> Array[GenerationInput]
|
|
19
|
+
|
|
20
|
+
# Associate the lexical path used by a resolver with its canonical source.
|
|
21
|
+
# @rbs (String canonical, String access_path) -> void
|
|
22
|
+
def record_access: (String canonical, String access_path) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs (?overlays: Hash[String, String], ?record_reads: bool) -> void
|
|
25
|
+
def initialize: (?overlays: Hash[String, String], ?record_reads: bool) -> void
|
|
26
|
+
|
|
27
|
+
# Canonicalize an existing file, or a missing path explicitly allowed by an open overlay.
|
|
28
|
+
# @rbs (String path, ?base: String, ?allow_missing: bool) -> String
|
|
29
|
+
def canonical_path: (String path, ?base: String, ?allow_missing: bool) -> String
|
|
30
|
+
|
|
31
|
+
# @rbs (String path) -> String
|
|
32
|
+
def read: (String path) -> String
|
|
33
|
+
|
|
34
|
+
# @rbs (String path) -> bool
|
|
35
|
+
def file?: (String path) -> bool
|
|
36
|
+
|
|
37
|
+
# @rbs (String path) -> bool
|
|
38
|
+
def overlay?: (String path) -> bool
|
|
39
|
+
|
|
40
|
+
# Install or replace an editor buffer without writing it to disk.
|
|
41
|
+
# @rbs (String path, String source) -> String
|
|
42
|
+
def set_overlay: (String path, String source) -> String
|
|
43
|
+
|
|
44
|
+
# Remove an editor buffer and return its canonical path.
|
|
45
|
+
# @rbs (String path) -> String
|
|
46
|
+
def delete_overlay: (String path) -> String
|
|
47
|
+
|
|
48
|
+
# Read disk while deliberately bypassing an open overlay.
|
|
49
|
+
# @rbs (String path) -> String
|
|
50
|
+
def disk_source: (String path) -> String
|
|
51
|
+
|
|
52
|
+
# @rbs (String path) -> bool
|
|
53
|
+
def disk_file?: (String path) -> bool
|
|
54
|
+
|
|
55
|
+
# Resolve the current disk target without consulting overlay aliases.
|
|
56
|
+
# @rbs (String path) -> String
|
|
57
|
+
def disk_path: (String path) -> String
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
# Resolve the nearest existing ancestor so symlink escapes remain visible for new files.
|
|
62
|
+
# @rbs (String expanded) -> String
|
|
63
|
+
def canonical_missing_path: (String expanded) -> String
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/source_span.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
# Normalizes grammar source without changing its bytes.
|
|
6
|
+
module SourceEncoding
|
|
7
|
+
# @rbs (String source, String file) -> String
|
|
8
|
+
def self.validated_utf8: (String source, String file) -> String
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# An immutable position in grammar source.
|
|
12
|
+
class SourcePosition
|
|
13
|
+
attr_reader byte_offset: Integer
|
|
14
|
+
|
|
15
|
+
attr_reader line: Integer
|
|
16
|
+
|
|
17
|
+
attr_reader column: Integer
|
|
18
|
+
|
|
19
|
+
# @rbs (byte_offset: Integer, line: Integer, column: Integer) -> void
|
|
20
|
+
def initialize: (byte_offset: Integer, line: Integer, column: Integer) -> void
|
|
21
|
+
|
|
22
|
+
# @rbs () -> Hash[Symbol, Integer]
|
|
23
|
+
def to_h: () -> Hash[Symbol, Integer]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# An immutable half-open byte span in one grammar source.
|
|
27
|
+
class SourceSpan
|
|
28
|
+
attr_reader file: String
|
|
29
|
+
|
|
30
|
+
attr_reader start: SourcePosition
|
|
31
|
+
|
|
32
|
+
attr_reader finish: SourcePosition
|
|
33
|
+
|
|
34
|
+
# @rbs (file: String, start: SourcePosition, finish: SourcePosition) -> void
|
|
35
|
+
def initialize: (file: String, start: SourcePosition, finish: SourcePosition) -> void
|
|
36
|
+
|
|
37
|
+
# @rbs () -> Integer
|
|
38
|
+
def start_byte: () -> Integer
|
|
39
|
+
|
|
40
|
+
# @rbs () -> Integer
|
|
41
|
+
def end_byte: () -> Integer
|
|
42
|
+
|
|
43
|
+
# @rbs () -> Integer
|
|
44
|
+
def length: () -> Integer
|
|
45
|
+
|
|
46
|
+
# @rbs () -> bool
|
|
47
|
+
def empty?: () -> bool
|
|
48
|
+
|
|
49
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
50
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/token_adapter/declaration_document_state.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
class TokenAdapter
|
|
6
|
+
# Root/fragment header and include-path transitions for declaration classification.
|
|
7
|
+
module DeclarationDocumentState
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs (Token token) -> external_token
|
|
11
|
+
def class_keyword: (Token token) -> external_token
|
|
12
|
+
|
|
13
|
+
# @rbs (external_token type) -> external_token?
|
|
14
|
+
def classify_include: (external_token type) -> external_token?
|
|
15
|
+
|
|
16
|
+
# @rbs (Token token, String value) -> void
|
|
17
|
+
def reject_fragment_pragma: (Token token, String value) -> void
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated from lib/ibex/frontend/token_adapter/declaration_lexer_state.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Frontend
|
|
5
|
+
class TokenAdapter
|
|
6
|
+
# Context transitions for the extended root-only lexer declaration.
|
|
7
|
+
module DeclarationLexerState
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs () -> bool
|
|
11
|
+
def lexer_declaration_state?: () -> bool
|
|
12
|
+
|
|
13
|
+
# @rbs (Token token) -> external_token
|
|
14
|
+
def classify_lexer_identifier: (Token token) -> external_token
|
|
15
|
+
|
|
16
|
+
# @rbs (Token token) -> external_token
|
|
17
|
+
def begin_lexer_entry: (Token token) -> external_token
|
|
18
|
+
|
|
19
|
+
# @rbs () -> external_token
|
|
20
|
+
def finish_lexer_scope: () -> external_token
|
|
21
|
+
|
|
22
|
+
# @rbs (external_token type) -> external_token?
|
|
23
|
+
def classify_lexer_scalar: (external_token type) -> external_token?
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -4,7 +4,13 @@ module Ibex
|
|
|
4
4
|
module Frontend
|
|
5
5
|
class TokenAdapter
|
|
6
6
|
# Classifies tokens through the class header and declaration section.
|
|
7
|
+
# rubocop:disable Metrics/ClassLength, Metrics/CyclomaticComplexity
|
|
8
|
+
# One state machine owns declaration-boundary classification.
|
|
7
9
|
class DeclarationState
|
|
10
|
+
include DeclarationDocumentState
|
|
11
|
+
|
|
12
|
+
include DeclarationLexerState
|
|
13
|
+
|
|
8
14
|
DECLARATIONS: Hash[String, [ external_token, Symbol ]]
|
|
9
15
|
|
|
10
16
|
ASSOCIATIONS: Hash[String, external_token]
|
|
@@ -21,8 +27,16 @@ module Ibex
|
|
|
21
27
|
|
|
22
28
|
attr_reader state: Symbol
|
|
23
29
|
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
@pragma_location: Location?
|
|
31
|
+
|
|
32
|
+
@pragmas: Hash[String, bool]
|
|
33
|
+
|
|
34
|
+
@fragment: bool?
|
|
35
|
+
|
|
36
|
+
@extended_mode: bool
|
|
37
|
+
|
|
38
|
+
# @rbs (?extended: bool) -> void
|
|
39
|
+
def initialize: (?extended: bool) -> void
|
|
26
40
|
|
|
27
41
|
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
28
42
|
def classify: (Token token, Array[Token] remaining) -> external_token
|
|
@@ -33,6 +47,9 @@ module Ibex
|
|
|
33
47
|
# @rbs () -> bool
|
|
34
48
|
def extended_pragma?: () -> bool
|
|
35
49
|
|
|
50
|
+
# @rbs () -> bool
|
|
51
|
+
def cst_pragma?: () -> bool
|
|
52
|
+
|
|
36
53
|
# @rbs (Token? token) -> String?
|
|
37
54
|
def expectation: (Token? token) -> String?
|
|
38
55
|
|
|
@@ -41,9 +58,6 @@ module Ibex
|
|
|
41
58
|
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
42
59
|
def classify_identifier: (Token token, Array[Token] remaining) -> external_token
|
|
43
60
|
|
|
44
|
-
# @rbs (Token token) -> external_token
|
|
45
|
-
def class_keyword: (Token token) -> external_token
|
|
46
|
-
|
|
47
61
|
# @rbs (Array[Token] remaining) -> external_token
|
|
48
62
|
def constant_name: (Array[Token] remaining) -> external_token
|
|
49
63
|
|
|
@@ -62,6 +76,9 @@ module Ibex
|
|
|
62
76
|
# @rbs (String value) -> bool
|
|
63
77
|
def declaration_boundary?: (String value) -> bool
|
|
64
78
|
|
|
79
|
+
# @rbs () -> bool
|
|
80
|
+
def extended_features?: () -> bool
|
|
81
|
+
|
|
65
82
|
# @rbs (Token token) -> external_token
|
|
66
83
|
def precedence_identifier: (Token token) -> external_token
|
|
67
84
|
|
|
@@ -74,9 +91,60 @@ module Ibex
|
|
|
74
91
|
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
75
92
|
def classify_scalar: (Token token, Array[Token] remaining) -> external_token
|
|
76
93
|
|
|
94
|
+
# @rbs (external_token type) -> external_token?
|
|
95
|
+
def classify_single_symbol: (external_token type) -> external_token?
|
|
96
|
+
|
|
97
|
+
# @rbs (external_token type) -> external_token?
|
|
98
|
+
def continue_first_symbol: (external_token type) -> external_token?
|
|
99
|
+
|
|
100
|
+
# @rbs (Token token, external_token type) -> external_token?
|
|
101
|
+
def classify_token_alias: (Token token, external_token type) -> external_token?
|
|
102
|
+
|
|
103
|
+
# @rbs (external_token type) -> external_token?
|
|
104
|
+
def classify_metadata: (external_token type) -> external_token?
|
|
105
|
+
|
|
106
|
+
# @rbs (external_token type) -> external_token?
|
|
107
|
+
def classify_printer: (external_token type) -> external_token?
|
|
108
|
+
|
|
109
|
+
# @rbs (external_token type) -> external_token?
|
|
110
|
+
def classify_grammar_test: (external_token type) -> external_token?
|
|
111
|
+
|
|
112
|
+
# @rbs (Token token, external_token type, Array[Token] remaining) -> external_token?
|
|
113
|
+
def classify_conversion: (Token token, external_token type, Array[Token] remaining) -> external_token?
|
|
114
|
+
|
|
77
115
|
# @rbs (external_token type) -> external_token
|
|
78
116
|
def finish_single_symbol: (external_token type) -> external_token
|
|
79
117
|
|
|
118
|
+
# @rbs (external_token type) -> external_token
|
|
119
|
+
def continue_start_symbols: (external_token type) -> external_token
|
|
120
|
+
|
|
121
|
+
# @rbs (external_token type) -> external_token
|
|
122
|
+
def continue_recovery_symbols: (external_token type) -> external_token
|
|
123
|
+
|
|
124
|
+
# @rbs (external_token type) -> external_token
|
|
125
|
+
def continue_on_error_reduce_symbols: (external_token type) -> external_token
|
|
126
|
+
|
|
127
|
+
# @rbs (external_token type) -> external_token
|
|
128
|
+
def begin_metadata_value: (external_token type) -> external_token
|
|
129
|
+
|
|
130
|
+
# @rbs () -> external_token
|
|
131
|
+
def begin_param_type: () -> external_token
|
|
132
|
+
|
|
133
|
+
# @rbs (external_token type) -> external_token
|
|
134
|
+
def begin_printer_action: (external_token type) -> external_token
|
|
135
|
+
|
|
136
|
+
# @rbs (Token token) -> external_token
|
|
137
|
+
def begin_recovery_colon: (Token token) -> external_token
|
|
138
|
+
|
|
139
|
+
# @rbs (Token token) -> external_token
|
|
140
|
+
def begin_test_source: (Token token) -> external_token
|
|
141
|
+
|
|
142
|
+
# @rbs (external_token type) -> external_token
|
|
143
|
+
def finish_param_type: (external_token type) -> external_token
|
|
144
|
+
|
|
145
|
+
# @rbs (external_token type) -> external_token
|
|
146
|
+
def finish_metadata_value: (external_token type) -> external_token
|
|
147
|
+
|
|
80
148
|
# @rbs (external_token type) -> external_token
|
|
81
149
|
def finish_conversion: (external_token type) -> external_token
|
|
82
150
|
|
|
@@ -11,6 +11,8 @@ module Ibex
|
|
|
11
11
|
|
|
12
12
|
attr_reader state: Symbol
|
|
13
13
|
|
|
14
|
+
@node_annotation: bool?
|
|
15
|
+
|
|
14
16
|
@rule_seen: bool?
|
|
15
17
|
|
|
16
18
|
@lhs_column: Integer?
|
|
@@ -35,10 +37,16 @@ module Ibex
|
|
|
35
37
|
|
|
36
38
|
private
|
|
37
39
|
|
|
40
|
+
# @rbs () -> external_token
|
|
41
|
+
def classify_inline: () -> external_token
|
|
42
|
+
|
|
38
43
|
# @rbs (Token token, Array[Token] remaining, external_token? last_external,
|
|
39
44
|
# external_token? previous_external) -> external_token
|
|
40
45
|
def classify_identifier: (Token token, Array[Token] remaining, external_token? last_external, external_token? previous_external) -> external_token
|
|
41
46
|
|
|
47
|
+
# @rbs (Token token, Array[Token] remaining) -> external_token
|
|
48
|
+
def classify_rhs_identifier: (Token token, Array[Token] remaining) -> external_token
|
|
49
|
+
|
|
42
50
|
# @rbs (Token token) -> external_token
|
|
43
51
|
def rule_lhs: (Token token) -> external_token
|
|
44
52
|
|
|
@@ -48,6 +56,12 @@ module Ibex
|
|
|
48
56
|
# @rbs (Token token, Token following) -> bool
|
|
49
57
|
def rule_boundary?: (Token token, Token following) -> bool
|
|
50
58
|
|
|
59
|
+
# @rbs (Token token, Array[Token] remaining) -> bool
|
|
60
|
+
def parameterized_rule_boundary?: (Token token, Array[Token] remaining) -> bool
|
|
61
|
+
|
|
62
|
+
# @rbs (Array[Token] tail) -> bool
|
|
63
|
+
def parameter_definition_tail?: (Array[Token] tail) -> bool
|
|
64
|
+
|
|
51
65
|
# @rbs (Token token) -> external_token
|
|
52
66
|
def start_rule: (Token token) -> external_token
|
|
53
67
|
|
|
@@ -60,6 +74,12 @@ module Ibex
|
|
|
60
74
|
# @rbs (Token token) -> external_token
|
|
61
75
|
def separated_terminal: (Token token) -> external_token
|
|
62
76
|
|
|
77
|
+
# @rbs (Token token, Token following) -> bool
|
|
78
|
+
def parameterized_call?: (Token token, Token following) -> bool
|
|
79
|
+
|
|
80
|
+
# @rbs (Token left, Token right) -> bool
|
|
81
|
+
def adjacent?: (Token left, Token right) -> bool
|
|
82
|
+
|
|
63
83
|
# @rbs (Token token) -> external_token
|
|
64
84
|
def classify_punctuation: (Token token) -> external_token
|
|
65
85
|
|
|
@@ -22,8 +22,8 @@ module Ibex
|
|
|
22
22
|
|
|
23
23
|
@tokens: Array[Token]
|
|
24
24
|
|
|
25
|
-
# @rbs (Array[Token] tokens) -> void
|
|
26
|
-
def initialize: (Array[Token] tokens) -> void
|
|
25
|
+
# @rbs (Array[Token] tokens, ?extended: bool) -> void
|
|
26
|
+
def initialize: (Array[Token] tokens, ?extended: bool) -> void
|
|
27
27
|
|
|
28
28
|
# @rbs () -> ([external_token, Token] | false)
|
|
29
29
|
def next_token: () -> ([ external_token, Token ] | false)
|
|
@@ -40,6 +40,9 @@ module Ibex
|
|
|
40
40
|
# @rbs () -> bool
|
|
41
41
|
def extended_pragma?: () -> bool
|
|
42
42
|
|
|
43
|
+
# @rbs () -> bool
|
|
44
|
+
def cst_pragma?: () -> bool
|
|
45
|
+
|
|
43
46
|
# @rbs () -> parser_section
|
|
44
47
|
def section: () -> parser_section
|
|
45
48
|
|
data/sig/ibex/frontend.rbs
CHANGED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_input.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Digest and identity of source bytes actually consumed by one generation.
|
|
5
|
+
class GenerationInput
|
|
6
|
+
attr_reader path: String
|
|
7
|
+
|
|
8
|
+
attr_reader sha256: String
|
|
9
|
+
|
|
10
|
+
attr_reader bytesize: Integer
|
|
11
|
+
|
|
12
|
+
attr_reader dev: Integer
|
|
13
|
+
|
|
14
|
+
attr_reader ino: Integer
|
|
15
|
+
|
|
16
|
+
attr_reader access_paths: Array[String]
|
|
17
|
+
|
|
18
|
+
# @rbs (String path, String source, ?access_path: String) -> void
|
|
19
|
+
def initialize: (String path, String source, ?access_path: String) -> void
|
|
20
|
+
|
|
21
|
+
# Record another lexical path that supplied these canonical bytes.
|
|
22
|
+
# @rbs (String path) -> void
|
|
23
|
+
def add_access_path: (String path) -> void
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Hash[String, untyped]
|
|
26
|
+
def to_h: () -> Hash[String, untyped]
|
|
27
|
+
|
|
28
|
+
# Detect content changes even when size and timestamps are preserved.
|
|
29
|
+
# @rbs () -> bool
|
|
30
|
+
def current?: () -> bool
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
# @rbs () -> bool
|
|
35
|
+
def lexical_paths_current?: () -> bool
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_manifest.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Deterministic description of one published parser generation.
|
|
5
|
+
module GenerationManifest
|
|
6
|
+
SCHEMA_VERSION: Integer
|
|
7
|
+
|
|
8
|
+
IDENTIFIER: String
|
|
9
|
+
|
|
10
|
+
ROOT_KEYS: Array[String]
|
|
11
|
+
|
|
12
|
+
INPUT_KEYS: Array[String]
|
|
13
|
+
|
|
14
|
+
FILE_KEYS: Array[String]
|
|
15
|
+
|
|
16
|
+
ARTIFACT_KEYS: Array[String]
|
|
17
|
+
|
|
18
|
+
# @rbs (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, untyped]) -> String
|
|
19
|
+
def self?.render: (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, untyped]) -> String
|
|
20
|
+
|
|
21
|
+
# Validate the manifest shape and, by default, every published artifact digest.
|
|
22
|
+
# @rbs (String source, ?verify_artifacts: bool) -> Hash[String, untyped]
|
|
23
|
+
def self?.validate: (String source, ?verify_artifacts: bool) -> Hash[String, untyped]
|
|
24
|
+
|
|
25
|
+
# @rbs (String path, ?verify_artifacts: bool) -> Hash[String, untyped]
|
|
26
|
+
def self?.validate_file: (String path, ?verify_artifacts: bool) -> Hash[String, untyped]
|
|
27
|
+
|
|
28
|
+
# @rbs (Artifact artifact) -> Hash[String, untyped]
|
|
29
|
+
def self?.artifact_entry: (Artifact artifact) -> Hash[String, untyped]
|
|
30
|
+
|
|
31
|
+
# @rbs (Array[Hash[String, untyped]] files) -> String
|
|
32
|
+
def self?.input_digest: (Array[Hash[String, untyped]] files) -> String
|
|
33
|
+
|
|
34
|
+
# @rbs (Hash[String, untyped] value) -> Hash[String, untyped]
|
|
35
|
+
def self?.sorted_hash: (Hash[String, untyped] value) -> Hash[String, untyped]
|
|
36
|
+
|
|
37
|
+
# @rbs (untyped document) -> void
|
|
38
|
+
def self?.validate_document: (untyped document) -> void
|
|
39
|
+
|
|
40
|
+
# @rbs (Hash[untyped, untyped] document) -> void
|
|
41
|
+
def self?.validate_identity: (Hash[untyped, untyped] document) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (untyped input) -> void
|
|
44
|
+
def self?.validate_input: (untyped input) -> void
|
|
45
|
+
|
|
46
|
+
# @rbs (Array[untyped] entries, String label, ?require_kind: bool) -> void
|
|
47
|
+
def self?.validate_entries: (Array[untyped] entries, String label, ?require_kind: bool) -> void
|
|
48
|
+
|
|
49
|
+
# @rbs (untyped entry, String label, bool require_kind) -> void
|
|
50
|
+
def self?.validate_entry: (untyped entry, String label, bool require_kind) -> void
|
|
51
|
+
|
|
52
|
+
# @rbs (untyped path, String label) -> void
|
|
53
|
+
def self?.validate_path: (untyped path, String label) -> void
|
|
54
|
+
|
|
55
|
+
# @rbs (untyped kind, String label) -> void
|
|
56
|
+
def self?.validate_kind: (untyped kind, String label) -> void
|
|
57
|
+
|
|
58
|
+
# @rbs (untyped digest, String label) -> void
|
|
59
|
+
def self?.validate_digest: (untyped digest, String label) -> void
|
|
60
|
+
|
|
61
|
+
# @rbs (Hash[untyped, untyped] value, Array[String] expected, String label) -> void
|
|
62
|
+
def self?.exact_keys!: (Hash[untyped, untyped] value, Array[String] expected, String label) -> void
|
|
63
|
+
|
|
64
|
+
# @rbs (Array[untyped] entries) -> void
|
|
65
|
+
def self?.verify_entries: (Array[untyped] entries) -> void
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Generated from lib/ibex/generation_transaction.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Publishes a rendered ArtifactSet with rollback and a manifest-last marker.
|
|
5
|
+
class GenerationTransaction
|
|
6
|
+
include GenerationTransactionRecovery
|
|
7
|
+
|
|
8
|
+
include GenerationTransactionValidation
|
|
9
|
+
|
|
10
|
+
class SourceChanged < Ibex::Error
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class Error < Ibex::Error
|
|
14
|
+
attr_reader rollback_failed: bool
|
|
15
|
+
|
|
16
|
+
attr_reader recovery_artifacts: Array[String]
|
|
17
|
+
|
|
18
|
+
# @rbs (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
|
|
19
|
+
def initialize: (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# rubocop:disable Layout/LineLength
|
|
23
|
+
# @rbs (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
|
|
24
|
+
def initialize: (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs () -> void
|
|
27
|
+
def commit: () -> void
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
# @rbs () -> void
|
|
32
|
+
def prepare_records: () -> void
|
|
33
|
+
|
|
34
|
+
# @rbs (Artifact artifact, String target) -> Integer
|
|
35
|
+
def target_mode: (Artifact artifact, String target) -> Integer
|
|
36
|
+
|
|
37
|
+
# @rbs () -> void
|
|
38
|
+
def acquire_locks: () -> void
|
|
39
|
+
|
|
40
|
+
# @rbs (File lock, String path) -> void
|
|
41
|
+
def acquire_lock: (File lock, String path) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (String target) -> String
|
|
44
|
+
def lock_path: (String target) -> String
|
|
45
|
+
|
|
46
|
+
# @rbs () -> void
|
|
47
|
+
def stage_records: () -> void
|
|
48
|
+
|
|
49
|
+
# @rbs () -> void
|
|
50
|
+
def backup_records: () -> void
|
|
51
|
+
|
|
52
|
+
# @rbs (String directory, String suffix) -> File
|
|
53
|
+
def create_temporary_file: (String directory, String suffix) -> File
|
|
54
|
+
|
|
55
|
+
# @rbs (String target, String directory) -> String
|
|
56
|
+
def create_backup_link: (String target, String directory) -> String
|
|
57
|
+
|
|
58
|
+
# @rbs (String directory, String suffix) { (String) -> void } -> void
|
|
59
|
+
def with_temporary_path: (String directory, String suffix) { (String) -> void } -> void
|
|
60
|
+
|
|
61
|
+
# @rbs (Symbol group) -> void
|
|
62
|
+
def install_group: (Symbol group) -> void
|
|
63
|
+
|
|
64
|
+
# @rbs (Artifact artifact) -> Symbol
|
|
65
|
+
def publication_group: (Artifact artifact) -> Symbol
|
|
66
|
+
|
|
67
|
+
# @rbs () -> void
|
|
68
|
+
def sync_directories!: () -> void
|
|
69
|
+
|
|
70
|
+
# @rbs () -> void
|
|
71
|
+
def cleanup_success: () -> void
|
|
72
|
+
|
|
73
|
+
# @rbs (Exception error) -> void
|
|
74
|
+
def report_post_commit_failure: (Exception error) -> void
|
|
75
|
+
|
|
76
|
+
# @rbs (String message) -> void
|
|
77
|
+
def warn_best_effort: (String message) -> void
|
|
78
|
+
|
|
79
|
+
# @rbs () -> void
|
|
80
|
+
def release_locks: () -> void
|
|
81
|
+
end
|
|
82
|
+
end
|