-
Notifications
You must be signed in to change notification settings - Fork 0
/
syntax.cf
97 lines (74 loc) · 2.07 KB
/
syntax.cf
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
entrypoints Program;
Prog. Program ::= Simp;
token Asn ('0');
token Idn ('1');
token Key ('2');
token Lit ('3');
token Sep ('4');
SAsnp. Simp ::= Exp "=" Exp ;
SIncr. Simp ::= Exp "++" ;
SDecr. Simp ::= Exp "--" ;
SExpr. Simp ::= Exp ;
SDecl. Simp ::= Typ Idn ;
TIntr. Typ ::= "int" TypL ;
TBool. Typ ::= "bool" TypL ;
TStrn. Typ ::= "string" TypL ;
TChar. Typ ::= "char" TypL ;
TVoid. Typ ::= "void" TypL ;
TStrt. Typ ::= "struct" Idn TypL ;
TAlis. Typ ::= Idn TypL ;
TStar. TypL ::= "*" TypL ;
TArry. TypL ::= "[" "]" TypL ;
TEpsn. TypL ::= ;
ELOne. ExpLC ::= Exp ;
ELCon. ExpLC ::= Exp "," ExpLC ;
ELNil. ExpLN ::= ;
ELEpt. ExpList ::= ExpLN ;
ELLst. ExpList ::= ExpLC ;
EParn. Exp0 ::= "(" Exp ")" ExpL ;
ELitl. Exp0 ::= Lit ExpL ;
EIden. Exp0 ::= Idn ExpL ;
ECall. Exp0 ::= Idn "(" ExpList ")" ExpL ;
EAllc. Exp0 ::= "alloc" "(" Typ ")" ExpL ;
EAlcA. Exp0 ::= "alloc_array" "(" Typ "," Exp ")" ExpL ;
EIndx. ExpL ::= "[" Exp "]" ExpL ;
EEpsn. ExpL ::= ;
EArrw. Exp1 ::= Exp0 "->" Exp1 ;
EAcce. Exp1 ::= Exp0 "." Exp1 ;
_ . Exp1 ::= Exp0 ;
ENegn. Exp2 ::= "!" Exp1 ;
ESubt. Exp2 ::= "-" Exp1 ;
ETild. Exp2 ::= "~" Exp1 ;
EDerf. Exp2 ::= "*" Exp1 ;
_ . Exp2 ::= Exp1 ;
EMods. Exp3 ::= Exp2 "%" Exp3 ;
EMuln. Exp3 ::= Exp2 "*" Exp3 ;
EDivn. Exp3 ::= Exp2 "/" Exp3 ;
_ . Exp3 ::= Exp2 ;
EPlus. Exp4 ::= Exp3 "+" Exp4 ;
EMins. Exp4 ::= Exp3 "-" Exp4 ;
_ . Exp4 ::= Exp3 ;
EShfR. Exp5 ::= Exp4 ">>" Exp5 ;
EShfL. Exp5 ::= Exp4 "<<" Exp5 ;
_ . Exp5 ::= Exp4 ;
ELteq. Exp6 ::= Exp5 "<=" Exp6 ;
EGteq. Exp6 ::= Exp5 ">=" Exp6 ;
EGret. Exp6 ::= Exp5 ">" Exp6 ;
ELess. Exp6 ::= Exp5 "<" Exp6 ;
_ . Exp6 ::= Exp5 ;
EEqul. Exp7 ::= Exp6 "==" Exp7 ;
ENeql. Exp7 ::= Exp6 "!=" Exp7 ;
_ . Exp7 ::= Exp6 ;
EAmpr. Exp8 ::= Exp7 "&" Exp8 ;
_ . Exp8 ::= Exp7 ;
EExor. Exp9 ::= Exp8 "^" Exp9 ;
_ . Exp9 ::= Exp8 ;
EBtor. Exp10 ::= Exp9 "|" Exp10 ;
_ . Exp10 ::= Exp9 ;
ELand. Exp11 ::= Exp10 "&&" Exp11 ;
_ . Exp11 ::= Exp10 ;
ELgor. Exp12 ::= Exp11 "||" Exp12 ;
_ . Exp12 ::= Exp11 ;
ECond. Exp13 ::= Exp12 "?" Exp13 ":" Exp13 ;
_ . Exp13 ::= Exp12 ;
EExpr. Exp ::= Exp13 ;