-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.grm
More file actions
39 lines (26 loc) · 1.38 KB
/
main.grm
File metadata and controls
39 lines (26 loc) · 1.38 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
"Name" = 'Python'
"Author" = 'Quinn Narlo'
"Start Symbol" = <Program>
! --------------------------------------
! Terminal
! --------------------------------------
Identifier = {Letter}{AlphaNumeric}*
Numbers = {Digit}+
Bool = 'True' | 'False'
<Program> ::= <Program> <Statement>
<Program> ::= <Statement>
<Statement> ::= <Assignment>
<Assignment> ::= <Expression>
<Expression> ::= Identifier '=' Numbers '+' Numbers ! data = 8 + 8
| Identifier '=' Numbers '*' Numbers ! data = 8 * 8
| Identifier '=' Numbers '-' Numbers ! data = 8 - 8
| Identifier '=' Numbers '/' Numbers ! data = 8 / 8
| Identifier '=' Numbers '+' <Negative Expression> ! data = 4 + -4
| Identifier '=' Numbers '*' <Negative Expression> ! data = 4 * -4
| Identifier '=' Numbers '-' <Negative Expression> ! data = 4 - -4
| Identifier '=' Numbers '/' <Negative Expression> ! data = 4 / -4
| <String Experssion>
<String Experssion> ::= Identifier '=' '"' Identifier '"' ! data = "Hello World"
| Identifier '=' Numbers ! data = 4
| Identifier '=' Bool ! isProgrammer = True
<Negative Expression> ::= '-' Numbers