source
prog
defn
TYP
1:1-1:3
typ
ID
1:5-1:5
i
EQUALS
1:7-1:7
=
type
INT
1:9-1:11
int
defn
TYP
2:1-2:3
typ
ID
2:5-2:5
c
EQUALS
2:7-2:7
=
type
CHAR
2:9-2:12
char
defn
TYP
3:1-3:3
typ
ID
3:5-3:5
b
EQUALS
3:7-3:7
=
type
BOOL
3:9-3:12
bool
defn
FUN
5:1-5:3
fun
ID
5:5-5:6
bb
LBRACKET
5:7-5:7
(
ID
5:8-5:9
b1
COLON
5:10-5:10
:
type
INT
5:11-5:13
int
COMMA
5:14-5:14
,
ID
5:16-5:17
b2
COLON
5:18-5:18
:
type
INT
5:19-5:21
int
RBRACKET
5:22-5:22
)
COLON
5:23-5:23
:
type
ID
5:25-5:25
b
EQUALS
5:27-5:27
=
expr
LET
6:5-6:7
let
defn
FUN
7:9-7:11
fun
ID
7:13-7:15
bbb
LBRACKET
7:16-7:16
(
ID
7:17-7:18
d1
COLON
7:19-7:19
:
type
ID
7:20-7:20
i
COMMA
7:21-7:21
,
ID
7:23-7:24
d2
COLON
7:25-7:25
:
type
ID
7:26-7:26
i
RBRACKET
7:27-7:27
)
COLON
7:29-7:29
:
type
ID
7:31-7:31
i
EQUALS
7:33-7:33
=
expr
expr
ID
7:35-7:36
d1
PLUS
7:38-7:38
+
expr
ID
7:40-7:41
d2
IN
8:5-8:6
in
expr
LET
9:9-9:11
let
defn
FUN
9:13-9:15
fun
ID
9:17-9:18
aa
LBRACKET
9:19-9:19
(
RBRACKET
9:20-9:20
)
COLON
9:22-9:22
:
type
ID
9:24-9:24
c
EQUALS
9:26-9:26
=
expr
LITCHAR
9:28-9:30
'a'
defn
FUN
10:13-10:15
fun
ID
10:17-10:19
aaa
LBRACKET
10:20-10:20
(
ID
10:21-10:21
f
COLON
10:22-10:22
:
type
ID
10:23-10:23
i
RBRACKET
10:24-10:24
)
COLON
10:26-10:26
:
type
ID
10:28-10:28
i
EQUALS
10:30-10:30
=
expr
expr
expr
expr
NUM
10:32-10:32
5
ASTERISK
10:34-10:34
*
expr
NUM
10:36-10:36
4
PLUS
10:38-10:38
+
expr
NUM
10:40-10:40
7
PLUS
10:42-10:42
+
expr
expr
NUM
10:44-10:44
9
PERCENT
10:46-10:46
%
expr
NUM
10:48-10:50
110
IN
11:9-11:10
in
expr
expr
expr
ID
12:13-12:15
aaa
LBRACKET
12:16-12:16
(
expr
NUM
12:17-12:17
8
RBRACKET
12:18-12:18
)
ASTERISK
12:20-12:20
*
expr
expr
ID
12:22-12:24
bbb
LBRACKET
12:25-12:25
(
expr
NUM
12:26-12:26
2
COMMA
12:27-12:27
,
expr
NUM
12:29-12:29
3
RBRACKET
12:30-12:30
)
END
13:5-13:7
end
COMMA
13:8-13:8
,
expr
expr
ID
14:5-14:6
b1
GEQ
14:8-14:9
>=
expr
ID
14:11-14:12
b2
END
15:4-15:6
end
EOF