-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPredictSet.txt
104 lines (104 loc) · 4.14 KB
/
PredictSet.txt
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
Program -> ProgramHead DeclarePart ProgramBody . {'PROGRAM'}
ProgramHead -> PROGRAM ProgramName {'PROGRAM'}
ProgramName -> ID {'ID'}
DeclarePart -> TypeDec VarDec ProcDec {'VAR', 'BEGIN', 'PROCEDURE', 'TYPE'}
TypeDec -> ε {'VAR', 'BEGIN', 'PROCEDURE'}
TypeDec -> TypeDeclaration {'TYPE'}
TypeDeclaration -> TYPE TypeDecList {'TYPE'}
TypeDecList -> TypeId = TypeName ; TypeDecMore {'ID'}
TypeDecMore -> ε {'VAR', 'BEGIN', 'PROCEDURE'}
TypeDecMore -> TypeDecList {'ID'}
TypeId -> ID {'ID'}
TypeName -> BaseType {'CHAR', 'INTEGER'}
TypeName -> StructureType {'ARRAY', 'RECORD'}
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 {'ARRAY', 'CHAR', 'INTEGER'}
IdList -> ID IdMore {'ID'}
IdMore -> ε {';'}
IdMore -> , IdList {','}
VarDec -> ε {'PROCEDURE', 'BEGIN'}
VarDec -> VarDeclaration {'VAR'}
VarDeclaration -> VAR VarDecList {'VAR'}
VarDecList -> TypeName VarIdList ; VarDecMore {'ID', 'RECORD', 'INTEGER', 'ARRAY', 'CHAR'}
VarDecMore -> ε {'PROCEDURE', 'BEGIN'}
VarDecMore -> VarDecList {'ID', 'RECORD', 'INTEGER', 'ARRAY', 'CHAR'}
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', 'ID', 'RECORD', 'INTEGER', 'ARRAY', 'CHAR'}
ParamDecList -> Param ParamMore {'VAR', 'ID', 'RECORD', 'INTEGER', 'ARRAY', 'CHAR'}
ParamMore -> ε {')'}
ParamMore -> ; ParamDecList {';'}
Param -> TypeName FormList {'ID', 'RECORD', 'INTEGER', 'ARRAY', 'CHAR'}
Param -> VAR TypeName FormList {'VAR'}
FormList -> ID FidMore {'ID'}
FidMore -> ε {';', ')'}
FidMore -> , FormList {','}
ProcDecPart -> DeclarePart {'VAR', 'BEGIN', 'PROCEDURE', 'TYPE'}
ProcBody -> ProgramBody {'BEGIN'}
ProgramBody -> BEGIN StmList END {'BEGIN'}
StmList -> Stm StmMore {'RETURN', 'ID', 'WHILE', 'WRITE', 'READ', 'IF'}
StmMore -> ε {'END', 'ENDWH', 'FI', 'ELSE'}
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 {'ID', '(', 'INTC'}
ActParamMore -> ε {')'}
ActParamMore -> , ActParamList {','}
RelExp -> Exp OtherRelE {'ID', '(', 'INTC'}
OtherRelE -> CmpOp Exp {'=', '<'}
Exp -> Term OtherTerm {'ID', '(', 'INTC'}
OtherTerm -> ε {'DO', ';', 'THEN', 'FI', ',', '=', 'ELSE', ']', 'END', ')', 'ENDWH', '<'}
OtherTerm -> AddOp Exp {'-', '+'}
Term -> Factor OtherFactor {'ID', '(', 'INTC'}
OtherFactor -> ε {'DO', ';', 'THEN', 'FI', ',', '=', '+', 'ELSE', '-', ']', 'END', ')', 'ENDWH', '<'}
OtherFactor -> MultOp Term {'/', '*'}
Factor -> ( Exp ) {'('}
Factor -> INTC {'INTC'}
Factor -> Variable {'ID'}
Variable -> ID VariMore {'ID'}
VariMore -> ε {'/', 'THEN', ']', ';', 'END', ')', '<', 'DO', '*', 'FI', ':=', '=', '+', 'ELSE', '-', ',', 'ENDWH'}
VariMore -> [ Exp ] {'['}
VariMore -> . FieldVar {'.'}
FieldVar -> ID FieldVarMore {'ID'}
FieldVarMore -> ε {'/', 'THEN', ']', ';', 'END', ')', '<', 'DO', '*', 'FI', ':=', '=', '+', 'ELSE', '-', ',', 'ENDWH'}
FieldVarMore -> [ Exp ] {'['}
CmpOp -> < {'<'}
CmpOp -> = {'='}
AddOp -> + {'+'}
AddOp -> - {'-'}
MultOp -> * {'*'}
MultOp -> / {'/'}