lsp: Implement semantic tokens

This commit is contained in:
James Westman 2021-11-01 23:52:36 -05:00
parent 7a65956195
commit dfb09b9357
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
6 changed files with 65 additions and 5 deletions

View file

@ -22,6 +22,7 @@ from collections import ChainMap, defaultdict
from . import ast
from .errors import *
from .lsp_utils import SemanticToken
from .utils import lazy_prop
from .xml_emitter import XmlEmitter
@ -112,6 +113,10 @@ class AstNode:
return None
def get_semantic_tokens(self) -> T.Iterator[SemanticToken]:
for child in self.children:
yield from child.get_semantic_tokens()
def validate(token_name=None, end_token_name=None, skip_incomplete=False):
""" Decorator for functions that validate an AST node. Exceptions raised