source 
 prog 
 defn 
 TYP 
 1:1-1:3 
 typ 
 ID 
 1:5-1:7 
 idt 
 EQUALS 
 1:9-1:9 
 = 
 type 
 INT 
 1:11-1:13 
 int 
 defn 
 FUN 
 2:1-2:3 
 fun 
 ID 
 2:5-2:6 
 id 
 LBRACKET 
 2:8-2:8 
 ( 
 ID 
 2:10-2:11 
 id 
 COLON 
 2:13-2:13 
 : 
 type 
 ID 
 2:15-2:17 
 idt 
 RBRACKET 
 2:19-2:19 
 ) 
 COLON 
 2:21-2:21 
 : 
 type 
 LBRACKET 
 2:23-2:23 
 ( 
 ID 
 2:24-2:24 
 a 
 COLON 
 2:25-2:25 
 : 
 type 
 LSQUARE 
 2:26-2:26 
 [ 
 NUM 
 2:27-2:27 
 1 
 RSQUARE 
 2:28-2:28 
 ] 
 type 
 LSQUARE 
 2:29-2:29 
 [ 
 NUM 
 2:30-2:30 
 2 
 RSQUARE 
 2:31-2:31 
 ] 
 type 
 LSQUARE 
 2:32-2:32 
 [ 
 NUM 
 2:33-2:33 
 4 
 RSQUARE 
 2:34-2:34 
 ] 
 type 
 LSQUARE 
 2:35-2:35 
 [ 
 NUM 
 2:36-2:37 
 12 
 RSQUARE 
 2:38-2:38 
 ] 
 type 
 VOID 
 2:39-2:42 
 void 
 RBRACKET 
 2:43-2:43 
 ) 
 EQUALS 
 2:45-2:45 
 = 
 expr 
 ID 
 2:47-2:48 
 id 
 COMMA 
 2:49-2:49 
 , 
 expr 
 NUM 
 2:51-2:51 
 1 
 COMMA 
 2:52-2:52 
 , 
 expr 
 TRUE 
 2:54-2:57 
 true 
 COMMA 
 2:58-2:58 
 , 
 expr 
 FALSE 
 2:60-2:64 
 false 
 COMMA 
 2:65-2:65 
 , 
 expr 
 LITCHAR 
 2:67-2:69 
 'a' 
 COMMA 
 2:70-2:70 
 , 
 expr 
 STRING 
 2:72-2:76 
 "niz" 
 COMMA 
 2:77-2:77 
 , 
 expr 
 STRING 
 2:79-2:88 
 "niz spet" 
 COMMA 
 2:89-2:89 
 , 
 expr 
 NONE 
 2:91-2:94 
 none 
 COMMA 
 2:95-2:95 
 , 
 expr 
 NIL 
 2:97-2:99 
 nil 
 EOF