source
prog
defn
TYP
1:1-1:3
typ
ID
1:5-1:5
T
EQUALS
1:7-1:7
=
type
INT
1:9-1:11
int
defn
TYP
3:1-3:3
typ
ID
3:5-3:9
idtyp
EQUALS
3:11-3:11
=
type
ID
3:13-3:13
T
defn
VAR
5:1-5:3
var
ID
5:5-5:9
idvar
COLON
5:11-5:11
:
type
ID
5:13-5:13
T
defn
FUN
7:1-7:3
fun
ID
7:5-7:10
idfun1
LBRACKET
7:12-7:12
(
ID
7:13-7:16
par1
COLON
7:18-7:18
:
type
LCURLY
7:20-7:20
{
ID
7:22-7:22
a
COLON
7:23-7:23
:
type
LCURLY
7:25-7:25
{
ID
7:26-7:26
a
COLON
7:27-7:27
:
type
ID
7:29-7:29
T
RCURLY
7:30-7:30
}
COMMA
7:31-7:31
,
ID
7:33-7:33
b
COLON
7:34-7:34
:
type
LBRACKET
7:36-7:36
(
COLON
7:37-7:37
:
type
LCURLY
7:38-7:38
{
ID
7:39-7:39
a
COLON
7:40-7:40
:
type
LBRACKET
7:42-7:42
(
ID
7:44-7:44
g
COLON
7:46-7:46
:
type
INT
7:48-7:50
int
RBRACKET
7:51-7:51
)
RCURLY
7:52-7:52
}
COLON
7:53-7:53
:
type
BOOL
7:54-7:57
bool
RBRACKET
7:58-7:58
)
RCURLY
7:59-7:59
}
RBRACKET
7:60-7:60
)
COLON
7:62-7:62
:
type
LCURLY
7:64-7:64
{
ID
7:65-7:65
a
COLON
7:66-7:66
:
type
INT
7:68-7:70
int
RCURLY
7:71-7:71
}
defn
FUN
9:1-9:3
fun
ID
9:5-9:10
idfun2
LBRACKET
9:12-9:12
(
RBRACKET
9:13-9:13
)
COLON
9:15-9:15
:
type
VOID
9:17-9:20
void
EQUALS
9:22-9:22
=
expr
NOT
9:24-9:26
not
expr
TRUE
9:28-9:31
true
COMMA
9:32-9:32
,
expr
PLUS
9:34-9:34
+
expr
NUM
9:35-9:37
100
COMMA
9:38-9:38
,
expr
MINUS
9:40-9:40
-
expr
NUM
9:41-9:43
100
COMMA
9:44-9:44
,
expr
expr
NUM
9:46-9:46
1
PLUS
9:47-9:47
+
expr
NUM
9:48-9:48
2
COMMA
9:49-9:49
,
expr
expr
NUM
9:51-9:51
1
MINUS
9:52-9:52
-
expr
NUM
9:53-9:53
3
COMMA
9:54-9:54
,
expr
expr
NUM
9:56-9:56
1
ASTERISK
9:57-9:57
*
expr
NUM
9:58-9:58
3
COMMA
9:59-9:59
,
expr
expr
NUM
9:61-9:61
4
ASTERISK
9:62-9:62
*
expr
NUM
9:63-9:64
22
COMMA
9:65-9:65
,
expr
expr
NUM
9:67-9:67
5
SLASH
9:68-9:68
/
expr
NUM
9:69-9:69
2
COMMA
9:70-9:70
,
expr
expr
NUM
9:72-9:73
35
PERCENT
9:74-9:74
%
expr
NUM
9:75-9:76
23
COMMA
9:77-9:77
,
expr
expr
TRUE
9:79-9:82
true
AND
9:84-9:86
and
expr
FALSE
9:88-9:92
false
COMMA
9:93-9:93
,
expr
expr
FALSE
9:95-9:99
false
OR
9:101-9:102
or
expr
TRUE
9:104-9:107
true
COMMA
9:108-9:108
,
expr
LET
9:110-9:112
let
defn
VAR
9:114-9:116
var
ID
9:118-9:125
assignme
COLON
9:127-9:127
:
type
INT
9:129-9:131
int
defn
VAR
9:133-9:135
var
ID
9:137-9:137
a
COLON
9:139-9:139
:
type
BOOL
9:141-9:144
bool
defn
VAR
9:146-9:148
var
ID
9:150-9:150
b
COLON
9:152-9:152
:
type
BOOL
9:154-9:157
bool
IN
9:159-9:160
in
expr
expr
ID
9:162-9:169
assignme
EQUALS
9:171-9:171
=
expr
NUM
9:173-9:173
1
COMMA
9:174-9:174
,
expr
expr
ID
9:177-9:177
a
EEQUALS
9:179-9:180
==
expr
ID
9:182-9:182
b
END
9:184-9:186
end
COMMA
9:187-9:187
,
expr
expr
NUM
9:189-9:191
234
GEQ
9:193-9:194
>=
expr
NUM
9:196-9:198
123
COMMA
9:199-9:199
,
expr
expr
NUM
9:201-9:202
23
LT
9:203-9:203
<
expr
NUM
9:204-9:206
235
COMMA
9:207-9:207
,
expr
expr
NUM
9:209-9:210
34
GT
9:211-9:211
>
expr
NUM
9:212-9:212
2
COMMA
9:214-9:214
,
expr
expr
NUM
9:216-9:216
3
LT
9:217-9:217
<
expr
NUM
9:218-9:218
5
COMMA
9:219-9:219
,
expr
expr
NUM
9:221-9:221
2
LEQ
9:222-9:223
<=
expr
NUM
9:224-9:224
2
EOF