-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstants.py
More file actions
100 lines (98 loc) · 2.57 KB
/
constants.py
File metadata and controls
100 lines (98 loc) · 2.57 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
RESERVED_WORDS_LIST = [
"TextWindow",
"ElseIf",
"EndIf",
"EndWhile",
"EndFor",
"EndSub",
"Goto",
"If",
"Then",
"Else",
"While",
"For",
"Sub",
"And",
"Or",
"Array",
"To",
"Step",
"Stack",
"Program",
]
SYMBOLS_DICT = {
"=": "tkn_equals",
".": "tkn_period",
",": "tkn_comma",
":": "tkn_colon",
"[": "tkn_left_brac",
"]": "tkn_right_brac",
"(": "tkn_left_paren",
")": "tkn_right_paren",
"+": "tkn_plus",
"-": "tkn_minus",
"*": "tkn_times",
"/": "tkn_div",
"<": "tkn_less",
">": "tkn_greater",
}
GRAMMAR = {
"P": [["eps"], ["SU", "P"], ["S", "P"]],
"S": [["C"], ["L"], ["BF"], ["ID"], ["GT"]],
"ID": [["id", "ID1"]],
"ID1": [["eps"], ["VA"], [":"], ["(", ")"], ["A"]],
"VA": [["VA_OP_DIM", "=", "EX"]],
"VA_OP_DIM": [["eps"], ["[", "EX", "]", "VA_OP_DIM"]],
"C": [["If", "(", "EX", ")", "Then", "CSL", "C1"]],
"C1": [
["EndIf"],
["ElseIf", "(", "EX", ")", "Then", "CSL", "C1"],
["Else", "CSL", "EndIf"],
],
"CSL": [["eps"], ["S", "CSL"]],
"L": [["F"], ["W"]],
"F": [["For", "id", "VA", "To", "EX", "ST", "FSL", "EndFor"]],
"ST": [["eps"], ["Step", "ST1"]],
"ST1": [["-", "ES"], ["ES"]],
"FSL": [["eps"], ["S", "FSL"]],
"W": [["While", "(", "EX", ")", "WSL", "EndWhile"]],
"WSL": [["eps"], ["S", "WSL"]],
"GT": [["Goto", "id"]],
"SU": [["Sub", "id", "SUSL", "EndSub"]],
"SUSL": [["eps"], ["S", "SUSL"]],
"A": [["DIL", "=", "EX"]],
"DIL": [["[", "EX", "]", "A_OP_DIM"]],
"A_OP_DIM": [["eps"], ["[", "EX", "]", "A_OP_DIM"]],
"BF": [["RW", ".", "id", "(", "PAM", ")"]],
"PAM": [["eps"], ["PAL"]],
"PAL": [["PA", "PAL1"]],
"PAL1": [["eps"], [",", "PA", "PAL1"]],
"PA": [["EX"], ["eps"]],
"RW": [["TextWindow"], ["Stack"], ["Array"], ["Program"]],
"EX": [
["-", "EB", "EX1"],
["EB", "EX1"],
],
"EX1": [["Or", "EB", "EX1"], ["eps"]],
"EB": [["ER", "EB1"]],
"EB1": [["And", "ER", "EB1"], ["eps"]],
"ER": [["ES", "ER1"]],
"ER1": [["RO", "ES"], ["eps"]],
"ES": [["EM", "ES1"]],
"ES1": [["SO", "EM", "ES1"], ["eps"]],
"EM": [["D", "EM1"]],
"EM1": [["MO", "D", "EM1"], ["eps"]],
"SO": [["+"], ["-"]],
"MO": [["*"], ["/"]],
"RO": [["<"], [">"], ["="], ["<="], [">="], ["<>"]],
"D": [
["str"],
["True"],
["False"],
["num"],
["id", "ID_OP_DIM"],
["(", "EX", ")"],
["BF"],
],
"ID_OP_DIM": [["eps"], ["[", "EX", "]", "ID_OP_DIM"]],
}