source 
 prog 
 defn 
 TYP 
 1:2-1:4 
 typ 
 ID 
 1:6-1:7 
 vv 
 EQUALS 
 1:9-1:9 
 = 
 type 
 VOID 
 1:11-1:14 
 void 
 defn 
 FUN 
 3:2-3:4 
 fun 
 ID 
 3:6-3:7 
 f1 
 LBRACKET 
 3:8-3:8 
 ( 
 ID 
 3:9-3:10 
 p1 
 COLON 
 3:11-3:11 
 : 
 type 
 LBRACKET 
 3:12-3:12 
 ( 
 ID 
 3:13-3:13 
 i 
 COLON 
 3:14-3:14 
 : 
 type 
 INT 
 3:15-3:17 
 int 
 COMMA 
 3:18-3:18 
 , 
 ID 
 3:20-3:20 
 j 
 COLON 
 3:21-3:21 
 : 
 type 
 INT 
 3:22-3:24 
 int 
 RBRACKET 
 3:25-3:25 
 ) 
 RBRACKET 
 3:26-3:26 
 ) 
 COLON 
 3:27-3:27 
 : 
 type 
 INT 
 3:28-3:30 
 int 
 defn 
 FUN 
 4:2-4:4 
 fun 
 ID 
 4:6-4:7 
 f2 
 LBRACKET 
 4:8-4:8 
 ( 
 ID 
 4:9-4:10 
 p2 
 COLON 
 4:11-4:11 
 : 
 type 
 LCURLY 
 4:12-4:12 
 { 
 ID 
 4:13-4:13 
 i 
 COLON 
 4:14-4:14 
 : 
 type 
 INT 
 4:15-4:17 
 int 
 COMMA 
 4:18-4:18 
 , 
 ID 
 4:20-4:20 
 j 
 COLON 
 4:21-4:21 
 : 
 type 
 INT 
 4:22-4:24 
 int 
 RCURLY 
 4:25-4:25 
 } 
 RBRACKET 
 4:26-4:26 
 ) 
 COLON 
 4:27-4:27 
 : 
 type 
 CHAR 
 4:28-4:31 
 char 
 defn 
 FUN 
 5:2-5:4 
 fun 
 ID 
 5:6-5:7 
 f3 
 LBRACKET 
 5:8-5:8 
 ( 
 ID 
 5:9-5:10 
 p3 
 COLON 
 5:11-5:11 
 : 
 type 
 LCURLY 
 5:12-5:12 
 { 
 ID 
 5:13-5:14 
 s1 
 COLON 
 5:15-5:15 
 : 
 type 
 LCURLY 
 5:17-5:17 
 { 
 ID 
 5:18-5:20 
 s21 
 COLON 
 5:21-5:21 
 : 
 type 
 LCURLY 
 5:22-5:22 
 { 
 ID 
 5:23-5:23 
 i 
 COLON 
 5:24-5:24 
 : 
 type 
 INT 
 5:25-5:27 
 int 
 COMMA 
 5:28-5:28 
 , 
 ID 
 5:30-5:30 
 j 
 COLON 
 5:31-5:31 
 : 
 type 
 INT 
 5:33-5:35 
 int 
 RCURLY 
 5:36-5:36 
 } 
 COMMA 
 5:37-5:37 
 , 
 ID 
 5:39-5:41 
 s22 
 COLON 
 5:42-5:42 
 : 
 type 
 LCURLY 
 5:43-5:43 
 { 
 ID 
 5:44-5:44 
 i 
 COLON 
 5:45-5:45 
 : 
 type 
 INT 
 5:46-5:48 
 int 
 COMMA 
 5:49-5:49 
 , 
 ID 
 5:51-5:51 
 j 
 COLON 
 5:52-5:52 
 : 
 type 
 INT 
 5:53-5:55 
 int 
 RCURLY 
 5:56-5:56 
 } 
 RCURLY 
 5:57-5:57 
 } 
 COMMA 
 5:58-5:58 
 , 
 ID 
 5:60-5:61 
 s2 
 COLON 
 5:62-5:62 
 : 
 type 
 LBRACKET 
 5:63-5:63 
 ( 
 ID 
 5:64-5:64 
 i 
 COLON 
 5:65-5:65 
 : 
 type 
 INT 
 5:66-5:68 
 int 
 COMMA 
 5:69-5:69 
 , 
 ID 
 5:71-5:71 
 j 
 COLON 
 5:72-5:72 
 : 
 type 
 INT 
 5:74-5:76 
 int 
 RBRACKET 
 5:77-5:77 
 ) 
 RCURLY 
 5:78-5:78 
 } 
 RBRACKET 
 5:79-5:79 
 ) 
 COLON 
 5:80-5:80 
 : 
 type 
 BOOL 
 5:81-5:84 
 bool 
 defn 
 FUN 
 6:2-6:4 
 fun 
 ID 
 6:6-6:7 
 f4 
 LBRACKET 
 6:8-6:8 
 ( 
 ID 
 6:9-6:10 
 p4 
 COLON 
 6:11-6:11 
 : 
 type 
 ID 
 6:12-6:13 
 vv 
 RBRACKET 
 6:14-6:14 
 ) 
 COLON 
 6:15-6:15 
 : 
 type 
 ID 
 6:16-6:17 
 vv 
 EOF