-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLogo.g4
More file actions
55 lines (46 loc) · 986 Bytes
/
Copy pathLogo.g4
File metadata and controls
55 lines (46 loc) · 986 Bytes
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
grammar Logo ;
@header {
}
prog: logoExpression+ EOF ;
logoExpression: forward
| back
| right
| left
| clearscreen
| set
| penUp
| penDown
| resetAngle
;
forward: FORWARD INT ;
back: BACK INT ;
right: RIGHT INT;
left: LEFT INT;
clearscreen: CLEARSCREEN;
set: SET POINT;
penUp: PEN_UP;
penDown: PEN_DOWN;
resetAngle: RESET_ANGLE;
// Lexer Rules
fragment FD: ('forward' | 'fd');
fragment BK: ('back' | 'bk');
fragment LT: ('left' | 'lt');
fragment RT: ('right' | 'rt');
fragment CLS: ('clearscreen' | 'cls');
fragment ST: ('set' | 'st');
fragment PU: ('penUp' | 'pu');
fragment PD: ('penDown' | 'pd');
FORWARD: FD;
BACK: BK;
LEFT: LT;
RIGHT: RT;
CLEARSCREEN: CLS;
SET: ST;
PEN_UP: PU;
PEN_DOWN: PD;
RESET_ANGLE: 'resetAngle';
INT: [0-9]+ ;
POINT: INT','INT;
NEWLINE: '\r'? '\n' -> skip;
WS: ' '+ -> skip;
COMMENT: '//' ~[\n]* -> skip;