I can now use keyword in concept definition and parsing
This commit is contained in:
+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