source 
 prog 
 defn 
 TYP 
 1:1-1:3 
 typ 
 ID 
 1:5-1:7 
 hax 
 EQUALS 
 1:9-1:9 
 = 
 type 
 LCURLY 
 1:11-1:11 
 { 
 ID 
 1:12-1:12 
 a 
 COLON 
 1:14-1:14 
 : 
 type 
 INT 
 1:16-1:18 
 int 
 RCURLY 
 1:19-1:19 
 } 
 defn 
 VAR 
 2:1-2:3 
 var 
 ID 
 2:5-2:6 
 id 
 COLON 
 2:8-2:8 
 : 
 type 
 LBRACKET 
 2:10-2:10 
 ( 
 type 
 LBRACKET 
 2:11-2:11 
 ( 
 type 
 LBRACKET 
 2:12-2:12 
 ( 
 type 
 LBRACKET 
 2:13-2:13 
 ( 
 type 
 LBRACKET 
 2:14-2:14 
 ( 
 type 
 LBRACKET 
 2:15-2:15 
 ( 
 type 
 LBRACKET 
 2:16-2:16 
 ( 
 type 
 INT 
 2:17-2:19 
 int 
 RBRACKET 
 2:20-2:20 
 ) 
 RBRACKET 
 2:21-2:21 
 ) 
 RBRACKET 
 2:22-2:22 
 ) 
 RBRACKET 
 2:23-2:23 
 ) 
 RBRACKET 
 2:24-2:24 
 ) 
 RBRACKET 
 2:25-2:25 
 ) 
 RBRACKET 
 2:26-2:26 
 ) 
 defn 
 FUN 
 3:1-3:3 
 fun 
 ID 
 3:5-3:5 
 x 
 LBRACKET 
 3:6-3:6 
 ( 
 RBRACKET 
 3:7-3:7 
 ) 
 COLON 
 3:9-3:9 
 : 
 type 
 VOID 
 3:11-3:14 
 void 
 EQUALS 
 3:16-3:16 
 = 
 expr 
 LBRACKET 
 4:9-4:9 
 ( 
 expr 
 NUM 
 4:10-4:10 
 1 
 COMMA 
 4:11-4:11 
 , 
 expr 
 NUM 
 4:13-4:13 
 2 
 COMMA 
 4:14-4:14 
 , 
 expr 
 NUM 
 4:16-4:16 
 3 
 COMMA 
 4:17-4:17 
 , 
 expr 
 NUM 
 4:19-4:19 
 4 
 RBRACKET 
 4:20-4:20 
 ) 
 EOF