-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrammar.g2t
40 lines (36 loc) · 1.16 KB
/
grammar.g2t
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
S = Statements;
Statements = Statement Statements | ^;
Block = Statement | { Statements };
Statement = IfStatement
| WhileStatement
| PrintStatement
| BreakStatement
| ContinueStatement
| ExpressionStatement
| Assignment
| EmptyStatement;
IfStatement = if ( Expression ) Block ElseBlock;
ElseBlock = else Block | ^;
PrintStatement = print Expression \; | println Expression \; ;
WhileStatement = while ( Expression ) Block;
BreakStatement = break \; ;
ContinueStatement = continue \; ;
ExpressionStatement = Expression \; ;
Assignment = identifier \= Expression \; ;
EmptyStatement = \; ;
Expression = Or;
Or = Or \|\| And | And;
And = And && Equals | Equals;
Equals = Equals \=\= NotEquals | NotEquals;
NotEquals = NotEquals !\= GreaterThan | GreaterThan;
GreaterThan = GreaterThan > LessThan | GreaterThan >\= LessThan | LessThan;
LessThan = LessThan < And | LessThan <\= Add | Add;
Add = Add + Sub | Sub;
Sub = Sub - Mul | Mul;
Mul = Mul * Div | Div;
Div = Div / Mod | Mod;
Mod = Mod % Unary | Unary;
Unary = Parenthesed | Negate | Atom;
Parenthesed = ( Expression );
Negate = - Unary;
Atom = value | identifier;