aboutsummaryrefslogtreecommitdiff
path: root/yapymake/makefile/token.py
diff options
context:
space:
mode:
Diffstat (limited to 'yapymake/makefile/token.py')
-rw-r--r--yapymake/makefile/token.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/yapymake/makefile/token.py b/yapymake/makefile/token.py
index fd7de5b..57ad4f9 100644
--- a/yapymake/makefile/token.py
+++ b/yapymake/makefile/token.py
@@ -33,6 +33,9 @@ class TokenString(Iterable['Token']):
def __repr__(self) -> str:
return f'TokenString({repr(self._tokens)})'
+ def __str__(self) -> str:
+ return ''.join(str(x) for x in self._tokens)
+
def split_once(self, delimiter: str) -> Optional[Tuple['TokenString', 'TokenString']]:
result0: List[Token] = []
self_iter = iter(self._tokens)
@@ -65,11 +68,21 @@ class Token:
class TextToken(Token):
text: str
+ def __str__(self) -> str:
+ return self.text
+
@dataclass()
class MacroToken(Token):
name: str
replacement: Optional[Tuple[TokenString, TokenString]]
+ def __str__(self) -> str:
+ if self.replacement is None:
+ return f'$({self.name})'
+ else:
+ r1, r2 = self.replacement
+ return f'$({self.name}:{r1}={r2})'
+
macro_name = take_while1(lambda c: c.isalnum() or c in ['.', '_'])
def macro_expansion_body(end: str) -> Parser[MacroToken]: