1///|
2type Parser
3
4///|
5extern "js" fn ts_parser_new(ts : type TS
TS) -> type Parser
Parser =
6 #|(ts) => {
7 #| return new ts.Parser();
8 #|}
9
10///|
11extern "js" fn type Parser
Parser::is_null(self : type Parser
Parser) -> Bool
Bool =
12 #|() => {
13 #| return self === null || self === undefined;
14 #|}
15
16///|
17/// Create a new parser.
18pub fn type Parser
Parser::() -> Parser
Create a new parser.
new() -> type Parser
Parser {
19 () -> Parser
ts_parser_new(TS
ts)
20}
21
22///|
23pub fn (language : Language) -> Parser!LanguageError
parser(Language
language : type Language @tree_sitter_language.Language
Language) -> type Parser
Parser!type! LanguageError {
VersionMismatch(language_abi_version~ : Int, library_version~ : Int, min_compatible_version~ : Int)
}
LanguageError {
24 let Parser
parser = type Parser
Parser::() -> Parser
Create a new parser.
new()
25 Parser
parser.(self : Parser, language : Language) -> Unit!LanguageError
Set the language that the parser should use for parsing.
Returns a boolean indicating whether or not the language was successfully
assigned. True means assignment succeeded. False means there was a version
mismatch: the language was generated with an incompatible version of the
Tree-sitter CLI. Check the language's ABI version using
Language::abi_version and compare it to this library's LANGUAGE_VERSION
and MIN_COMPATIBLE_LANGUAGE_VERSION constants.
set_language!(Language
language)
26 return Parser
parser
27}
28
29///|
30extern "js" fn ts_parser_language(self : type Parser
Parser) -> type Language @tree_sitter_language.Language
Language =
31 #|(self) => {
32 #| return self.language;
33 #|}
34
35///|
36/// Get the parser's current language.
37pub fn type Parser
Parser::(self : Parser) -> Language?
Get the parser's current language.
language(Parser
self : type Parser
Parser) -> type Language @tree_sitter_language.Language
Language? {
38 (self : Parser) -> Language
ts_parser_language(Parser
self).(self : Language) -> Language?
to_option()
39}
40
41///|
42extern "js" fn ts_parser_set_language(
43 self : type Parser
Parser,
44 language : type Language @tree_sitter_language.Language
Language
45) -> Bool
Bool =
46 #|(self, language) => {
47 #| try {
48 #| self.setLanguage(language);
49 #| return true;
50 #| } catch (error) {
51 #| console.error("Error setting parser language:", error);
52 #| return false;
53 #| }
54 #|}
55
56///|
57type! LanguageError {
58 (language_abi_version~ : Int, library_version~ : Int, min_compatible_version~ : Int) -> LanguageError
VersionMismatch(
59 Int
language_abi_version~ : Int
Int,
60 Int
library_version~ : Int
Int,
61 Int
min_compatible_version~ : Int
Int
62 )
63}
64
65///|
66/// Set the language that the parser should use for parsing.
67///
68/// Returns a boolean indicating whether or not the language was successfully
69/// assigned. True means assignment succeeded. False means there was a version
70/// mismatch: the language was generated with an incompatible version of the
71/// Tree-sitter CLI. Check the language's ABI version using Language::abi_version
72/// and compare it to this library's `LANGUAGE_VERSION` and
73/// `MIN_COMPATIBLE_LANGUAGE_VERSION` constants.
74pub fn type Parser
Parser::(self : Parser, language : Language) -> Unit!LanguageError
Set the language that the parser should use for parsing.
Returns a boolean indicating whether or not the language was successfully
assigned. True means assignment succeeded. False means there was a version
mismatch: the language was generated with an incompatible version of the
Tree-sitter CLI. Check the language's ABI version using
Language::abi_version and compare it to this library's LANGUAGE_VERSION
and MIN_COMPATIBLE_LANGUAGE_VERSION constants.
set_language(
75 Parser
self : type Parser
Parser,
76 Language
language : type Language @tree_sitter_language.Language
Language
77) -> Unit
Unit!type! LanguageError {
VersionMismatch(language_abi_version~ : Int, library_version~ : Int, min_compatible_version~ : Int)
}
LanguageError {
78 let Bool
succeed = (self : Parser, language : Language) -> Bool
ts_parser_set_language(Parser
self, Language
language)
79 if (x : Bool) -> Bool
Performs logical negation on a boolean value.
Parameters:
value : The boolean value to negate.
Returns the logical NOT of the input value: true if the input is false,
and false if the input is true.
Example:
test "not" {
inspect!(not(true), content="false")
inspect!(not(false), content="true")
}
not(Bool
succeed) {
80 raise (language_abi_version~ : Int, library_version~ : Int, min_compatible_version~ : Int) -> LanguageError
VersionMismatch(
81 Int
language_abi_version=Language
language.(self : Language) -> Int
Get the ABI version number for this language. This version number is used
to ensure that languages were generated by a compatible version of
Tree-sitter.
See also Parser::set_language.
abi_version(),
82 Int
library_version=Int
The latest ABI version that is supported by the current version of the
library. When Languages are generated by the Tree-sitter CLI, they are
assigned an ABI version number that corresponds to the current CLI version.
The Tree-sitter library is generally backwards-compatible with languages
generated using older CLI versions, but is not forwards-compatible.
LANGUAGE_VERSION,
83 Int
min_compatible_version=Int
The earliest ABI version that is supported by the current version of the
library.
MIN_COMPATIBLE_LANGUAGE_VERSION,
84 )
85 }
86}
87
88///|
89/// The latest ABI version that is supported by the current version of the
90/// library. When Languages are generated by the Tree-sitter CLI, they are
91/// assigned an ABI version number that corresponds to the current CLI version.
92/// The Tree-sitter library is generally backwards-compatible with languages
93/// generated using older CLI versions, but is not forwards-compatible.
94pub const Int
The latest ABI version that is supported by the current version of the
library. When Languages are generated by the Tree-sitter CLI, they are
assigned an ABI version number that corresponds to the current CLI version.
The Tree-sitter library is generally backwards-compatible with languages
generated using older CLI versions, but is not forwards-compatible.
LANGUAGE_VERSION = 15
95
96///|
97///
98/// The earliest ABI version that is supported by the current version of the
99/// library.
100pub const Int
The earliest ABI version that is supported by the current version of the
library.
MIN_COMPATIBLE_LANGUAGE_VERSION = 13
101
102///|
103extern "js" fn ts_parser_included_ranges(self : type Parser
Parser) -> type Array[T]
Array[type Range FixedArray[UInt]
Range] =
104 #|(self) => {
105 #| return self.getIncludedRanges();
106 #|}
107
108///|
109/// Get the ranges of text that the parser will include when parsing.
110pub fn type Parser
Parser::(self : Parser) -> Array[Range]
Get the ranges of text that the parser will include when parsing.
included_ranges(Parser
self : type Parser
Parser) -> type Array[T]
Array[type Range FixedArray[UInt]
Range] {
111 (self : Parser) -> Array[Range]
ts_parser_included_ranges(Parser
self)
112}
113
114///|
115pub type! ParseError {
116 ParseError
MissingLanguage
117 ParseError
Cancelled
118} derive((ParseError, &Logger) -> Unit
Show)
119
120///|
121fn (self : Parser, tree : Tree?) -> Tree!ParseError
raise_parse_error(Parser
self : type Parser
Parser, Tree?
tree : struct Tree {
tree: TSTree
text: @string.StringView
}
Tree?) -> struct Tree {
tree: TSTree
text: @string.StringView
}
Tree!type! ParseError {
MissingLanguage
Cancelled
}
ParseError {
122 match Tree?
tree {
123 Tree?
None =>
124 match Parser
self.(self : Parser) -> Language?
Get the parser's current language.
language() {
125 Language?
None => raise ParseError
MissingLanguage
126 Language?
Some(_) => raise ParseError
Cancelled
127 }
128 (Tree) -> Tree?
Some(Tree
tree) => return Tree
tree
129 }
130}
131
132///|
133extern "js" fn ts_parser_parse_string(
134 self : type Parser
Parser,
135 string : String
String,
136 old_tree : struct Tree {
tree: TSTree
text: @string.StringView
}
Tree
137) -> struct Tree {
tree: TSTree
text: @string.StringView
}
Tree =
138 #|(self, string, oldTree) => {
139 #| return self.parse(string, oldTree);
140 #|}
141
142///|
143/// Use the parser to parse some source code stored in one contiguous string buffer.
144/// The first two parameters are the same as in the `parse` function. The final
145/// parameter is the string to parse.
146pub fn type Parser
Parser::(self : Parser, old_tree? : Tree, string : @string.StringView) -> Tree!ParseError
Use the parser to parse some source code stored in one contiguous string buffer.
The first two parameters are the same as in the parse function. The final
parameter is the string to parse.
parse_string(
147 Parser
self : type Parser
Parser,
148 Tree?
old_tree? : struct Tree {
tree: TSTree
text: @string.StringView
}
Tree,
149 @string.StringView
string : type @string.StringView
A @string.View represents a view of a String that maintains proper Unicode
character boundaries. It allows safe access to a substring while handling
multi-byte characters correctly.
@string.View
150) -> struct Tree {
tree: TSTree
text: @string.StringView
}
Tree!type! ParseError {
MissingLanguage
Cancelled
}
ParseError {
151 let Tree
old_ts_tree = match Tree?
old_tree {
152 Tree?
None => () -> Tree
ts_tree_null()
153 (Tree) -> Tree?
Some(Tree
tree) => Tree
tree
154 }
155 let Tree?
tree = (self : Parser, string : String, old_tree : Tree) -> Tree
ts_parser_parse_string(Parser
self, @string.StringView
string.(self : @string.StringView) -> String
Returns a new String containing a copy of the characters in this view.
Examples
let str = "Hello World"
let view = str[0:5] // "Hello"
inspect!(view.to_string(), content="Hello")
to_string(), Tree
old_ts_tree).(self : Tree) -> Tree?
to_option()
156 (self : Parser, tree : Tree?) -> Tree!ParseError
raise_parse_error!(Parser
self, Tree?
tree)
157}
158
159///|
160extern "js" fn ts_parser_reset(self : type Parser
Parser) =
161 #|(self) => {
162 #| return self.reset();
163 #|}
164
165///|
166/// Instruct the parser to start the next parse from the beginning.
167///
168/// If the parser previously failed because of a timeout or a cancellation, then
169/// by default, it will resume where it left off on the next call to
170/// `parse` or other parsing functions. If you don't want to resume,
171/// and instead intend to use this parser to parse some other document, you must
172/// call `reset` first.
173pub fn type Parser
Parser::(self : Parser) -> Unit
Instruct the parser to start the next parse from the beginning.
If the parser previously failed because of a timeout or a cancellation, then
by default, it will resume where it left off on the next call to
parse or other parsing functions. If you don't want to resume,
and instead intend to use this parser to parse some other document, you must
call reset first.
reset(Parser
self : type Parser
Parser) -> Unit
Unit {
174 (self : Parser) -> Unit
ts_parser_reset(Parser
self)
175}
176
177///|
178pub enum LogType {
179 LogType
Parse
180 LogType
Lex
181}
182
183///|
184type Logger (String
String, Bool
Bool) -> Unit
Unit
185
186///|
187fn type Logger (String, Bool) -> Unit
Logger::(log : (LogType, @string.StringView) -> Unit) -> Logger
new((LogType, @string.StringView) -> Unit
log : (enum LogType {
Parse
Lex
}
LogType, type @string.StringView
A @string.View represents a view of a String that maintains proper Unicode
character boundaries. It allows safe access to a substring while handling
multi-byte characters correctly.
@string.View) -> Unit
Unit) -> type Logger (String, Bool) -> Unit
Logger {
188 fn(String
message, Bool
isLex) {
189 let LogType
logType = if Bool
isLex { LogType::LogType
Lex } else { LogType::LogType
Parse }
190 (LogType, @string.StringView) -> Unit
log(LogType
logType, String
message)
191 }
192}
193
194///|
195// @move logger
196extern "js" fn ts_parser_set_logger(
197 self : type Parser
Parser,
198 logger : (String
String, Bool
Bool) -> Unit
Unit
199) =
200 #|(self, logger) => {
201 #| return self.setLogger(logger);
202 #|}
203
204///|
205/// Set the logger that a parser should use during parsing.
206///
207/// The parser does not take ownership over the logger payload. If a logger was
208/// previously assigned, the caller is responsible for releasing any memory
209/// owned by the previous logger.
210pub fn type Parser
Parser::(self : Parser, logger : Logger) -> Unit
Set the logger that a parser should use during parsing.
The parser does not take ownership over the logger payload. If a logger was
previously assigned, the caller is responsible for releasing any memory
owned by the previous logger.
set_logger(Parser
self : type Parser
Parser, Logger
logger : type Logger (String, Bool) -> Unit
Logger) -> Unit
Unit {
211 (self : Parser, logger : (String, Bool) -> Unit) -> Unit
ts_parser_set_logger(Parser
self, Logger
logger.(String, Bool) -> Unit
_)
212}
213
214///|
215extern "js" fn ts_parser_logger(self : type Parser
Parser) -> (String
String, Bool
Bool) -> Unit
Unit =
216 #|() => {
217 #| return self.getLogger();
218 #|}
219
220///|
221/// Get the parser's current logger.
222pub fn type Parser
Parser::(self : Parser) -> Logger
Get the parser's current logger.
logger(Parser
self : type Parser
Parser) -> type Logger (String, Bool) -> Unit
Logger {
223 (self : Parser) -> (String, Bool) -> Unit
ts_parser_logger(Parser
self)
224}
225