-
Notifications
You must be signed in to change notification settings - Fork 0
/
tokens.py
69 lines (53 loc) · 1.73 KB
/
tokens.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
"""
File: tokens.py
Author: Leigh Stauffer
Project 10
Tokens for processing expressions.
"""
class Token(object):
UNKNOWN = 0 # unknown
EOE = 1 # end-of-expression
L_PAR = 2 # left parenthesis
R_PAR = 3 # right parenthesis
INT = 4 # integer
MINUS = 5 # minus operator
PLUS = 6 # plus operator
MUL = 7 # multiply operator
DIV = 8 # divide operator
EXPO = 9 # exponent operator
FIRST_OP = 5 # first operator code
def __init__(self, value):
if type(value) == int:
self._type = Token.INT
else:
self._type = self.makeType(value)
self._value = value
def isOperator(self):
return self._type >= Token.FIRST_OP
def __str__(self):
return str(self._value)
def getType(self):
return self._type
def getValue(self):
return self._value
def makeType(self, ch):
if ch == '*': return Token.MUL
elif ch == '/': return Token.DIV
elif ch == '+': return Token.PLUS
elif ch == '-': return Token.MINUS
elif ch == '(': return Token.L_PAR
elif ch == ')': return Token.R_PAR
elif ch == ';': return Token.EOE
elif ch == '^': return Token.EXPO
else: return Token.UNKNOWN;
def main():
# A simple tester program
plus = Token("+")
minus = Token("-")
mul = Token("*")
div = Token("/")
unknown = Token("#")
anInt = Token(34)
print(plus, minus, mul, div, unknown, anInt)
if __name__ == '__main__':
main()