36 lines
906 B
Python
36 lines
906 B
Python
|
import token
|
||
|
|
||
|
delimiters = ["=", ">", "<", "+", "-", "*", "/", " "]
|
||
|
|
||
|
def doNothing():
|
||
|
return
|
||
|
|
||
|
def process_line(process: str) -> list[token.Token]:
|
||
|
buf = ""
|
||
|
tokens: list[token.Token] = []
|
||
|
prevEquals = False
|
||
|
for c in process:
|
||
|
if c in delimiters and buf != "":
|
||
|
tokens.append(token.Token(buf))
|
||
|
buf = ""
|
||
|
if prevEquals and c != '=':
|
||
|
tokens.append(token.Token("="))
|
||
|
prevEquals = False
|
||
|
match c:
|
||
|
case '\n':
|
||
|
doNothing()
|
||
|
case ' ':
|
||
|
doNothing()
|
||
|
case '=':
|
||
|
if prevEquals:
|
||
|
prevEquals = False
|
||
|
tokens.append(token.Token(buf))
|
||
|
else:
|
||
|
prevEquals = True
|
||
|
case _:
|
||
|
buf += c
|
||
|
if buf != "":
|
||
|
tokens.append(token.Token(buf))
|
||
|
|
||
|
|
||
|
return tokens
|