source 
 prog 
 defn 
 VAR 
 1:1-1:3 
 var 
 ID 
 1:5-1:7 
 id4 
 COLON 
 1:9-1:9 
 : 
 type 
 LBRACKET 
 1:11-1:11 
 ( 
 ID 
 1:12-1:12 
 a 
 COLON 
 1:13-1:13 
 : 
 type 
 LSQUARE 
 1:14-1:14 
 [ 
 NUM 
 1:15-1:15 
 1 
 RSQUARE 
 1:16-1:16 
 ] 
 type 
 LSQUARE 
 1:17-1:17 
 [ 
 NUM 
 1:18-1:18 
 2 
 RSQUARE 
 1:19-1:19 
 ] 
 type 
 LSQUARE 
 1:20-1:20 
 [ 
 NUM 
 1:21-1:21 
 4 
 RSQUARE 
 1:22-1:22 
 ] 
 type 
 BOOL 
 1:23-1:26 
 bool 
 COMMA 
 1:27-1:27 
 , 
 ID 
 1:29-1:29 
 b 
 COLON 
 1:30-1:30 
 : 
 type 
 HAT 
 1:32-1:32 
 ^ 
 type 
 HAT 
 1:33-1:33 
 ^ 
 type 
 HAT 
 1:34-1:34 
 ^ 
 type 
 HAT 
 1:35-1:35 
 ^ 
 type 
 HAT 
 1:36-1:36 
 ^ 
 type 
 HAT 
 1:37-1:37 
 ^ 
 type 
 HAT 
 1:38-1:38 
 ^ 
 type 
 HAT 
 1:39-1:39 
 ^ 
 type 
 HAT 
 1:40-1:40 
 ^ 
 type 
 HAT 
 1:41-1:41 
 ^ 
 type 
 HAT 
 1:42-1:42 
 ^ 
 type 
 HAT 
 1:43-1:43 
 ^ 
 type 
 HAT 
 1:44-1:44 
 ^ 
 type 
 HAT 
 1:45-1:45 
 ^ 
 type 
 VOID 
 1:46-1:49 
 void 
 COMMA 
 1:50-1:50 
 , 
 ID 
 1:52-1:52 
 c 
 COLON 
 1:53-1:53 
 : 
 type 
 ID 
 1:55-1:62 
 randomid 
 COMMA 
 1:63-1:63 
 , 
 ID 
 1:65-1:65 
 x 
 COLON 
 1:66-1:66 
 : 
 type 
 LBRACKET 
 1:68-1:68 
 ( 
 ID 
 1:69-1:69 
 d 
 COLON 
 1:71-1:71 
 : 
 type 
 INT 
 1:73-1:75 
 int 
 COMMA 
 1:76-1:76 
 , 
 ID 
 1:78-1:78 
 e 
 COLON 
 1:80-1:80 
 : 
 type 
 BOOL 
 1:82-1:85 
 bool 
 COMMA 
 1:86-1:86 
 , 
 ID 
 1:88-1:88 
 f 
 COLON 
 1:90-1:90 
 : 
 type 
 CHAR 
 1:92-1:95 
 char 
 COMMA 
 1:96-1:96 
 , 
 ID 
 1:98-1:98 
 g 
 COLON 
 1:100-1:100 
 : 
 type 
 LCURLY 
 1:102-1:102 
 { 
 ID 
 1:104-1:104 
 h 
 COLON 
 1:106-1:106 
 : 
 type 
 HAT 
 1:108-1:108 
 ^ 
 type 
 HAT 
 1:109-1:109 
 ^ 
 type 
 INT 
 1:110-1:112 
 int 
 COMMA 
 1:113-1:113 
 , 
 ID 
 1:115-1:115 
 i 
 COLON 
 1:116-1:116 
 : 
 type 
 VOID 
 1:118-1:121 
 void 
 RCURLY 
 1:122-1:122 
 } 
 RBRACKET 
 1:123-1:123 
 ) 
 RBRACKET 
 1:125-1:125 
 ) 
 EOF