I can now use keyword in concept definition and parsing
This commit is contained in:
+1
-1
@@ -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
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user