-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPredictSet.py
106 lines (106 loc) · 4.66 KB
/
PredictSet.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
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
101
102
103
104
105
106
predict_sets = {
"Program -> ProgramHead DeclarePart ProgramBody .": {'PROGRAM'},
"ProgramHead -> PROGRAM ProgramName": {'PROGRAM'},
"ProgramName -> ID": {'ID'},
"DeclarePart -> TypeDec VarDec ProcDec": {'TYPE', 'VAR', 'BEGIN', 'PROCEDURE'},
"TypeDec -> ε": {'BEGIN', 'VAR', 'PROCEDURE'},
"TypeDec -> TypeDeclaration": {'TYPE'},
"TypeDeclaration -> TYPE TypeDecList": {'TYPE'},
"TypeDecList -> TypeId = TypeName ; TypeDecMore": {'ID'},
"TypeDecMore -> ε": {'BEGIN', 'VAR', 'PROCEDURE'},
"TypeDecMore -> TypeDecList": {'ID'},
"TypeId -> ID": {'ID'},
"TypeName -> BaseType": {'CHAR', 'INTEGER'},
"TypeName -> StructureType": {'RECORD', 'ARRAY'},
"TypeName -> ID": {'ID'},
"BaseType -> INTEGER": {'INTEGER'},
"BaseType -> CHAR": {'CHAR'},
"StructureType -> ArrayType": {'ARRAY'},
"StructureType -> RecType": {'RECORD'},
"ArrayType -> ARRAY [ Low .. Top ] OF BaseType": {'ARRAY'},
"Low -> INTC": {'INTC'},
"Top -> INTC": {'INTC'},
"RecType -> RECORD FieldDecList END": {'RECORD'},
"FieldDecList -> BaseType IdList ; FieldDecMore": {'CHAR', 'INTEGER'},
"FieldDecList -> ArrayType IdList ; FieldDecMore": {'ARRAY'},
"FieldDecMore -> ε": {'END'},
"FieldDecMore -> FieldDecList": {'INTEGER', 'CHAR', 'ARRAY'},
"IdList -> ID IdMore": {'ID'},
"IdMore -> ε": {';'},
"IdMore -> , IdList": {','},
"VarDec -> ε": {'BEGIN', 'PROCEDURE'},
"VarDec -> VarDeclaration": {'VAR'},
"VarDeclaration -> VAR VarDecList": {'VAR'},
"VarDecList -> TypeName VarIdList ; VarDecMore": {'ARRAY', 'RECORD', 'INTEGER', 'CHAR', 'ID'},
"VarDecMore -> ε": {'BEGIN', 'PROCEDURE'},
"VarDecMore -> VarDecList": {'ARRAY', 'RECORD', 'INTEGER', 'CHAR', 'ID'},
"VarIdList -> ID VarIdMore": {'ID'},
"VarIdMore -> ε": {';'},
"VarIdMore -> , VarIdList": {','},
"ProcDec -> ε": {'BEGIN'},
"ProcDec -> ProcDeclaration": {'PROCEDURE'},
"ProcDeclaration -> PROCEDURE ProcName ( ParamList ) ; ProcDecPart ProcBody ProcDecMore": {'PROCEDURE'},
"ProcDecMore -> ε": {'BEGIN'},
"ProcDecMore -> ProcDeclaration": {'PROCEDURE'},
"ProcName -> ID": {'ID'},
"ParamList -> ε": {')'},
"ParamList -> ParamDecList": {'VAR', 'ARRAY', 'RECORD', 'INTEGER', 'CHAR', 'ID'},
"ParamDecList -> Param ParamMore": {'VAR', 'ARRAY', 'RECORD', 'INTEGER', 'CHAR', 'ID'},
"ParamMore -> ε": {')'},
"ParamMore -> ; ParamDecList": {';'},
"Param -> TypeName FormList": {'ARRAY', 'RECORD', 'INTEGER', 'CHAR', 'ID'},
"Param -> VAR TypeName FormList": {'VAR'},
"FormList -> ID FidMore": {'ID'},
"FidMore -> ε": {';', ')'},
"FidMore -> , FormList": {','},
"ProcDecPart -> DeclarePart": {'TYPE', 'PROCEDURE', 'BEGIN', 'VAR'},
"ProcBody -> ProgramBody": {'BEGIN'},
"ProgramBody -> BEGIN StmList END": {'BEGIN'},
"StmList -> Stm StmMore": {'READ', 'IF', 'RETURN', 'WRITE', 'WHILE', 'ID'},
"StmMore -> ε": {'ELSE', 'FI', 'ENDWH', 'END'},
"StmMore -> ; StmList": {';'},
"Stm -> ConditionalStm": {'IF'},
"Stm -> LoopStm": {'WHILE'},
"Stm -> InputStm": {'READ'},
"Stm -> OutputStm": {'WRITE'},
"Stm -> ReturnStm": {'RETURN'},
"Stm -> ID AssCall": {'ID'},
"AssCall -> AssignmentRest": {'[', ':=', '.'},
"AssCall -> CallStmRest": {'('},
"AssignmentRest -> VariMore := Exp": {'[', ':=', '.'},
"ConditionalStm -> IF RelExp THEN StmList ELSE StmList FI": {'IF'},
"LoopStm -> WHILE RelExp DO StmList ENDWH": {'WHILE'},
"InputStm -> READ ( Invar )": {'READ'},
"Invar -> ID": {'ID'},
"OutputStm -> WRITE ( Exp )": {'WRITE'},
"ReturnStm -> RETURN ( Exp )": {'RETURN'},
"CallStmRest -> ( ActParamList )": {'('},
"ActParamList -> ε": {')'},
"ActParamList -> Exp ActParamMore": {'(', 'INTC', 'ID'},
"ActParamMore -> ε": {')'},
"ActParamMore -> , ActParamList": {','},
"RelExp -> Exp OtherRelE": {'(', 'INTC', 'ID'},
"OtherRelE -> CmpOp Exp": {'<', '='},
"Exp -> Term OtherTerm": {'(', 'INTC', 'ID'},
"OtherTerm -> ε": {'ELSE', ',', ';', '<', 'FI', '=', 'THEN', 'END', ']', 'ENDWH', 'DO', ')'},
"OtherTerm -> AddOp Exp": {'-', '+'},
"Term -> Factor OtherFactor": {'(', 'INTC', 'ID'},
"OtherFactor -> ε": {'-', ',', 'ELSE', '+', ';', '<', 'FI', '=', 'THEN', 'END', ']', 'ENDWH', 'DO', ')'},
"OtherFactor -> MultOp Term": {'/', '*'},
"Factor -> ( Exp )": {'('},
"Factor -> INTC": {'INTC'},
"Factor -> Variable": {'ID'},
"Variable -> ID VariMore": {'ID'},
"VariMore -> ε": {'-', ',', 'ELSE', 'DO', ';', '*', ']', '+', '<', 'FI', '=', 'THEN', 'END', '/', 'ENDWH', ':=', ')'},
"VariMore -> [ Exp ]": {'['},
"VariMore -> . FieldVar": {'.'},
"FieldVar -> ID FieldVarMore": {'ID'},
"FieldVarMore -> ε": {'-', ',', 'ELSE', 'DO', ';', '*', ']', '+', '<', 'FI', '=', 'THEN', 'END', '/', 'ENDWH', ':=', ')'},
"FieldVarMore -> [ Exp ]": {'['},
"CmpOp -> <": {'<'},
"CmpOp -> =": {'='},
"AddOp -> +": {'+'},
"AddOp -> -": {'-'},
"MultOp -> *": {'*'},
"MultOp -> /": {'/'},
}