source
prog
defn
TYP
1:1-1:3
typ
ID
1:5-1:5
b
EQUALS
1:7-1:7
=
type
BOOL
1:9-1:12
bool
defn
FUN
2:1-2:3
fun
ID
2:5-2:8
main
LBRACKET
2:9-2:9
(
RBRACKET
2:10-2:10
)
COLON
2:12-2:12
:
type
ID
2:14-2:14
b
EQUALS
2:16-2:16
=
expr
LET
3:5-3:7
let
defn
VAR
3:9-3:11
var
ID
3:13-3:14
b1
COLON
3:16-3:16
:
type
ID
3:18-3:18
b
defn
VAR
3:20-3:22
var
ID
3:24-3:25
b2
COLON
3:27-3:27
:
type
ID
3:29-3:29
b
IN
3:31-3:32
in
expr
IF
4:9-4:10
if
expr
expr
expr
expr
ID
4:12-4:13
b1
AND
4:15-4:17
and
expr
ID
4:19-4:20
b2
OR
4:22-4:23
or
expr
ID
4:25-4:26
b1
OR
4:28-4:29
or
expr
ID
4:31-4:32
b2
THEN
4:34-4:37
then
expr
expr
expr
expr
ID
5:13-5:14
b2
AND
5:16-5:18
and
expr
ID
5:20-5:21
b1
AND
5:23-5:25
and
expr
TRUE
5:27-5:30
true
OR
5:32-5:33
or
expr
FALSE
5:35-5:39
false
ELSE
6:9-6:12
else
expr
LET
7:13-7:15
let
defn
VAR
7:17-7:19
var
ID
7:21-7:22
b1
COLON
7:24-7:24
:
type
ID
7:26-7:26
b
defn
VAR
7:28-7:30
var
ID
7:32-7:33
b2
COLON
7:35-7:35
:
type
ID
7:37-7:37
b
IN
7:39-7:40
in
expr
IF
8:17-8:18
if
expr
expr
expr
expr
ID
8:20-8:21
b1
AND
8:23-8:25
and
expr
ID
8:27-8:28
b2
OR
8:30-8:31
or
expr
ID
8:33-8:34
b1
OR
8:36-8:37
or
expr
ID
8:39-8:40
b2
THEN
8:42-8:45
then
expr
expr
expr
expr
ID
9:21-9:22
b2
AND
9:24-9:26
and
expr
ID
9:28-9:29
b1
AND
9:31-9:33
and
expr
TRUE
9:35-9:38
true
OR
9:40-9:41
or
expr
FALSE
9:43-9:47
false
ELSE
10:17-10:20
else
expr
LET
11:21-11:23
let
defn
VAR
11:25-11:27
var
ID
11:29-11:30
b1
COLON
11:32-11:32
:
type
ID
11:34-11:34
b
defn
VAR
11:36-11:38
var
ID
11:40-11:41
b2
COLON
11:43-11:43
:
type
ID
11:45-11:45
b
IN
11:47-11:48
in
expr
IF
12:25-12:26
if
expr
expr
expr
expr
ID
12:28-12:29
b1
AND
12:31-12:33
and
expr
ID
12:35-12:36
b2
OR
12:38-12:39
or
expr
ID
12:41-12:42
b1
OR
12:44-12:45
or
expr
ID
12:47-12:48
b2
THEN
12:50-12:53
then
expr
expr
expr
expr
ID
13:29-13:30
b2
AND
13:32-13:34
and
expr
ID
13:36-13:37
b1
AND
13:39-13:41
and
expr
TRUE
13:43-13:46
true
OR
13:48-13:49
or
expr
FALSE
13:51-13:55
false
ELSE
14:25-14:28
else
expr
LBRACKET
15:29-15:29
(
expr
LET
15:30-15:32
let
defn
VAR
15:34-15:36
var
ID
15:38-15:39
b1
COLON
15:41-15:41
:
type
ID
15:43-15:43
b
defn
VAR
15:45-15:47
var
ID
15:49-15:50
b2
COLON
15:52-15:52
:
type
ID
15:54-15:54
b
IN
15:56-15:57
in
expr
IF
16:33-16:34
if
expr
expr
expr
expr
ID
16:36-16:37
b1
AND
16:39-16:41
and
expr
ID
16:43-16:44
b2
OR
16:46-16:47
or
expr
ID
16:49-16:50
b1
OR
16:52-16:53
or
expr
ID
16:55-16:56
b2
THEN
16:58-16:61
then
expr
expr
expr
expr
ID
17:37-17:38
b2
AND
17:40-17:42
and
expr
ID
17:44-17:45
b1
AND
17:47-17:49
and
expr
TRUE
17:51-17:54
true
OR
17:56-17:57
or
expr
FALSE
17:59-17:63
false
ELSE
18:33-18:36
else
expr
FALSE
19:37-19:41
false
END
20:33-20:35
end
END
21:29-21:31
end
COMMA
21:32-21:32
,
expr
LET
22:29-22:31
let
defn
VAR
22:33-22:35
var
ID
22:37-22:38
b1
COLON
22:40-22:40
:
type
ID
22:42-22:42
b
defn
VAR
22:44-22:46
var
ID
22:48-22:49
b2
COLON
22:51-22:51
:
type
ID
22:53-22:53
b
IN
22:55-22:56
in
expr
IF
23:33-23:34
if
expr
expr
expr
expr
ID
23:36-23:37
b1
AND
23:39-23:41
and
expr
ID
23:43-23:44
b2
OR
23:46-23:47
or
expr
ID
23:49-23:50
b1
OR
23:52-23:53
or
expr
ID
23:55-23:56
b2
THEN
23:58-23:61
then
expr
expr
expr
expr
ID
24:37-24:38
b2
AND
24:40-24:42
and
expr
ID
24:44-24:45
b1
AND
24:47-24:49
and
expr
TRUE
24:51-24:54
true
OR
24:56-24:57
or
expr
FALSE
24:59-24:63
false
ELSE
25:33-25:36
else
expr
FALSE
26:37-26:41
false
END
27:33-27:35
end
END
28:29-28:31
end
RBRACKET
28:32-28:32
)
END
29:25-29:27
end
END
30:21-30:23
end
END
31:17-31:19
end
END
32:13-32:15
end
END
33:9-33:11
end
END
34:5-34:7
end
EOF