source
prog
defn
FUN
1:1-1:3
fun
ID
1:5-1:9
funny
LBRACKET
1:10-1:10
(
RBRACKET
1:11-1:11
)
COLON
1:13-1:13
:
type
VOID
1:15-1:18
void
EQUALS
1:20-1:20
=
expr
expr
HAT
1:22-1:22
^
expr
expr
expr
expr
ID
1:23-1:23
a
LSQUARE
1:24-1:24
[
expr
ID
1:25-1:25
b
RSQUARE
1:26-1:26
]
DOT
1:27-1:27
.
ID
1:28-1:28
c
HAT
1:29-1:29
^
AS
1:31-1:32
as
type
LCURLY
1:34-1:34
{
ID
1:36-1:36
a
COLON
1:37-1:37
:
type
LCURLY
1:39-1:39
{
RCURLY
1:40-1:40
}
COMMA
1:41-1:41
,
ID
1:43-1:43
b
COLON
1:44-1:44
:
type
LBRACKET
1:46-1:46
(
COLON
1:47-1:47
:
type
LCURLY
1:48-1:48
{
ID
1:49-1:49
a
COLON
1:50-1:50
:
type
LBRACKET
1:52-1:52
(
ID
1:54-1:54
g
COLON
1:56-1:56
:
type
INT
1:58-1:60
int
RBRACKET
1:61-1:61
)
RCURLY
1:62-1:62
}
COLON
1:63-1:63
:
type
BOOL
1:64-1:67
bool
RBRACKET
1:68-1:68
)
RCURLY
1:69-1:69
}
COMMA
1:70-1:70
,
expr
SIZEOF
1:72-1:77
sizeof
type
LCURLY
1:79-1:79
{
ID
1:81-1:81
a
COLON
1:82-1:82
:
type
LCURLY
1:84-1:84
{
RCURLY
1:85-1:85
}
COMMA
1:86-1:86
,
ID
1:88-1:88
b
COLON
1:89-1:89
:
type
LBRACKET
1:91-1:91
(
COLON
1:92-1:92
:
type
LCURLY
1:93-1:93
{
ID
1:94-1:94
a
COLON
1:95-1:95
:
type
LBRACKET
1:97-1:97
(
ID
1:99-1:99
g
COLON
1:101-1:101
:
type
INT
1:103-1:105
int
RBRACKET
1:106-1:106
)
RCURLY
1:107-1:107
}
COLON
1:108-1:108
:
type
BOOL
1:109-1:112
bool
RBRACKET
1:113-1:113
)
RCURLY
1:114-1:114
}
defn
TYP
4:1-4:3
typ
ID
4:5-4:5
t
EQUALS
4:7-4:7
=
type
LBRACKET
4:9-4:9
(
COLON
4:10-4:10
:
COLON
4:11-4:11
:
type
ID
4:12-4:12
t
RBRACKET
4:13-4:13
)
EOF