source
prog
defn
FUN
1:1-1:3
fun
ID
1:5-1:10
dec100
LBRACKET
1:11-1:11
(
ID
1:12-1:12
p
COLON
1:13-1:13
:
type
INT
1:14-1:16
int
RBRACKET
1:17-1:17
)
COLON
1:18-1:18
:
type
INT
1:19-1:21
int
EQUALS
1:23-1:23
=
expr
WHILE
2:5-2:9
while
expr
expr
ID
2:11-2:11
p
GT
2:13-2:13
>
expr
NUM
2:15-2:15
0
DO
2:17-2:18
do
expr
expr
ID
3:9-3:9
p
EQUALS
3:11-3:11
=
expr
expr
ID
3:13-3:13
p
MINUS
3:15-3:15
-
expr
NUM
3:17-3:17
1
END
4:5-4:7
end
COMMA
4:8-4:8
,
expr
LET
5:5-5:7
let
defn
VAR
5:9-5:11
var
ID
5:13-5:13
a
COLON
5:15-5:15
:
type
INT
5:17-5:19
int
IN
5:21-5:22
in
expr
expr
ID
6:9-6:9
a
EQUALS
6:11-6:11
=
expr
NUM
6:13-6:13
1
COMMA
6:14-6:14
,
expr
WHILE
7:9-7:13
while
expr
expr
ID
7:15-7:15
a
LT
7:17-7:17
<
expr
NUM
7:19-7:21
100
DO
7:23-7:24
do
expr
expr
ID
8:13-8:13
a
EQUALS
8:15-8:15
=
expr
expr
ID
8:17-8:17
a
PLUS
8:19-8:19
+
expr
NUM
8:21-8:21
1
END
9:9-9:11
end
COMMA
9:12-9:12
,
expr
expr
ID
10:9-10:14
dec100
LBRACKET
10:15-10:15
(
expr
ID
10:16-10:16
a
RBRACKET
10:17-10:17
)
END
11:5-11:7
end
EOF