Skip to content

Commit f21e6d1

Browse files
committed
Support Tree-Sitter 0.21.3 and later versions
1 parent d98fe83 commit f21e6d1

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/cedarscript_ast_parser/cedarscript_ast_parser.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,18 @@ class _CEDARScriptASTParserBase:
264264
def __init__(self):
265265
"""Load the CEDARScript language, and initialize the parser.
266266
"""
267-
self.parser = Parser(cedarscript_grammar.language())
267+
from importlib.metadata import version
268+
from packaging import version as v
269+
270+
package_version = version('tree_sitter')
271+
parsed_version = v.parse(package_version)
272+
273+
match parsed_version:
274+
case x if x <= v.parse('0.21.3'):
275+
self.parser = Parser()
276+
self.parser.set_language(cedarscript_grammar.language())
277+
case _:
278+
self.parser = Parser(cedarscript_grammar.language())
268279

269280

270281
class CEDARScriptASTParser(_CEDARScriptASTParserBase):
@@ -276,9 +287,7 @@ def parse_script(self, code_text: str) -> tuple[Sequence[Command], Sequence[Pars
276287
"""
277288
command_ordinal = 1
278289
try:
279-
# Parse the code text
280-
tree = self.parser.parse(bytes(code_text, 'utf8'))
281-
root_node = tree.root_node
290+
root_node = self.parser.parse(bytes(code_text, 'utf8')).root_node
282291

283292
errors = self._collect_parse_errors(root_node, code_text, command_ordinal)
284293
if errors:
@@ -547,7 +556,7 @@ def parse_relative_indentation(self, node) -> int | None:
547556
return None
548557
return int(self.find_first_by_type(node.named_children, 'number').text)
549558

550-
def parse_content(self, node) -> str | tuple[Region, int | None]:
559+
def parse_content(self, node) -> str | tuple[Region, int | None] | None:
551560
content = self.find_first_by_type(node.named_children, ['content_clause', 'content_from_segment'])
552561
if not content:
553562
return None

0 commit comments

Comments
 (0)