-
Notifications
You must be signed in to change notification settings - Fork 0
/
KilianCode303va1.g4
43 lines (27 loc) · 914 Bytes
/
KilianCode303va1.g4
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
grammar KilianCode303va1;
program: functionDefinition* EOF;
functionDefinition: '§§f§' IDENTIFIER statement*;
statement: assignment
| conditionalStatement
| loopingConstruct
| functionCall
| returnStatement;
assignment: IDENTIFIER '=' expression;
conditionalStatement: 'if' expression statement ('else' statement)?;
loopingConstruct: 'while' expression statement
| 'for' IDENTIFIER 'in' expression statement;
functionCall: '§f§' IDENTIFIER;
returnStatement: 'return' expression;
expression: IDENTIFIER ('+' | '-' | '*' | '/' | '%' | '§lo§' | '==') IDENTIFIER
| IDENTIFIER
| STRING
| NUMBER;
IDENTIFIER: '§xi§' NAME
| '§xo§' NAME
| '§v§' NAME
| NAME;
NAME: [a-zA-Z_][a-zA-Z0-9_]*;
STRING: '"' .*? '"';
NUMBER: [0-9]+;
COMMENT: '/*' .*? '*/' -> skip;
WS: [ \t\r\n]+ -> skip;