@@ -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
270281class 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