@@ -264,7 +264,18 @@ class _CEDARScriptASTParserBase:
264
264
def __init__ (self ):
265
265
"""Load the CEDARScript language, and initialize the parser.
266
266
"""
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 ())
268
279
269
280
270
281
class CEDARScriptASTParser (_CEDARScriptASTParserBase ):
@@ -276,9 +287,7 @@ def parse_script(self, code_text: str) -> tuple[Sequence[Command], Sequence[Pars
276
287
"""
277
288
command_ordinal = 1
278
289
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
282
291
283
292
errors = self ._collect_parse_errors (root_node , code_text , command_ordinal )
284
293
if errors :
@@ -547,7 +556,7 @@ def parse_relative_indentation(self, node) -> int | None:
547
556
return None
548
557
return int (self .find_first_by_type (node .named_children , 'number' ).text )
549
558
550
- def parse_content (self , node ) -> str | tuple [Region , int | None ]:
559
+ def parse_content (self , node ) -> str | tuple [Region , int | None ] | None :
551
560
content = self .find_first_by_type (node .named_children , ['content_clause' , 'content_from_segment' ])
552
561
if not content :
553
562
return None
0 commit comments