ibex-runtime 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 +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +337 -0
- data/lib/ibex/runtime/ast_data.rb +23 -0
- data/lib/ibex/runtime/cst/annotation.rb +16 -0
- data/lib/ibex/runtime/cst/cursor.rb +68 -0
- data/lib/ibex/runtime/cst/diff.rb +80 -0
- data/lib/ibex/runtime/cst/editing.rb +56 -0
- data/lib/ibex/runtime/cst/editor.rb +94 -0
- data/lib/ibex/runtime/cst/green/builder.rb +211 -0
- data/lib/ibex/runtime/cst/green/cache.rb +150 -0
- data/lib/ibex/runtime/cst/green/node.rb +78 -0
- data/lib/ibex/runtime/cst/green/token.rb +91 -0
- data/lib/ibex/runtime/cst/green/trivia.rb +36 -0
- data/lib/ibex/runtime/cst/incremental/blender.rb +233 -0
- data/lib/ibex/runtime/cst/incremental/lexed_syntax.rb +28 -0
- data/lib/ibex/runtime/cst/incremental/parse_memo.rb +95 -0
- data/lib/ibex/runtime/cst/incremental/relexer.rb +134 -0
- data/lib/ibex/runtime/cst/incremental/session.rb +229 -0
- data/lib/ibex/runtime/cst/incremental/token_memo.rb +66 -0
- data/lib/ibex/runtime/cst/kind.rb +133 -0
- data/lib/ibex/runtime/cst/parse_result.rb +41 -0
- data/lib/ibex/runtime/cst/rewriter.rb +75 -0
- data/lib/ibex/runtime/cst/serialize.rb +127 -0
- data/lib/ibex/runtime/cst/serialized_tree.rb +44 -0
- data/lib/ibex/runtime/cst/source_text.rb +112 -0
- data/lib/ibex/runtime/cst/syntax_node.rb +432 -0
- data/lib/ibex/runtime/cst/syntax_token.rb +160 -0
- data/lib/ibex/runtime/cst/text_edit.rb +77 -0
- data/lib/ibex/runtime/cst/typed_node.rb +87 -0
- data/lib/ibex/runtime/cst/validator.rb +428 -0
- data/lib/ibex/runtime/cst.rb +38 -0
- data/lib/ibex/runtime/event.rb +44 -0
- data/lib/ibex/runtime/event_jsonl_tracer.rb +37 -0
- data/lib/ibex/runtime/event_sanitizer.rb +273 -0
- data/lib/ibex/runtime/generated_lexer.rb +514 -0
- data/lib/ibex/runtime/jsonl_tracer.rb +75 -0
- data/lib/ibex/runtime/lexer_input.rb +107 -0
- data/lib/ibex/runtime/location_span.rb +114 -0
- data/lib/ibex/runtime/observation.rb +82 -0
- data/lib/ibex/runtime/parser.rb +3027 -0
- data/lib/ibex/runtime/parser_sync_recovery.rb +108 -0
- data/lib/ibex/runtime/repair.rb +126 -0
- data/lib/ibex/runtime/repair_priority_queue.rb +60 -0
- data/lib/ibex/runtime/repair_search.rb +318 -0
- data/lib/ibex/runtime/resource_limits.rb +64 -0
- data/lib/ibex/runtime/table_format.rb +11 -0
- data/lib/ibex/runtime/version.rb +7 -0
- data/lib/ibex/runtime.rb +27 -0
- data/lib/ibex/tables/compact.rb +186 -0
- data/lib/ibex/tables/compact_actions.rb +135 -0
- data/lib/ibex/tables/compact_productions.rb +167 -0
- data/sig/ibex/runtime/ast_data.rbs +12 -0
- data/sig/ibex/runtime/cst/annotation.rbs +13 -0
- data/sig/ibex/runtime/cst/cursor.rbs +34 -0
- data/sig/ibex/runtime/cst/diff.rbs +29 -0
- data/sig/ibex/runtime/cst/editing.rbs +23 -0
- data/sig/ibex/runtime/cst/editor.rbs +43 -0
- data/sig/ibex/runtime/cst/green/builder.rbs +84 -0
- data/sig/ibex/runtime/cst/green/cache.rbs +60 -0
- data/sig/ibex/runtime/cst/green/node.rbs +49 -0
- data/sig/ibex/runtime/cst/green/token.rbs +59 -0
- data/sig/ibex/runtime/cst/green/trivia.rbs +29 -0
- data/sig/ibex/runtime/cst/incremental/blender.rbs +114 -0
- data/sig/ibex/runtime/cst/incremental/lexed_syntax.rbs +20 -0
- data/sig/ibex/runtime/cst/incremental/parse_memo.rbs +59 -0
- data/sig/ibex/runtime/cst/incremental/relexer.rbs +54 -0
- data/sig/ibex/runtime/cst/incremental/session.rbs +89 -0
- data/sig/ibex/runtime/cst/incremental/token_memo.rbs +31 -0
- data/sig/ibex/runtime/cst/kind.rbs +93 -0
- data/sig/ibex/runtime/cst/parse_result.rbs +35 -0
- data/sig/ibex/runtime/cst/rewriter.rbs +31 -0
- data/sig/ibex/runtime/cst/serialize.rbs +39 -0
- data/sig/ibex/runtime/cst/serialized_tree.rbs +34 -0
- data/sig/ibex/runtime/cst/source_text.rbs +51 -0
- data/sig/ibex/runtime/cst/syntax_node.rbs +195 -0
- data/sig/ibex/runtime/cst/syntax_token.rbs +112 -0
- data/sig/ibex/runtime/cst/text_edit.rbs +33 -0
- data/sig/ibex/runtime/cst/typed_node.rbs +50 -0
- data/sig/ibex/runtime/cst/validator.rbs +108 -0
- data/sig/ibex/runtime/cst.rbs +9 -0
- data/sig/ibex/runtime/event.rbs +26 -0
- data/sig/ibex/runtime/event_jsonl_tracer.rbs +25 -0
- data/sig/ibex/runtime/event_sanitizer.rbs +92 -0
- data/sig/ibex/runtime/generated_lexer.rbs +169 -0
- data/sig/ibex/runtime/jsonl_tracer.rbs +42 -0
- data/sig/ibex/runtime/lexer_input.rbs +44 -0
- data/sig/ibex/runtime/location_span.rbs +64 -0
- data/sig/ibex/runtime/observation.rbs +35 -0
- data/sig/ibex/runtime/parser.rbs +926 -0
- data/sig/ibex/runtime/parser_sync_recovery.rbs +60 -0
- data/sig/ibex/runtime/repair.rbs +92 -0
- data/sig/ibex/runtime/repair_priority_queue.rbs +27 -0
- data/sig/ibex/runtime/repair_search.rbs +114 -0
- data/sig/ibex/runtime/resource_limits.rbs +39 -0
- data/sig/ibex/runtime/table_format.rbs +11 -0
- data/sig/ibex/runtime/version.rbs +7 -0
- data/sig/ibex/runtime.rbs +6 -0
- data/sig/ibex/tables/compact.rbs +70 -0
- data/sig/ibex/tables/compact_actions.rbs +57 -0
- data/sig/ibex/tables/compact_productions.rbs +68 -0
- metadata +144 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/kind.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Flags cached on Green elements and propagated by Green nodes.
|
|
7
|
+
module Flags
|
|
8
|
+
CONTAINS_ERROR: Integer
|
|
9
|
+
|
|
10
|
+
CONTAINS_MISSING: Integer
|
|
11
|
+
|
|
12
|
+
CONTAINS_SKIPPED: Integer
|
|
13
|
+
|
|
14
|
+
HAS_ANNOTATION: Integer
|
|
15
|
+
|
|
16
|
+
SYNTHETIC: Integer
|
|
17
|
+
|
|
18
|
+
INCOMPLETE_INPUT: Integer
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Grammar-specific integer kind names and interval predicates.
|
|
22
|
+
class Kind
|
|
23
|
+
type kind_map = Hash[String, Integer]
|
|
24
|
+
|
|
25
|
+
type field_slot = Integer | { index: Integer, extraction: Symbol }
|
|
26
|
+
|
|
27
|
+
type slot = { node_kind: Integer, node_name: String, fields: Hash[String, field_slot] }
|
|
28
|
+
|
|
29
|
+
type metadata = { names: Array[String], terminal_range: Array[Integer], nonterminal_range: Array[Integer], named: kind_map, named_nonterminals: Hash[Integer, Integer], trivia: kind_map, synthetic: kind_map }
|
|
30
|
+
|
|
31
|
+
@field_slots: Hash[Integer, Hash[String, field_slot]]
|
|
32
|
+
|
|
33
|
+
@synthetic: Hash[String, Integer]
|
|
34
|
+
|
|
35
|
+
@trivia: Hash[String, Integer]
|
|
36
|
+
|
|
37
|
+
@named_nonterminals: Hash[Integer, Integer]
|
|
38
|
+
|
|
39
|
+
@named: Hash[String, Integer]
|
|
40
|
+
|
|
41
|
+
@nonterminal_range: Array[Integer]
|
|
42
|
+
|
|
43
|
+
@terminal_range: Array[Integer]
|
|
44
|
+
|
|
45
|
+
@names: Array[String]
|
|
46
|
+
|
|
47
|
+
# @rbs (metadata metadata, ?slots: Hash[Integer, slot]) -> void
|
|
48
|
+
def initialize: (metadata metadata, ?slots: Hash[Integer, slot]) -> void
|
|
49
|
+
|
|
50
|
+
# @rbs (Integer kind) -> String
|
|
51
|
+
def name: (Integer kind) -> String
|
|
52
|
+
|
|
53
|
+
# @rbs (String | Symbol name) -> Integer
|
|
54
|
+
def fetch: (String | Symbol name) -> Integer
|
|
55
|
+
|
|
56
|
+
# @rbs (Integer kind) -> bool
|
|
57
|
+
def terminal?: (Integer kind) -> bool
|
|
58
|
+
|
|
59
|
+
# @rbs (Integer kind) -> bool
|
|
60
|
+
def nonterminal?: (Integer kind) -> bool
|
|
61
|
+
|
|
62
|
+
# @rbs (Integer kind) -> bool
|
|
63
|
+
def trivia?: (Integer kind) -> bool
|
|
64
|
+
|
|
65
|
+
# @rbs (Integer kind) -> bool
|
|
66
|
+
def error?: (Integer kind) -> bool
|
|
67
|
+
|
|
68
|
+
# Map a named node kind to its physical nonterminal kind.
|
|
69
|
+
# @rbs (Integer kind) -> Integer
|
|
70
|
+
def nonterminal_of: (Integer kind) -> Integer
|
|
71
|
+
|
|
72
|
+
# Return the named field-to-physical-slot mapping for a kind.
|
|
73
|
+
# @rbs (Integer kind) -> Hash[String, field_slot]
|
|
74
|
+
def fields: (Integer kind) -> Hash[String, field_slot]
|
|
75
|
+
|
|
76
|
+
# Return the serialization-safe kind metadata.
|
|
77
|
+
# @rbs () -> metadata
|
|
78
|
+
def to_h: () -> metadata
|
|
79
|
+
|
|
80
|
+
private
|
|
81
|
+
|
|
82
|
+
# : Hash[String, field_slot]
|
|
83
|
+
EMPTY_FIELDS: untyped
|
|
84
|
+
|
|
85
|
+
# @rbs (Hash[Integer, slot] slots) -> Hash[Integer, Hash[String, field_slot]]
|
|
86
|
+
def build_field_slots: (Hash[Integer, slot] slots) -> Hash[Integer, Hash[String, field_slot]]
|
|
87
|
+
|
|
88
|
+
# @rbs (Array[Integer] range, Integer kind) -> bool
|
|
89
|
+
def within?: (Array[Integer] range, Integer kind) -> bool
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/parse_result.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Immutable result returned by syntax-aware parser entry points.
|
|
7
|
+
class ParseResult
|
|
8
|
+
attr_reader value: untyped
|
|
9
|
+
|
|
10
|
+
attr_reader syntax_root: SyntaxNode
|
|
11
|
+
|
|
12
|
+
attr_reader diagnostics: Array[untyped]
|
|
13
|
+
|
|
14
|
+
# @rbs (value: untyped, syntax_root: SyntaxNode, diagnostics: Array[untyped]) -> void
|
|
15
|
+
def initialize: (value: untyped, syntax_root: SyntaxNode, diagnostics: Array[untyped]) -> void
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Syntax-only result used by incremental sessions.
|
|
19
|
+
class SyntaxResult
|
|
20
|
+
attr_reader syntax_root: SyntaxNode
|
|
21
|
+
|
|
22
|
+
attr_reader diagnostics: Array[untyped]
|
|
23
|
+
|
|
24
|
+
attr_reader reused_ratio: Float
|
|
25
|
+
|
|
26
|
+
# @rbs (syntax_root: SyntaxNode, diagnostics: Array[untyped], reused_ratio: Float) -> void
|
|
27
|
+
def initialize: (syntax_root: SyntaxNode, diagnostics: Array[untyped], reused_ratio: Float) -> void
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
ParseResult: untyped
|
|
32
|
+
|
|
33
|
+
SyntaxResult: untyped
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/rewriter.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Bottom-up syntax rewriter with kind-name dispatch.
|
|
7
|
+
class SyntaxRewriter
|
|
8
|
+
type element = SyntaxNode | SyntaxToken
|
|
9
|
+
|
|
10
|
+
type green = GreenNode | GreenToken
|
|
11
|
+
|
|
12
|
+
# @rbs (SyntaxNode root) -> SyntaxNode
|
|
13
|
+
def rewrite: (SyntaxNode root) -> SyntaxNode
|
|
14
|
+
|
|
15
|
+
# @rbs (element element) -> green
|
|
16
|
+
def visit: (element element) -> green
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
# @rbs (SyntaxNode node) -> GreenNode
|
|
21
|
+
def visit_children: (SyntaxNode node) -> GreenNode
|
|
22
|
+
|
|
23
|
+
# @rbs (element original, green rewritten) -> element
|
|
24
|
+
def rewritten_view: (element original, green rewritten) -> element
|
|
25
|
+
|
|
26
|
+
# @rbs (String name) -> String
|
|
27
|
+
def method_name: (String name) -> String
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/serialize.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
class SerializationError < StandardError
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Stable JSON serialization for `ibex_cst` schema version 1.
|
|
10
|
+
module Serialize
|
|
11
|
+
SCHEMA_VERSION: Integer
|
|
12
|
+
|
|
13
|
+
# @rbs (SyntaxNode | SerializedTree value, ?grammar_digest: String?, ?table_format: Integer?,
|
|
14
|
+
# ?state_count: Integer?, ?production_count: Integer?, ?memo: ParseMemo?) -> String
|
|
15
|
+
def self?.dump: (SyntaxNode | SerializedTree value, ?grammar_digest: String?, ?table_format: Integer?, ?state_count: Integer?, ?production_count: Integer?, ?memo: ParseMemo?) -> String
|
|
16
|
+
|
|
17
|
+
# @rbs (String source, ?grammar_digest: String?, ?state_count: Integer?,
|
|
18
|
+
# ?production_count: Integer?) -> SerializedTree
|
|
19
|
+
def self?.load: (String source, ?grammar_digest: String?, ?state_count: Integer?, ?production_count: Integer?) -> SerializedTree
|
|
20
|
+
|
|
21
|
+
# @rbs (SyntaxNode | SerializedTree value, grammar_digest: String?, table_format: Integer?,
|
|
22
|
+
# state_count: Integer?, production_count: Integer?, memo: ParseMemo?) -> SerializedTree
|
|
23
|
+
def self?.serialization_tree: (SyntaxNode | SerializedTree value, grammar_digest: String?, table_format: Integer?, state_count: Integer?, production_count: Integer?, memo: ParseMemo?) -> SerializedTree
|
|
24
|
+
|
|
25
|
+
# @rbs (Kind kinds) -> Hash[String, untyped]
|
|
26
|
+
def self?.kinds_document: (Kind kinds) -> Hash[String, untyped]
|
|
27
|
+
|
|
28
|
+
# @rbs (GreenNode | GreenToken element) -> Hash[String, untyped]
|
|
29
|
+
def self?.element_document: (GreenNode | GreenToken element) -> Hash[String, untyped]
|
|
30
|
+
|
|
31
|
+
# @rbs (GreenTrivia trivia) -> Array[untyped]
|
|
32
|
+
def self?.trivia_document: (GreenTrivia trivia) -> Array[untyped]
|
|
33
|
+
|
|
34
|
+
# @rbs (String text) -> (String | Hash[String, String])
|
|
35
|
+
def self?.encode_text: (String text) -> (String | Hash[String, String])
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/serialized_tree.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Validated CST serialization document and its reconstructed Red root.
|
|
7
|
+
class SerializedTree
|
|
8
|
+
attr_reader grammar_digest: String
|
|
9
|
+
|
|
10
|
+
attr_reader table_format: Integer
|
|
11
|
+
|
|
12
|
+
attr_reader state_count: Integer
|
|
13
|
+
|
|
14
|
+
attr_reader production_count: Integer
|
|
15
|
+
|
|
16
|
+
attr_reader trivia_policy: Symbol
|
|
17
|
+
|
|
18
|
+
attr_reader kinds: Kind
|
|
19
|
+
|
|
20
|
+
attr_reader green_root: GreenNode
|
|
21
|
+
|
|
22
|
+
attr_reader memo: ParseMemo?
|
|
23
|
+
|
|
24
|
+
# @rbs (grammar_digest: String, table_format: Integer, state_count: Integer,
|
|
25
|
+
# production_count: Integer, trivia_policy: Symbol, kinds: Kind, green_root: GreenNode,
|
|
26
|
+
# ?memo: ParseMemo?) -> void
|
|
27
|
+
def initialize: (grammar_digest: String, table_format: Integer, state_count: Integer, production_count: Integer, trivia_policy: Symbol, kinds: Kind, green_root: GreenNode, ?memo: ParseMemo?) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs () -> SyntaxNode
|
|
30
|
+
def syntax_root: () -> SyntaxNode
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/source_text.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Immutable byte-oriented source with lazy line/column conversion.
|
|
7
|
+
class SourceText
|
|
8
|
+
type position = [ Integer, Integer ]
|
|
9
|
+
|
|
10
|
+
attr_reader text: String
|
|
11
|
+
|
|
12
|
+
attr_reader file: String?
|
|
13
|
+
|
|
14
|
+
# @rbs (String text, ?file: String?) -> void
|
|
15
|
+
def initialize: (String text, ?file: String?) -> void
|
|
16
|
+
|
|
17
|
+
# @rbs () -> Integer
|
|
18
|
+
def bytesize: () -> Integer
|
|
19
|
+
|
|
20
|
+
# Apply non-overlapping byte edits expressed against this source.
|
|
21
|
+
# @rbs (Array[TextEdit] edits) -> SourceText
|
|
22
|
+
def apply: (Array[TextEdit] edits) -> SourceText
|
|
23
|
+
|
|
24
|
+
# Return one-based line and Unicode-scalar column for a byte offset.
|
|
25
|
+
# Invalid UTF-8 bytes count as one replacement scalar each.
|
|
26
|
+
# @rbs (Integer offset) -> position
|
|
27
|
+
def position: (Integer offset) -> position
|
|
28
|
+
|
|
29
|
+
# @rbs (Range[Integer] range) -> Ibex::Location
|
|
30
|
+
def location: (Range[Integer] range) -> Ibex::Location
|
|
31
|
+
|
|
32
|
+
# @rbs (Integer line) -> String
|
|
33
|
+
def line_text: (Integer line) -> String
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
# @rbs () -> Array[Integer]
|
|
38
|
+
def build_line_starts: () -> Array[Integer]
|
|
39
|
+
|
|
40
|
+
# @rbs (Integer offset) -> void
|
|
41
|
+
def validate_offset: (Integer offset) -> void
|
|
42
|
+
|
|
43
|
+
# @rbs (Range[Integer] range) -> position
|
|
44
|
+
def normalized_range: (Range[Integer] range) -> position
|
|
45
|
+
|
|
46
|
+
# @rbs (String bytes) -> Integer
|
|
47
|
+
def unicode_scalar_length: (String bytes) -> Integer
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/syntax_node.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Lazy Red navigation facade for one Green node occurrence.
|
|
7
|
+
class SyntaxNode
|
|
8
|
+
include Enumerable[element]
|
|
9
|
+
|
|
10
|
+
type element = SyntaxNode | SyntaxToken
|
|
11
|
+
|
|
12
|
+
attr_reader green: GreenNode
|
|
13
|
+
|
|
14
|
+
attr_reader parent: SyntaxNode?
|
|
15
|
+
|
|
16
|
+
attr_reader index: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader offset: Integer
|
|
19
|
+
|
|
20
|
+
attr_reader kinds: Kind
|
|
21
|
+
|
|
22
|
+
attr_reader trivia_policy: Symbol
|
|
23
|
+
|
|
24
|
+
attr_reader source_text: SourceText
|
|
25
|
+
|
|
26
|
+
# @rbs (green: GreenNode, kinds: Kind, ?parent: SyntaxNode?, ?index: Integer, ?offset: Integer,
|
|
27
|
+
# ?trivia_policy: Symbol, ?source_text: SourceText?) -> void
|
|
28
|
+
def initialize: (green: GreenNode, kinds: Kind, ?parent: SyntaxNode?, ?index: Integer, ?offset: Integer, ?trivia_policy: Symbol, ?source_text: SourceText?) -> void
|
|
29
|
+
|
|
30
|
+
# @rbs () -> Integer
|
|
31
|
+
def kind: () -> Integer
|
|
32
|
+
|
|
33
|
+
# @rbs () -> String
|
|
34
|
+
def kind_name: () -> String
|
|
35
|
+
|
|
36
|
+
# Compatibility name for the physical grammar symbol.
|
|
37
|
+
# @rbs () -> String
|
|
38
|
+
def symbol: () -> String
|
|
39
|
+
|
|
40
|
+
# Green kinds replace occurrence-local production ids. Keep the legacy
|
|
41
|
+
# key and reader with the historical synthetic sentinel.
|
|
42
|
+
# @rbs () -> Integer
|
|
43
|
+
def production_id: () -> Integer
|
|
44
|
+
|
|
45
|
+
# @rbs () -> Array[element]
|
|
46
|
+
def children: () -> Array[element]
|
|
47
|
+
|
|
48
|
+
def each: () -> Enumerator[element, self]
|
|
49
|
+
| () { (element) -> void } -> self
|
|
50
|
+
|
|
51
|
+
# @rbs (Integer child_index) -> element
|
|
52
|
+
def child_at: (Integer child_index) -> element
|
|
53
|
+
|
|
54
|
+
# @rbs () -> Array[SyntaxNode]
|
|
55
|
+
def child_nodes: () -> Array[SyntaxNode]
|
|
56
|
+
|
|
57
|
+
# @rbs () -> Array[SyntaxToken]
|
|
58
|
+
def tokens: () -> Array[SyntaxToken]
|
|
59
|
+
|
|
60
|
+
# @rbs () -> SyntaxToken?
|
|
61
|
+
def first_token: () -> SyntaxToken?
|
|
62
|
+
|
|
63
|
+
# @rbs () -> SyntaxToken?
|
|
64
|
+
def last_token: () -> SyntaxToken?
|
|
65
|
+
|
|
66
|
+
# @rbs () -> element?
|
|
67
|
+
def next_sibling: () -> element?
|
|
68
|
+
|
|
69
|
+
# @rbs () -> element?
|
|
70
|
+
def prev_sibling: () -> element?
|
|
71
|
+
|
|
72
|
+
# @rbs () -> Enumerator[SyntaxNode, void]
|
|
73
|
+
def ancestors: () -> Enumerator[SyntaxNode, void]
|
|
74
|
+
|
|
75
|
+
# @rbs () -> Enumerator[element, void]
|
|
76
|
+
def descendants: () -> Enumerator[element, void]
|
|
77
|
+
|
|
78
|
+
# @rbs () -> SyntaxNode
|
|
79
|
+
def root: () -> SyntaxNode
|
|
80
|
+
|
|
81
|
+
# @rbs () -> Range[Integer]
|
|
82
|
+
def full_span: () -> Range[Integer]
|
|
83
|
+
|
|
84
|
+
# @rbs () -> Range[Integer]
|
|
85
|
+
def span: () -> Range[Integer]
|
|
86
|
+
|
|
87
|
+
# @rbs () -> Ibex::Location
|
|
88
|
+
def location: () -> Ibex::Location
|
|
89
|
+
|
|
90
|
+
# @rbs () -> String
|
|
91
|
+
def full_text: () -> String
|
|
92
|
+
|
|
93
|
+
alias to_source full_text
|
|
94
|
+
|
|
95
|
+
# @rbs () -> String
|
|
96
|
+
def text: () -> String
|
|
97
|
+
|
|
98
|
+
# Compatibility view of file-tail trivia. The Red/Green layout owns it
|
|
99
|
+
# on EOF rather than on the start node.
|
|
100
|
+
# @rbs () -> Array[GreenTrivia]
|
|
101
|
+
def trailing_trivia: () -> Array[GreenTrivia]
|
|
102
|
+
|
|
103
|
+
# @rbs () -> bool
|
|
104
|
+
def error?: () -> bool
|
|
105
|
+
|
|
106
|
+
# @rbs () -> bool
|
|
107
|
+
def missing?: () -> bool
|
|
108
|
+
|
|
109
|
+
# @rbs () -> bool
|
|
110
|
+
def contains_error?: () -> bool
|
|
111
|
+
|
|
112
|
+
# @rbs () -> bool
|
|
113
|
+
def incomplete_input?: () -> bool
|
|
114
|
+
|
|
115
|
+
# @rbs (GreenNode | GreenToken | SyntaxNode | SyntaxToken replacement) -> SyntaxNode
|
|
116
|
+
def replace_with: (GreenNode | GreenToken | SyntaxNode | SyntaxToken replacement) -> SyntaxNode
|
|
117
|
+
|
|
118
|
+
# @rbs (Integer child_index, GreenNode | GreenToken | SyntaxNode | SyntaxToken child) -> SyntaxNode
|
|
119
|
+
def with_child: (Integer child_index, GreenNode | GreenToken | SyntaxNode | SyntaxToken child) -> SyntaxNode
|
|
120
|
+
|
|
121
|
+
# @rbs (Integer child_index, GreenNode | GreenToken | SyntaxNode | SyntaxToken child) -> SyntaxNode
|
|
122
|
+
def insert_child: (Integer child_index, GreenNode | GreenToken | SyntaxNode | SyntaxToken child) -> SyntaxNode
|
|
123
|
+
|
|
124
|
+
# @rbs (Integer child_index) -> SyntaxNode
|
|
125
|
+
def remove_child: (Integer child_index) -> SyntaxNode
|
|
126
|
+
|
|
127
|
+
# @rbs (SyntaxAnnotation annotation) -> SyntaxNode
|
|
128
|
+
def annotate: (SyntaxAnnotation annotation) -> SyntaxNode
|
|
129
|
+
|
|
130
|
+
# @rbs (SyntaxAnnotation annotation) -> Enumerator[SyntaxNode, void]
|
|
131
|
+
def annotated: (SyntaxAnnotation annotation) -> Enumerator[SyntaxNode, void]
|
|
132
|
+
|
|
133
|
+
# Find the full-span-owning token for a byte offset.
|
|
134
|
+
# @rbs (Integer source_offset) -> SyntaxToken?
|
|
135
|
+
def token_at: (Integer source_offset) -> SyntaxToken?
|
|
136
|
+
|
|
137
|
+
# Return the smallest syntax element whose full span covers a range.
|
|
138
|
+
# @rbs (Range[Integer] range) -> element?
|
|
139
|
+
def covering: (Range[Integer] range) -> element?
|
|
140
|
+
|
|
141
|
+
# @rbs (kind: Integer | String | Symbol) -> Enumerator[element, void]
|
|
142
|
+
def find: (kind: Integer | String | Symbol) -> Enumerator[element, void]
|
|
143
|
+
|
|
144
|
+
# @rbs () -> Enumerator[element, void]
|
|
145
|
+
# @rbs () { (element) -> void } -> self
|
|
146
|
+
def each_error: () -> Enumerator[element, void]
|
|
147
|
+
| () { (element) -> void } -> self
|
|
148
|
+
|
|
149
|
+
# @rbs () { (Symbol, element) -> void } -> self
|
|
150
|
+
def walk: () { (Symbol, element) -> void } -> self
|
|
151
|
+
|
|
152
|
+
# @rbs () -> Cursor
|
|
153
|
+
def cursor: () -> Cursor
|
|
154
|
+
|
|
155
|
+
# @rbs (SyntaxNode other) -> bool
|
|
156
|
+
def same_node?: (SyntaxNode other) -> bool
|
|
157
|
+
|
|
158
|
+
# @rbs (untyped other) -> bool
|
|
159
|
+
def ==: (untyped other) -> bool
|
|
160
|
+
|
|
161
|
+
# @rbs () -> Array[element]
|
|
162
|
+
def deconstruct: () -> Array[element]
|
|
163
|
+
|
|
164
|
+
# @rbs (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
165
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
166
|
+
|
|
167
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
168
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
169
|
+
|
|
170
|
+
# @rbs (Integer source_offset) -> element?
|
|
171
|
+
def child_covering_offset: (Integer source_offset) -> element?
|
|
172
|
+
|
|
173
|
+
private
|
|
174
|
+
|
|
175
|
+
# @rbs () -> SyntaxToken?
|
|
176
|
+
def compatibility_eof: () -> SyntaxToken?
|
|
177
|
+
|
|
178
|
+
# @rbs () -> String
|
|
179
|
+
def root_source: () -> String
|
|
180
|
+
|
|
181
|
+
# @rbs (Integer child_index) -> Integer
|
|
182
|
+
def offset_for: (Integer child_index) -> Integer
|
|
183
|
+
|
|
184
|
+
# @rbs () -> void
|
|
185
|
+
def ensure_coordinates!: () -> void
|
|
186
|
+
|
|
187
|
+
# @rbs (Range[Integer] range) -> [Integer, Integer]
|
|
188
|
+
def normalize_range: (Range[Integer] range) -> [ Integer, Integer ]
|
|
189
|
+
|
|
190
|
+
# @rbs (Integer start_offset, Integer end_offset) -> bool
|
|
191
|
+
def covers_offsets?: (Integer start_offset, Integer end_offset) -> bool
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/syntax_token.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Raised when source-coordinate APIs are used on a trivia-dropped tree.
|
|
7
|
+
class TriviaDroppedError < StandardError
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Lightweight Red facade for one Green token occurrence.
|
|
11
|
+
class SyntaxToken
|
|
12
|
+
attr_reader green: GreenToken
|
|
13
|
+
|
|
14
|
+
attr_reader parent: SyntaxNode
|
|
15
|
+
|
|
16
|
+
attr_reader index: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader offset: Integer
|
|
19
|
+
|
|
20
|
+
# @rbs (green: GreenToken, parent: SyntaxNode, index: Integer, offset: Integer) -> void
|
|
21
|
+
def initialize: (green: GreenToken, parent: SyntaxNode, index: Integer, offset: Integer) -> void
|
|
22
|
+
|
|
23
|
+
# @rbs () -> Integer
|
|
24
|
+
def kind: () -> Integer
|
|
25
|
+
|
|
26
|
+
# @rbs () -> String
|
|
27
|
+
def kind_name: () -> String
|
|
28
|
+
|
|
29
|
+
# @rbs () -> String
|
|
30
|
+
def symbol: () -> String
|
|
31
|
+
|
|
32
|
+
# @rbs () -> String
|
|
33
|
+
def text: () -> String
|
|
34
|
+
|
|
35
|
+
# Compatibility projection for the legacy token API. Semantic lexer
|
|
36
|
+
# values remain on the parser value path; syntax exposes source bytes.
|
|
37
|
+
# @rbs () -> String
|
|
38
|
+
def value: () -> String
|
|
39
|
+
|
|
40
|
+
# @rbs () -> Array[GreenTrivia]
|
|
41
|
+
def leading_trivia: () -> Array[GreenTrivia]
|
|
42
|
+
|
|
43
|
+
# @rbs () -> Array[untyped]
|
|
44
|
+
def children: () -> Array[untyped]
|
|
45
|
+
|
|
46
|
+
# @rbs () -> String
|
|
47
|
+
def full_text: () -> String
|
|
48
|
+
|
|
49
|
+
alias to_source full_text
|
|
50
|
+
|
|
51
|
+
# @rbs () -> Range[Integer]
|
|
52
|
+
def full_span: () -> Range[Integer]
|
|
53
|
+
|
|
54
|
+
# @rbs () -> Range[Integer]
|
|
55
|
+
def span: () -> Range[Integer]
|
|
56
|
+
|
|
57
|
+
# @rbs () -> Ibex::Location
|
|
58
|
+
def location: () -> Ibex::Location
|
|
59
|
+
|
|
60
|
+
# @rbs () -> bool
|
|
61
|
+
def error?: () -> bool
|
|
62
|
+
|
|
63
|
+
# @rbs () -> bool
|
|
64
|
+
def missing?: () -> bool
|
|
65
|
+
|
|
66
|
+
# @rbs () -> bool
|
|
67
|
+
def contains_error?: () -> bool
|
|
68
|
+
|
|
69
|
+
# @rbs (GreenNode | GreenToken | SyntaxNode | SyntaxToken replacement) -> SyntaxNode
|
|
70
|
+
def replace_with: (GreenNode | GreenToken | SyntaxNode | SyntaxToken replacement) -> SyntaxNode
|
|
71
|
+
|
|
72
|
+
# @rbs (String value) -> SyntaxNode
|
|
73
|
+
def with_text: (String value) -> SyntaxNode
|
|
74
|
+
|
|
75
|
+
# @rbs (Array[GreenTrivia] trivia) -> SyntaxNode
|
|
76
|
+
def with_leading: (Array[GreenTrivia] trivia) -> SyntaxNode
|
|
77
|
+
|
|
78
|
+
# @rbs (Array[GreenTrivia] trivia) -> SyntaxNode
|
|
79
|
+
def with_trailing: (Array[GreenTrivia] trivia) -> SyntaxNode
|
|
80
|
+
|
|
81
|
+
# @rbs () -> (SyntaxNode | SyntaxToken)?
|
|
82
|
+
def next_sibling: () -> (SyntaxNode | SyntaxToken)?
|
|
83
|
+
|
|
84
|
+
# @rbs () -> (SyntaxNode | SyntaxToken)?
|
|
85
|
+
def prev_sibling: () -> (SyntaxNode | SyntaxToken)?
|
|
86
|
+
|
|
87
|
+
# @rbs () -> SyntaxNode
|
|
88
|
+
def root: () -> SyntaxNode
|
|
89
|
+
|
|
90
|
+
# @rbs (SyntaxToken other) -> bool
|
|
91
|
+
def same_node?: (SyntaxToken other) -> bool
|
|
92
|
+
|
|
93
|
+
# @rbs (untyped other) -> bool
|
|
94
|
+
def ==: (untyped other) -> bool
|
|
95
|
+
|
|
96
|
+
# @rbs () -> Array[untyped]
|
|
97
|
+
def deconstruct: () -> Array[untyped]
|
|
98
|
+
|
|
99
|
+
# @rbs (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
100
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
101
|
+
|
|
102
|
+
# @rbs () -> Hash[Symbol, untyped]
|
|
103
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
104
|
+
|
|
105
|
+
private
|
|
106
|
+
|
|
107
|
+
# @rbs () -> void
|
|
108
|
+
def ensure_coordinates!: () -> void
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/text_edit.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# One byte-oriented source replacement.
|
|
7
|
+
class TextEdit
|
|
8
|
+
# Sort and merge adjacent edits while rejecting intersecting source ranges.
|
|
9
|
+
# All edits remain expressed against the unedited source.
|
|
10
|
+
# @rbs (Array[TextEdit] edits) -> Array[TextEdit]
|
|
11
|
+
def self.normalize: (Array[TextEdit] edits) -> Array[TextEdit]
|
|
12
|
+
|
|
13
|
+
# @rbs (Array[TextEdit] ordered) -> Array[TextEdit]
|
|
14
|
+
private def self.merge_adjacent: (Array[TextEdit] ordered) -> Array[TextEdit]
|
|
15
|
+
|
|
16
|
+
# @rbs (Array[TextEdit] normalized, TextEdit previous, TextEdit edit) -> void
|
|
17
|
+
private def self.merge_with_previous: (Array[TextEdit] normalized, TextEdit previous, TextEdit edit) -> void
|
|
18
|
+
|
|
19
|
+
attr_reader start: Integer
|
|
20
|
+
|
|
21
|
+
attr_reader delete_length: Integer
|
|
22
|
+
|
|
23
|
+
attr_reader insert_text: String
|
|
24
|
+
|
|
25
|
+
# @rbs (start: Integer, delete_length: Integer, insert_text: String) -> void
|
|
26
|
+
def initialize: (start: Integer, delete_length: Integer, insert_text: String) -> void
|
|
27
|
+
|
|
28
|
+
# @rbs () -> Range[Integer]
|
|
29
|
+
def range: () -> Range[Integer]
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Generated from lib/ibex/runtime/cst/typed_node.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module Runtime
|
|
5
|
+
module CST
|
|
6
|
+
# Grammar-generated typed view over one Red syntax node.
|
|
7
|
+
class TypedNode
|
|
8
|
+
type element = SyntaxNode | SyntaxToken
|
|
9
|
+
|
|
10
|
+
attr_reader node: SyntaxNode
|
|
11
|
+
|
|
12
|
+
# @rbs (SyntaxNode node) -> void
|
|
13
|
+
def initialize: (SyntaxNode node) -> void
|
|
14
|
+
|
|
15
|
+
# @rbs () -> Integer
|
|
16
|
+
def kind: () -> Integer
|
|
17
|
+
|
|
18
|
+
# @rbs () -> String
|
|
19
|
+
def kind_name: () -> String
|
|
20
|
+
|
|
21
|
+
# @rbs (Integer index) -> element
|
|
22
|
+
def child_at_slot: (Integer index) -> element
|
|
23
|
+
|
|
24
|
+
# @rbs (Integer index) -> SyntaxNode
|
|
25
|
+
def node_at_slot: (Integer index) -> SyntaxNode
|
|
26
|
+
|
|
27
|
+
# @rbs (Integer index) -> SyntaxToken
|
|
28
|
+
def token_at_slot: (Integer index) -> SyntaxToken
|
|
29
|
+
|
|
30
|
+
# @rbs () -> Array[element]
|
|
31
|
+
def deconstruct: () -> Array[element]
|
|
32
|
+
|
|
33
|
+
# @rbs (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
34
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
35
|
+
|
|
36
|
+
# @rbs () -> String
|
|
37
|
+
def to_source: () -> String
|
|
38
|
+
|
|
39
|
+
# Flatten a lowered repetition helper and enumerate elements or separators.
|
|
40
|
+
# @rbs (Integer index, separated: bool, ?separators: bool) -> Enumerator[element, void]
|
|
41
|
+
def list_items: (Integer index, separated: bool, ?separators: bool) -> Enumerator[element, void]
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
# @rbs (SyntaxNode current, Integer helper_kind, Array[element] result) -> void
|
|
46
|
+
def flatten_list: (SyntaxNode current, Integer helper_kind, Array[element] result) -> void
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|