blob: 515a792e6ee71d62d8180b0b241b97443bb2ceed (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# 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()
|