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
data/sig/ibex/codegen/rbs.rbs
CHANGED
|
@@ -3,24 +3,104 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module Codegen
|
|
5
5
|
# Generates an RBS declaration for the public surface of a generated parser.
|
|
6
|
+
# rubocop:disable Metrics/ClassLength -- one generator owns the complete parser signature.
|
|
6
7
|
class RBS
|
|
7
|
-
@
|
|
8
|
+
@generated_action_abi: GeneratedActionABI::Cache
|
|
8
9
|
|
|
9
|
-
@
|
|
10
|
+
@omit_action_call: bool
|
|
10
11
|
|
|
11
12
|
@superclass: String
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
@grammar: IR::Grammar
|
|
15
|
+
|
|
16
|
+
@automaton: IR::Automaton
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::Automaton automaton, ?superclass: String?, ?omit_action_call: bool?) -> void
|
|
19
|
+
def initialize: (IR::Automaton automaton, ?superclass: String?, ?omit_action_call: bool?) -> void
|
|
15
20
|
|
|
16
21
|
# @rbs () -> String
|
|
17
22
|
def generate: () -> String
|
|
18
23
|
|
|
19
24
|
private
|
|
20
25
|
|
|
26
|
+
# @rbs (Array[String] lines) -> void
|
|
27
|
+
def append_ast_contract: (Array[String] lines) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Array[String] lines) -> void
|
|
30
|
+
def append_syntax_contract: (Array[String] lines) -> void
|
|
31
|
+
|
|
32
|
+
# @rbs () -> Hash[String, Hash[Symbol, untyped]]
|
|
33
|
+
def syntax_node_definitions: () -> Hash[String, Hash[Symbol, untyped]]
|
|
34
|
+
|
|
35
|
+
# @rbs (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
|
|
36
|
+
def merge_syntax_fields: (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
|
|
37
|
+
|
|
38
|
+
# @rbs (Array[String] lines, Hash[Symbol, untyped] definition) -> void
|
|
39
|
+
def append_syntax_node_contract: (Array[String] lines, Hash[Symbol, untyped] definition) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (String node_name, Integer index) -> String
|
|
42
|
+
def syntax_field_type: (String node_name, Integer index) -> String
|
|
43
|
+
|
|
44
|
+
# @rbs (Array[String] lines, Hash[String, untyped] fields) -> void
|
|
45
|
+
def append_repetition_contracts: (Array[String] lines, Hash[String, untyped] fields) -> void
|
|
46
|
+
|
|
47
|
+
# @rbs () -> Hash[String, IR::node_annotation]
|
|
48
|
+
def ast_node_definitions: () -> Hash[String, IR::node_annotation]
|
|
49
|
+
|
|
50
|
+
# @rbs (Array[String] lines, IR::node_annotation node) -> void
|
|
51
|
+
def append_ast_node_contract: (Array[String] lines, IR::node_annotation node) -> void
|
|
52
|
+
|
|
53
|
+
# @rbs (String name, Integer length) -> Array[String]
|
|
54
|
+
def ast_node_field_types: (String name, Integer length) -> Array[String]
|
|
55
|
+
|
|
56
|
+
# @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
57
|
+
def append_visitor_contract: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
60
|
+
def append_listener_contract: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
61
|
+
|
|
62
|
+
# @rbs (String name) -> String
|
|
63
|
+
def ast_method_name: (String name) -> String
|
|
64
|
+
|
|
21
65
|
# @rbs (Array[String] lines) -> void
|
|
22
66
|
def append_contract: (Array[String] lines) -> void
|
|
23
67
|
|
|
68
|
+
# @rbs (Array[String] lines) -> void
|
|
69
|
+
def append_entry_contract: (Array[String] lines) -> void
|
|
70
|
+
|
|
71
|
+
# @rbs (Array[String] lines) -> void
|
|
72
|
+
def append_parameter_contract: (Array[String] lines) -> void
|
|
73
|
+
|
|
74
|
+
# @rbs (Array[String] lines) -> void
|
|
75
|
+
def append_lexer_contract: (Array[String] lines) -> void
|
|
76
|
+
|
|
77
|
+
# @rbs (Array[String] lines) -> void
|
|
78
|
+
def append_value_printer_signatures: (Array[String] lines) -> void
|
|
79
|
+
|
|
80
|
+
# @rbs (Array[String] lines) -> void
|
|
81
|
+
def append_actions: (Array[String] lines) -> void
|
|
82
|
+
|
|
83
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
84
|
+
def append_action_signature: (Array[String] lines, IR::Production production) -> void
|
|
85
|
+
|
|
86
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
87
|
+
def append_composed_fragment_signatures: (Array[String] lines, IR::Production production) -> void
|
|
88
|
+
|
|
89
|
+
# @rbs (IR::Production production, Hash[Symbol, untyped] plan, Integer slot, Integer step_index) -> String
|
|
90
|
+
def composition_slot_type: (IR::Production production, Hash[Symbol, untyped] plan, Integer slot, Integer step_index) -> String
|
|
91
|
+
|
|
92
|
+
# @rbs (IR::Production production) -> bool
|
|
93
|
+
def action_method?: (IR::Production production) -> bool
|
|
94
|
+
|
|
95
|
+
# @rbs (IR::Production production) -> bool
|
|
96
|
+
def composed_action?: (IR::Production production) -> bool
|
|
97
|
+
|
|
98
|
+
# @rbs (Integer symbol_id) -> String
|
|
99
|
+
def semantic_type: (Integer symbol_id) -> String
|
|
100
|
+
|
|
101
|
+
# @rbs (Integer symbol_id) -> String?
|
|
102
|
+
def inferred_ast_type: (Integer symbol_id) -> String?
|
|
103
|
+
|
|
24
104
|
# @rbs () -> [Array[String], String]
|
|
25
105
|
def class_parts: () -> [ Array[String], String ]
|
|
26
106
|
|
data/sig/ibex/codegen/report.rbs
CHANGED
|
@@ -32,6 +32,14 @@ module Ibex
|
|
|
32
32
|
|
|
33
33
|
private def self.tree_label: (IR::Grammar grammar, Hash[Integer, String] labels, untyped value) -> untyped
|
|
34
34
|
|
|
35
|
+
private def display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, untyped]
|
|
36
|
+
|
|
37
|
+
private def self.display_conflict: (IR::conflict conflict, IR::Grammar grammar, Hash[Integer, String] labels) -> Hash[Symbol, untyped]
|
|
38
|
+
|
|
39
|
+
private def format_value: (untyped value) -> String
|
|
40
|
+
|
|
41
|
+
private def self.format_value: (untyped value) -> String
|
|
42
|
+
|
|
35
43
|
# @rbs (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
|
|
36
44
|
def self?.render: (IR::Automaton automaton, ?max_tokens: Integer, ?max_configurations: Integer) -> String
|
|
37
45
|
end
|
data/sig/ibex/codegen/ruby.rbs
CHANGED
|
@@ -3,31 +3,57 @@
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module Codegen
|
|
5
5
|
# Generates a standalone Ruby parser class from Automaton IR.
|
|
6
|
+
# rubocop:disable Metrics/ClassLength -- generation stages are split into focused mixins.
|
|
6
7
|
class Ruby
|
|
7
|
-
|
|
8
|
+
include RubyActions
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
include RubyErrorMessages
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
include RubyTableMetadata
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
include RubyValuePrinters
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
include RubyLexer
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
include RubyAST
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
include RubySyntax
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
EMBEDDED_RUNTIME_SOURCES: Array[String]
|
|
23
|
+
|
|
24
|
+
@automaton: IR::Automaton
|
|
22
25
|
|
|
23
26
|
@grammar: IR::Grammar
|
|
24
27
|
|
|
25
|
-
@
|
|
28
|
+
@table_format: Symbol
|
|
29
|
+
|
|
30
|
+
@embedded: bool
|
|
31
|
+
|
|
32
|
+
@line_convert: bool
|
|
33
|
+
|
|
34
|
+
@line_convert_all: bool
|
|
35
|
+
|
|
36
|
+
@debug: bool
|
|
37
|
+
|
|
38
|
+
@omit_action_call: bool
|
|
39
|
+
|
|
40
|
+
@superclass: String
|
|
41
|
+
|
|
42
|
+
@executable: String?
|
|
43
|
+
|
|
44
|
+
@cst_trivia: Symbol
|
|
45
|
+
|
|
46
|
+
@error_messages: Hash[Integer, String | { id: String, message: String }]
|
|
47
|
+
|
|
48
|
+
@generated_action_abi: GeneratedActionABI::Cache
|
|
49
|
+
|
|
50
|
+
@runtime_require: String?
|
|
26
51
|
|
|
27
52
|
# @rbs (IR::Automaton automaton, ?table: Symbol | String, ?embedded: bool, ?line_convert: bool,
|
|
28
53
|
# ?line_convert_all: bool, ?debug: bool, ?omit_action_call: bool?, ?superclass: String?,
|
|
29
|
-
# ?executable: String?
|
|
30
|
-
|
|
54
|
+
# ?executable: String?, ?cst_trivia: Symbol | String, ?runtime_require: String?,
|
|
55
|
+
# ?error_messages: Hash[Integer, String | { id: String, message: String }]) -> void
|
|
56
|
+
def initialize: (IR::Automaton automaton, ?table: Symbol | String, ?embedded: bool, ?line_convert: bool, ?line_convert_all: bool, ?debug: bool, ?omit_action_call: bool?, ?superclass: String?, ?executable: String?, ?cst_trivia: Symbol | String, ?runtime_require: String?, ?error_messages: Hash[Integer, String | { id: String, message: String }]) -> void
|
|
31
57
|
|
|
32
58
|
# @rbs () -> String
|
|
33
59
|
def generate: () -> String
|
|
@@ -43,9 +69,36 @@ module Ibex
|
|
|
43
69
|
# @rbs (Array[String] lines) -> void
|
|
44
70
|
def append_tables: (Array[String] lines) -> void
|
|
45
71
|
|
|
72
|
+
# @rbs (Array[String] lines, String indent) -> void
|
|
73
|
+
def append_cst_metadata: (Array[String] lines, String indent) -> void
|
|
74
|
+
|
|
75
|
+
# @rbs (Array[String] lines, String indent, Tables::TableSet table_set) -> void
|
|
76
|
+
def append_parser_tables: (Array[String] lines, String indent, Tables::TableSet table_set) -> void
|
|
77
|
+
|
|
78
|
+
# @rbs (Array[String] lines) -> void
|
|
79
|
+
def append_parameter_initializer: (Array[String] lines) -> void
|
|
80
|
+
|
|
81
|
+
# Custom conversion expressions can return caller-owned mutable or
|
|
82
|
+
# inherently unshareable objects, so only standard token mappings are
|
|
83
|
+
# safe to freeze transitively.
|
|
84
|
+
# @rbs () -> bool
|
|
85
|
+
def shareable_parser_tables?: () -> bool
|
|
86
|
+
|
|
87
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
88
|
+
def cst_metadata: () -> Hash[Symbol, untyped]
|
|
89
|
+
|
|
90
|
+
# @rbs (untyped value) -> String
|
|
91
|
+
def deep_frozen_literal: (untyped value) -> String
|
|
92
|
+
|
|
46
93
|
# @rbs (untyped table) -> String
|
|
47
94
|
def table_literal: (untyped table) -> String
|
|
48
95
|
|
|
96
|
+
# @rbs (Array[Integer?] values) -> String
|
|
97
|
+
def packed_integers_literal: (Array[Integer?] values) -> String
|
|
98
|
+
|
|
99
|
+
# @rbs (Array[Integer?] values) -> String
|
|
100
|
+
def packed_signed_integers_literal: (Array[Integer?] values) -> String
|
|
101
|
+
|
|
49
102
|
# @rbs () -> String
|
|
50
103
|
def token_ids_literal: () -> String
|
|
51
104
|
|
|
@@ -55,26 +108,47 @@ module Ibex
|
|
|
55
108
|
# @rbs () -> String
|
|
56
109
|
def token_names_literal: () -> String
|
|
57
110
|
|
|
111
|
+
# @rbs () -> String
|
|
112
|
+
def symbol_names_literal: () -> String
|
|
113
|
+
|
|
58
114
|
# @rbs () -> String
|
|
59
115
|
def productions_literal: () -> String
|
|
60
116
|
|
|
61
|
-
# @rbs (
|
|
62
|
-
def
|
|
117
|
+
# @rbs () -> String
|
|
118
|
+
def plain_productions_literal: () -> String
|
|
119
|
+
|
|
120
|
+
# @rbs (IR::Production production, bool generated_action) -> String
|
|
121
|
+
def production_action_abi_literal: (IR::Production production, bool generated_action) -> String
|
|
122
|
+
|
|
123
|
+
# @rbs () -> String
|
|
124
|
+
def compact_productions_literal: () -> String
|
|
125
|
+
|
|
126
|
+
# @rbs (IR::Production production) -> Integer
|
|
127
|
+
def compact_production_flags: (IR::Production production) -> Integer
|
|
128
|
+
|
|
129
|
+
# @rbs () -> String
|
|
130
|
+
def compact_production_metadata_literal: () -> String
|
|
131
|
+
|
|
132
|
+
# Reductions that are the sole non-error behavior of a state may run
|
|
133
|
+
# before requesting another lexer token. This enables parser actions to
|
|
134
|
+
# select lexer_state without speculative lookahead.
|
|
135
|
+
# @rbs () -> String
|
|
136
|
+
def eager_reductions_literal: () -> String
|
|
63
137
|
|
|
64
|
-
# @rbs (
|
|
65
|
-
def
|
|
138
|
+
# @rbs (IR::AutomatonState state) -> IR::reduce_action?
|
|
139
|
+
def eager_lexer_feedback_reduction: (IR::AutomatonState state) -> IR::reduce_action?
|
|
66
140
|
|
|
67
|
-
# @rbs (
|
|
68
|
-
def
|
|
141
|
+
# @rbs (IR::Action? action) -> [String, String]
|
|
142
|
+
def production_location_metadata: (IR::Action? action) -> [ String, String ]
|
|
69
143
|
|
|
70
|
-
# @rbs (
|
|
71
|
-
def
|
|
144
|
+
# @rbs () -> bool
|
|
145
|
+
def uses_locations?: () -> bool
|
|
72
146
|
|
|
73
|
-
# @rbs (
|
|
74
|
-
def
|
|
147
|
+
# @rbs (IR::Production production, IR::Action action) -> bool
|
|
148
|
+
def action_references_locations?: (IR::Production production, IR::Action action) -> bool
|
|
75
149
|
|
|
76
|
-
# @rbs (
|
|
77
|
-
def
|
|
150
|
+
# @rbs () -> bool
|
|
151
|
+
def cst?: () -> bool
|
|
78
152
|
|
|
79
153
|
# @rbs (Array[String] lines, String name, ?indent: Integer) -> void
|
|
80
154
|
def append_user_code: (Array[String] lines, String name, ?indent: Integer) -> void
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ruby_actions.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Semantic-action method generation shared by direct and source-mapped
|
|
6
|
+
# Ruby output.
|
|
7
|
+
module RubyActions
|
|
8
|
+
include RubyAST
|
|
9
|
+
|
|
10
|
+
@action_method_source: ActionMethodSource?
|
|
11
|
+
|
|
12
|
+
@omit_action_call: bool
|
|
13
|
+
|
|
14
|
+
@line_convert: bool
|
|
15
|
+
|
|
16
|
+
@grammar: IR::Grammar
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
# @rbs (Array[String] lines) -> void
|
|
21
|
+
def append_actions: (Array[String] lines) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
24
|
+
def append_composed_action_method: (Array[String] lines, IR::Production production) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
|
|
27
|
+
def append_composed_fragment_method: (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (IR::Production production, Integer index) -> String
|
|
30
|
+
def composed_fragment_name: (IR::Production production, Integer index) -> String
|
|
31
|
+
|
|
32
|
+
# @rbs (Array[String] lines, IR::Production production, Hash[Symbol, untyped] plan) -> void
|
|
33
|
+
def append_composed_orchestrator: (Array[String] lines, IR::Production production, Hash[Symbol, untyped] plan) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
|
|
36
|
+
def append_composed_step: (Array[String] lines, IR::Production production, Hash[Symbol, untyped] step, Integer index) -> void
|
|
37
|
+
|
|
38
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
39
|
+
def append_compiled_action_method: (Array[String] lines, IR::Production production) -> void
|
|
40
|
+
|
|
41
|
+
# @rbs (Array[String] lines, IR::Production production) -> void
|
|
42
|
+
def append_action_method: (Array[String] lines, IR::Production production) -> void
|
|
43
|
+
|
|
44
|
+
# @rbs (IR::Production production) -> bool
|
|
45
|
+
def action_method?: (IR::Production production) -> bool
|
|
46
|
+
|
|
47
|
+
# @rbs (IR::Production production) -> bool
|
|
48
|
+
def composed_action?: (IR::Production production) -> bool
|
|
49
|
+
|
|
50
|
+
# @rbs () -> ActionMethodSource
|
|
51
|
+
def action_method_source: () -> ActionMethodSource
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ruby_ast.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Generates typed AST data classes and traversal bases from @node metadata.
|
|
6
|
+
module RubyAST
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs (Array[String] lines) -> void
|
|
10
|
+
def append_ast: (Array[String] lines) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs () -> Hash[String, IR::node_annotation]
|
|
13
|
+
def ast_node_definitions: () -> Hash[String, IR::node_annotation]
|
|
14
|
+
|
|
15
|
+
# @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
16
|
+
def append_visitor: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (Array[String] lines) -> void
|
|
19
|
+
def append_visit_children: (Array[String] lines) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
22
|
+
def append_listener: (Array[String] lines, Hash[String, IR::node_annotation] definitions) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs (Array[String] lines, Hash[String, IR::node_annotation] definitions, :enter | :exit kind) -> void
|
|
25
|
+
def append_listener_dispatch: (Array[String] lines, Hash[String, IR::node_annotation] definitions, :enter | :exit kind) -> void
|
|
26
|
+
|
|
27
|
+
# @rbs (IR::Production production) -> String
|
|
28
|
+
def ast_node_action_source: (IR::Production production) -> String
|
|
29
|
+
|
|
30
|
+
# @rbs (String name) -> String
|
|
31
|
+
def ast_method_name: (String name) -> String
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ruby_error_messages.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Serializes immutable example-keyed error records into generated Ruby.
|
|
6
|
+
module RubyErrorMessages
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs () -> String
|
|
10
|
+
def error_messages_literal: () -> String
|
|
11
|
+
|
|
12
|
+
# @rbs (String | { id: String, message: String } message) -> String
|
|
13
|
+
def error_message_literal: (String | { id: String, message: String } message) -> String
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ruby_lexer.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Generated lexer tables and action methods.
|
|
6
|
+
module RubyLexer
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs (Array[String] lines) -> void
|
|
10
|
+
def append_lexer: (Array[String] lines) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs (Array[String] lines, IR::Lexer lexer) -> void
|
|
13
|
+
def append_lexer_rules: (Array[String] lines, IR::Lexer lexer) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs (IR::LexerRule rule) -> String
|
|
16
|
+
def lexer_rule_literal: (IR::LexerRule rule) -> String
|
|
17
|
+
|
|
18
|
+
# @rbs (Array[String] lines, IR::Lexer lexer) -> void
|
|
19
|
+
def append_lexer_actions: (Array[String] lines, IR::Lexer lexer) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs (IR::LexerRule rule) -> String
|
|
22
|
+
def lexer_action_source: (IR::LexerRule rule) -> String
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ruby_syntax.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Generates typed Red syntax views from @node metadata.
|
|
6
|
+
module RubySyntax
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# @rbs (Array[String] lines) -> void
|
|
10
|
+
def append_syntax: (Array[String] lines) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs () -> Hash[String, Hash[Symbol, untyped]]
|
|
13
|
+
def syntax_node_definitions: () -> Hash[String, Hash[Symbol, untyped]]
|
|
14
|
+
|
|
15
|
+
# @rbs (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
|
|
16
|
+
def merge_syntax_fields: (Hash[String, untyped] left, Hash[String, untyped] right) -> Hash[String, untyped]
|
|
17
|
+
|
|
18
|
+
# @rbs (Array[String] lines, Hash[Symbol, untyped] definition) -> void
|
|
19
|
+
def append_syntax_node: (Array[String] lines, Hash[Symbol, untyped] definition) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs (Array[String] lines, Hash[String, untyped] fields) -> void
|
|
22
|
+
def append_repetition_accessors: (Array[String] lines, Hash[String, untyped] fields) -> void
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ruby_table_metadata.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Emits immutable identity and size metadata for generated parser tables.
|
|
6
|
+
module RubyTableMetadata
|
|
7
|
+
@automaton: IR::Automaton
|
|
8
|
+
|
|
9
|
+
@grammar: IR::Grammar
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
# @rbs (Array[String] lines, String indent) -> void
|
|
14
|
+
def append_table_metadata: (Array[String] lines, String indent) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs (Array[String] lines) -> void
|
|
17
|
+
def append_entry_methods: (Array[String] lines) -> void
|
|
18
|
+
|
|
19
|
+
# @rbs () -> String
|
|
20
|
+
def entry_table_fields: () -> String
|
|
21
|
+
|
|
22
|
+
# @rbs () -> String
|
|
23
|
+
def recovery_table_fields: () -> String
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Generated from lib/ibex/codegen/ruby_value_printers.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Codegen
|
|
5
|
+
# Emits declarative value-printer tables and methods for Ruby parsers.
|
|
6
|
+
module RubyValuePrinters
|
|
7
|
+
@grammar: IR::Grammar
|
|
8
|
+
|
|
9
|
+
@line_convert: bool
|
|
10
|
+
|
|
11
|
+
@value_printer_action_method_source: ActionMethodSource?
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
# @rbs (Array[String] lines, String indent) -> void
|
|
16
|
+
def append_value_printer_table: (Array[String] lines, String indent) -> void
|
|
17
|
+
|
|
18
|
+
# @rbs (Array[String] lines) -> void
|
|
19
|
+
def append_value_printers: (Array[String] lines) -> void
|
|
20
|
+
|
|
21
|
+
# @rbs (Array[String] lines, IR::value_printer printer) -> void
|
|
22
|
+
def append_value_printer: (Array[String] lines, IR::value_printer printer) -> void
|
|
23
|
+
|
|
24
|
+
# @rbs () -> ActionMethodSource
|
|
25
|
+
def value_printer_action_method_source: () -> ActionMethodSource
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Generated from lib/ibex/coverage/collector.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Coverage
|
|
5
|
+
# Strictly turns one or more complete parse sessions into a coverage report.
|
|
6
|
+
class Collector
|
|
7
|
+
@expected_sequence: Integer
|
|
8
|
+
|
|
9
|
+
@in_session: bool
|
|
10
|
+
|
|
11
|
+
@production_hits: Hash[Integer, Integer]
|
|
12
|
+
|
|
13
|
+
@state_hits: Hash[Integer, Integer]
|
|
14
|
+
|
|
15
|
+
@event_count: Integer
|
|
16
|
+
|
|
17
|
+
@sessions: Integer
|
|
18
|
+
|
|
19
|
+
@production_count: Integer?
|
|
20
|
+
|
|
21
|
+
@state_count: Integer?
|
|
22
|
+
|
|
23
|
+
@table_format_version: Integer?
|
|
24
|
+
|
|
25
|
+
@grammar_digest: String?
|
|
26
|
+
|
|
27
|
+
# @rbs () -> void
|
|
28
|
+
def initialize: () -> void
|
|
29
|
+
|
|
30
|
+
# @rbs (String path) -> Report
|
|
31
|
+
def self.collect_file: (String path) -> Report
|
|
32
|
+
|
|
33
|
+
# @rbs (Hash[String, untyped] document, source: String, line: Integer) -> void
|
|
34
|
+
def consume: (Hash[String, untyped] document, source: String, line: Integer) -> void
|
|
35
|
+
|
|
36
|
+
# @rbs (source: String) -> Report
|
|
37
|
+
def finish: (source: String) -> Report
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
# @rbs (Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
|
|
42
|
+
def start_session: (Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
|
|
43
|
+
|
|
44
|
+
# @rbs (String event, Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
|
|
45
|
+
def consume_session_event: (String event, Hash[untyped, untyped] data, untyped sequence, String source, Integer line) -> void
|
|
46
|
+
|
|
47
|
+
# @rbs (Hash[untyped, untyped] data, String source, Integer line)
|
|
48
|
+
# -> [[String, Integer, Integer, Integer], Integer]
|
|
49
|
+
def session_metadata: (Hash[untyped, untyped] data, String source, Integer line) -> [ [ String, Integer, Integer, Integer ], Integer ]
|
|
50
|
+
|
|
51
|
+
# @rbs ([String, Integer, Integer, Integer] metadata, String source, Integer line) -> void
|
|
52
|
+
def establish_metadata: ([ String, Integer, Integer, Integer ] metadata, String source, Integer line) -> void
|
|
53
|
+
|
|
54
|
+
# @rbs (String source, Integer line) -> void
|
|
55
|
+
def validate_metadata!: (String source, Integer line) -> void
|
|
56
|
+
|
|
57
|
+
# @rbs (untyped id, String source, Integer line) -> void
|
|
58
|
+
def hit_state: (untyped id, String source, Integer line) -> void
|
|
59
|
+
|
|
60
|
+
# @rbs (untyped id, String source, Integer line) -> void
|
|
61
|
+
def hit_production: (untyped id, String source, Integer line) -> void
|
|
62
|
+
|
|
63
|
+
# @rbs (untyped id, Integer total) -> bool
|
|
64
|
+
def valid_id?: (untyped id, Integer total) -> bool
|
|
65
|
+
|
|
66
|
+
# @rbs (Hash[Integer, Integer] hits, Integer id, String kind, String source, Integer line) -> void
|
|
67
|
+
def increment: (Hash[Integer, Integer] hits, Integer id, String kind, String source, Integer line) -> void
|
|
68
|
+
|
|
69
|
+
# @rbs [T] (T? value) -> T
|
|
70
|
+
def required_metadata: [T] (T? value) -> T
|
|
71
|
+
|
|
72
|
+
# @rbs (String source, Integer line, String message) -> bot
|
|
73
|
+
def invalid: (String source, Integer line, String message) -> bot
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Generated from lib/ibex/coverage/event_stream.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Coverage
|
|
5
|
+
# Bounded reader for the public runtime-event JSON Lines protocol.
|
|
6
|
+
module EventStream
|
|
7
|
+
interface _CoverageEventInput
|
|
8
|
+
def gets: (Integer) -> String?
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
MAX_LINE_BYTES: Integer
|
|
12
|
+
|
|
13
|
+
MAX_NESTING: Integer
|
|
14
|
+
|
|
15
|
+
ROOT_KEYS: Array[String]
|
|
16
|
+
|
|
17
|
+
EVENT_TYPES: Array[String]
|
|
18
|
+
|
|
19
|
+
# @rbs (String path) { (Hash[String, untyped], Integer) -> void } -> void
|
|
20
|
+
def self.each_file: (String path) { (Hash[String, untyped], Integer) -> void } -> void
|
|
21
|
+
|
|
22
|
+
# @rbs (_CoverageEventInput input, source: String)
|
|
23
|
+
# { (Hash[String, untyped], Integer) -> void } -> void
|
|
24
|
+
def self.each_io: (_CoverageEventInput input, source: String) { (Hash[String, untyped], Integer) -> void } -> void
|
|
25
|
+
|
|
26
|
+
# @rbs (String line, String source, Integer line_number) -> void
|
|
27
|
+
private def self.reject_oversized_line: (String line, String source, Integer line_number) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (String line, String source, Integer line_number) -> Hash[String, untyped]
|
|
30
|
+
private def self.parse_line: (String line, String source, Integer line_number) -> Hash[String, untyped]
|
|
31
|
+
|
|
32
|
+
# @rbs (Hash[String, untyped] document, String source, Integer line_number) -> void
|
|
33
|
+
private def self.validate_envelope: (Hash[String, untyped] document, String source, Integer line_number) -> void
|
|
34
|
+
|
|
35
|
+
# @rbs (untyped value) -> bool
|
|
36
|
+
private def self.positive_integer?: (untyped value) -> bool
|
|
37
|
+
|
|
38
|
+
# @rbs (String source, Integer line_number, String message) -> bot
|
|
39
|
+
private def self.raise_invalid: (String source, Integer line_number, String message) -> bot
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|