-
Notifications
You must be signed in to change notification settings - Fork 0
/
Token.py
36 lines (32 loc) · 1.04 KB
/
Token.py
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
RESERVED = ['PRINT', 'BEGIN', 'END', 'WHILE', 'IF', 'WEND', 'THEN', 'ELSE', 'INPUT', 'DIM','INTEGER', 'BOOLEAN', 'AS', 'SUB', 'MAIN', 'TRUE', 'FALSE']
class Token:
def __init__(self, token):
self.OPS = ['+', '-', '/', '*']
# self.TOKEN_TYPES = ['OP', 'INT', 'VAR', 'PRINT']
self.value = token
self.type = self.define_type(token)
def define_type(self, token):
if token in self.OPS:
return 'OP'
elif token.isdigit():
return 'INT'
elif token.upper() in RESERVED:
return token.upper()
elif token == 'EOF':
return token
elif token.isalpha():
return 'VAR'
elif token == '=':
return 'EQUAL'
elif token == '\n':
return 'BL'
elif token == '(':
return 'OPENPAR'
elif token == ')':
return 'CLOSEPAR'
elif token == '<':
return 'SMALLER'
elif token == '>':
return 'BIGGER'
else:
return 'VAR'