-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdictionary.py
67 lines (60 loc) · 2.27 KB
/
dictionary.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
from Token import Token
class Dictionary:
NUMERIC_CHARACTERS = set('0123456789.')
ALPHABETIC_CHARACTERS = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
KEYWORDS = ['if', 'else if', 'else', 'return']
# TOKEN TYPES
INTEGER = 'INT'
FLOAT = 'FLOAT'
CELL = 'CELL'
PLUS = 'PLUS'
STRING = 'STR'
MINUS = 'MINUS'
MULTIPLICATION = 'MULT'
DIVISION = 'DIV'
LEFT_PARENTHESES = 'L_PRNTH'
RIGHT_PARENTHESES = 'R_PRNTH'
NEWLINE = 'NL'
INDENTATION = 'TAB'
WHITE_SPACE = 'WS'
KEYWORD = 'KW'
IDENTIFIER = 'ID'
ASSIGNMENT = 'ASSIGN'
EQUAL_TO = '=='
NOT_EQUAL_TO = '!='
GREATER_THAN = '>'
LESS_THAN = '<'
GREATER_THAN_OR_EQUAL_TO = '>='
LESS_THAN_OR_EQUAL_TO = '<='
multi_word_operator_parts = ['is', 'not', 'equal', 'to', 'greater', 'or', 'less', 'than']
multi_word_operators = {
'is equal to': EQUAL_TO,
'is not equal to': NOT_EQUAL_TO,
'is greater than': GREATER_THAN,
'is less than': LESS_THAN,
'is greater than or equal to': GREATER_THAN_OR_EQUAL_TO,
'is less than or equal to': LESS_THAN_OR_EQUAL_TO
}
arithmetic_operators = {
'+': Token(PLUS),
'-': Token(MINUS),
'*': Token(MULTIPLICATION),
'/': Token(DIVISION),
'(': Token(LEFT_PARENTHESES),
')': Token(RIGHT_PARENTHESES),
'=': Token(ASSIGNMENT),
'is': Token(ASSIGNMENT)
}
multi_word_operators_dictionary = {
'is equal to': Token(EQUAL_TO),
'is not equal to': Token(NOT_EQUAL_TO),
'is greater than': Token(GREATER_THAN),
'is less than': Token(LESS_THAN),
'is greater than or equal to': Token(GREATER_THAN_OR_EQUAL_TO),
'is less than or equal to': Token(LESS_THAN_OR_EQUAL_TO)
}
escape_characters = {
'\n': Token(NEWLINE),
'\t': Token(INDENTATION),
' ' : Token(WHITE_SPACE)
}