-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBackus.txt
More file actions
41 lines (30 loc) · 1.07 KB
/
Backus.txt
File metadata and controls
41 lines (30 loc) · 1.07 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
letter ::= a | b | c | ....
digit ::= 1 | 2 | 3 | ...
var ::= letter | {letter | digit}
num ::= {digit} | {digit} . {digit}
// the following defines the precedence, according to https://en.wikipedia.org/wiki/Order_of_operations
op2 ::= + | -
op3 ::= * | /
op4 ::= + | -
op6 ::= < | <= | > |>=
op7 ::= == | !=
op13 ::= ? | :
op14 ::= = |
a = 1 * 2 + 3 < 4 == 5 ? 6 : 7
<e3->7
<--e4--->
<----e6----->
<-------e7------->
<----------e13----------->
<-----------e14-------------->
//
expr0 ::= var | num | expr1 ex:abc, 13, a2, (...)
expr1 ::= ( expr13 )
expr2 ::= expr0 | op2 expr0 ex:+abc, -4, 5
expr3 ::= expr2 | expr2 op3 expr3 ex:a*4, -2*5, 2*-5, -1*(...)
expr4 ::= expr3 | expr3 op4 expr4 ex:a*4 + 3, a*4 + (...)
expr6 ::= expr4 | expr4 op6 expr6 ex:a*4 + 3 < 4
expr7 ::= expr6 | expr6 op7 expr7 ex:a*4 + 3 < 4 != 7
expr13 ::= expr7 | expr7 ? expr7 : exp7
expr14 ::= var op14 expr13
expr ::= expr14 | expr13