From abf6cbdecc8eb006a859205dee7500c2b70c0998 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Fri, 3 Nov 2023 19:55:52 +0200 Subject: Fix macros, add string I/O helpers --- src/tokenizer.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/tokenizer.py (limited to 'src/tokenizer.py') diff --git a/src/tokenizer.py b/src/tokenizer.py new file mode 100644 index 0000000..2049461 --- /dev/null +++ b/src/tokenizer.py @@ -0,0 +1,32 @@ +def tokenize(line: str) -> list[str]: + cur: str = "" + result: list[str] = [] + is_py_expr = False + idx = 0 + while idx < len(line): + c = line[idx] + if not is_py_expr and c == "$": + is_py_expr = True + idx += 1 + elif is_py_expr and c == "$": + raise Exception("Unexpected start of python expr while already parsing a python expression:\n" + line) + elif not is_py_expr and c == "}": + raise Exception("Unexpected end of python expr while not parsing a python expression:\n" + line) + elif is_py_expr and c == "}": + is_py_expr = False + result.append(cur) + cur = "" + elif is_py_expr: + cur += c + elif c == " " or c == "\t": + result.append(cur) + cur = "" + else: + cur += c + + idx += 1 + + if len(cur) > 0: + result.append(cur) + + return [r for r in result if r != ""] \ No newline at end of file -- cgit v1.3