source
prog
defn
FUN
1:1-1:3
fun
ID
1:5-1:9
funny
LBRACKET
1:10-1:10
(
ID
1:11-1:11
a
COLON
1:13-1:13
:
type
INT
1:15-1:17
int
COMMA
1:18-1:18
,
ID
1:20-1:20
b
COLON
1:22-1:22
:
type
INT
1:24-1:26
int
RBRACKET
1:27-1:27
)
COLON
1:29-1:29
:
type
VOID
1:31-1:34
void
EQUALS
1:36-1:36
=
expr
expr
HAT
1:38-1:38
^
expr
expr
expr
expr
ID
1:39-1:39
a
LSQUARE
1:40-1:40
[
expr
ID
1:41-1:41
b
RSQUARE
1:42-1:42
]
DOT
1:43-1:43
.
ID
1:44-1:44
c
HAT
1:45-1:45
^
AS
1:47-1:48
as
type
LCURLY
1:50-1:50
{
ID
1:52-1:52
a
COLON
1:53-1:53
:
type
LCURLY
1:55-1:55
{
ID
1:56-1:56
a
COLON
1:57-1:57
:
type
INT
1:59-1:61
int
RCURLY
1:62-1:62
}
COMMA
1:63-1:63
,
ID
1:65-1:65
b
COLON
1:66-1:66
:
type
LBRACKET
1:68-1:68
(
COLON
1:69-1:69
:
type
LCURLY
1:70-1:70
{
ID
1:71-1:71
a
COLON
1:72-1:72
:
type
LBRACKET
1:74-1:74
(
ID
1:76-1:76
g
COLON
1:78-1:78
:
type
INT
1:80-1:82
int
RBRACKET
1:83-1:83
)
RCURLY
1:84-1:84
}
COLON
1:85-1:85
:
type
BOOL
1:86-1:89
bool
RBRACKET
1:90-1:90
)
RCURLY
1:91-1:91
}
COMMA
1:92-1:92
,
expr
SIZEOF
1:94-1:99
sizeof
type
LCURLY
1:101-1:101
{
ID
1:103-1:103
a
COLON
1:104-1:104
:
type
LCURLY
1:106-1:106
{
ID
1:107-1:107
a
COLON
1:108-1:108
:
type
INT
1:110-1:112
int
RCURLY
1:113-1:113
}
COMMA
1:114-1:114
,
ID
1:116-1:116
b
COLON
1:117-1:117
:
type
LBRACKET
1:119-1:119
(
COLON
1:120-1:120
:
type
LCURLY
1:121-1:121
{
ID
1:122-1:122
a
COLON
1:123-1:123
:
type
LBRACKET
1:125-1:125
(
ID
1:127-1:127
g
COLON
1:129-1:129
:
type
INT
1:131-1:133
int
RBRACKET
1:134-1:134
)
RCURLY
1:135-1:135
}
COLON
1:136-1:136
:
type
BOOL
1:137-1:140
bool
RBRACKET
1:141-1:141
)
RCURLY
1:142-1:142
}
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