# lexer.py import ply.lex as lex tokens = ( "MOV", "ADD", "JMP", "REGISTER", "NUMBER", "IDENT", "COMMA", "COLON", ) t_COMMA = r"," t_COLON = r":" t_MOV = r"mov" t_ADD = r"add" t_JMP = r"jmp" def t_REGISTER(t): r"[A-Z]" return t def t_NUMBER(t): r"\#[0-9]+" t.value = int(t.value[1:]) return t def t_IDENT(t): r"[a-zA-Z_][a-zA-Z0-9_]*" return t t_ignore = " \t" def t_newline(t): r"\n+" lexer.lineno += 1 pass def t_error(t): raise SyntaxError(f"Illegal character {t.value[0]!r}") lexer = lex.lex()