2025-10-18 19:55:02 +11:00
|
|
|
def preprocess(code: str) -> list[list[str]]:
|
|
|
|
|
token : str = ''
|
|
|
|
|
tokenise : list[list[str]] = [[]]
|
2025-10-16 13:21:27 +11:00
|
|
|
isString : bool = False
|
2025-10-18 19:55:02 +11:00
|
|
|
isComment : bool = False
|
2025-10-16 13:21:27 +11:00
|
|
|
for i in code:
|
2025-10-18 19:55:02 +11:00
|
|
|
if i == '\n':
|
2025-10-16 13:21:27 +11:00
|
|
|
isComment = False
|
2025-10-30 17:11:10 +11:00
|
|
|
if token != '':
|
|
|
|
|
tokenise[-1].append(token)
|
|
|
|
|
if tokenise[-1]:
|
2025-10-18 19:55:02 +11:00
|
|
|
tokenise.append([])
|
|
|
|
|
token = ''
|
2025-10-16 13:21:27 +11:00
|
|
|
elif isComment:
|
|
|
|
|
pass
|
2025-10-18 19:55:02 +11:00
|
|
|
elif i == '#':
|
|
|
|
|
isComment = True
|
|
|
|
|
elif (i != ' ') | isString:
|
2025-10-16 13:21:27 +11:00
|
|
|
token += i
|
2025-10-18 19:55:02 +11:00
|
|
|
if (i == '\"'):
|
|
|
|
|
isString = not(isString)
|
2025-11-01 10:30:03 +11:00
|
|
|
elif token != '':
|
2025-10-18 19:55:02 +11:00
|
|
|
tokenise[-1].append(token)
|
2025-10-16 13:21:27 +11:00
|
|
|
token = ''
|
2025-10-18 19:55:02 +11:00
|
|
|
|
|
|
|
|
if token != '':
|
|
|
|
|
tokenise[-1].append(token)
|
|
|
|
|
token = ''
|
|
|
|
|
if tokenise[-1] == []:
|
|
|
|
|
tokenise = tokenise[:-1]
|
2025-10-16 13:21:27 +11:00
|
|
|
return tokenise
|