diff options
Diffstat (limited to 'yapymake/makefile/token.py')
-rw-r--r-- | yapymake/makefile/token.py | 13 |
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]: |