I can now use keyword in concept definition and parsing

This commit is contained in:
2020-05-22 15:46:04 +02:00
parent 37d3d16e21
commit 3ce6ce2a76
14 changed files with 127 additions and 45 deletions
+1 -1
View File
@@ -246,7 +246,7 @@ class Concept:
key += VARIABLE_PREFIX + str(variables.index(token.value))
else:
# value = token.value[1:-1] if token.type == TokenKind.STRING else token.value
key += token.value
key += token.value.value if token.type == TokenKind.KEYWORD else token.value
first = False
self.metadata.key = key
+18 -6
View File
@@ -59,6 +59,7 @@ class Token:
line: int
column: int
_strip_quote: str = field(default=None, repr=False, compare=False, hash=None)
_str_value: str = field(default=None, repr=False, compare=False, hash=None)
def __repr__(self):
@@ -75,23 +76,34 @@ class Token:
return f"Token({value})"
@property
def strip_quote(self):
if self._strip_quote:
return self._strip_quote
self._strip_quote = self._to_str(True)
return self._strip_quote
@property
def str_value(self):
if self._str_value:
return self._str_value
if self.type == TokenKind.STRING:
self._str_value = self.value[1:-1]
elif self.type == TokenKind.KEYWORD:
self._str_value = self.value.value
else:
self._str_value = str(self.value)
self._str_value = self._to_str(False)
return self._str_value
@staticmethod
def is_whitespace(token):
return token and token.type == TokenKind.WHITESPACE
def _to_str(self, strip_quote):
if strip_quote and self.type == TokenKind.STRING:
return self.value[1:-1]
elif self.type == TokenKind.KEYWORD:
return self.value.value
else:
return str(self.value)
@dataclass()
class LexerError(Exception):