-
Notifications
You must be signed in to change notification settings - Fork 0
/
bnf syntax.txt
45 lines (35 loc) · 1.7 KB
/
bnf syntax.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
GRAMMAR ACTION - DESCRIPTION
----------------------------------------------------- -----------------------------------------------------
<prog> ::= <exp> | <exp> <prog> none
<exp> ::= <cmd> | <macdef> none - An expression is either a command for the program or a macro definition
<cmd> ::= <incr> none
| <mv>
| <rpt>
| <mac> macro "call" : needs to be replace by the macro body
<incr> ::= INC REG reg[<register>] = reg[<register>] + 1
<mv> ::= REG MOVE (REG | INT) reg[<register1>] = reg[<register2>]
<rpt> ::= REPEAT REG <body> repeats all commands in body <register> amount of time
<mac> ::= REG MOVE ID <reglist> execute all commands within matchin f macro definition
<macdef> ::= DEF ID <reglist> <body> define all actions to be done upon calling macro
<body> ::= <inner-body> END none
<innerbody> ::= <cmd> | <cmd> <inner-body> none
<reglist> ::= REG | REG <reglist> none
tokens :
REG : r\d+
MOVE : <-
INC : inc
INT : \d+
ID : ([_a-zA-Z])([_a-zA-Z0-9]+)
REPEAT : repeat
DEF : MACRO
syntaxe exemple :
inc r1
r5 <- 4
r6 <- 3
r2 <- mult r5 r6 # deviendra :
repeat r5
repeat r6
inc rm
end
end
r2 <- rn