-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.ebnf
56 lines (48 loc) · 1.21 KB
/
test.ebnf
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
Program = { Statement } ;
Statement = { Assignment
| IfStatement
| WhileStatement
| PrintStatement
| BlockStatement } ;
Assignment = Identifier
, '='
, ExpressionTwo
, ';' ;
IfStatement = 'if'
, ExpressionTwo
, BlockStatement
, [ 'else'
, BlockStatement ] ;
(* #[allow(unused)] *)
Unused = 'Hello' ;
WhileStatement = 'while'
, ExpressionTwo
, BlockStatement ;
PrintStatement = 'print'
, ExpressionTwo
, ';' ;
BlockStatement = '{'
, { Statement }
, '}' ;
Identifier = [ 'a' - 'z'
| 'A' - 'Z' ]
, { [ 'a' - 'z'
| 'A' - 'Z'
| '0' - '9' ] } ;
(* #[allow(unused)] *)
NotUsed = 'Hello' ;
ExpressionTwo = Term
| ExpressionTwo
, '+'
, Term ;
Term = Factor
| Term
, '*'
, Factor ;
Factor = Identifier
| Number
| '('
, ExpressionTwo
, ')' ;
Number = [ '0' - '9' ]
, { [ '0' - '9' ] } ;