source 
 prog 
 defn 
 FUN 
 4:1-4:3 
 fun 
 ID 
 4:5-4:5 
 f 
 LBRACKET 
 4:6-4:6 
 ( 
 ID 
 4:7-4:7 
 a 
 COLON 
 4:8-4:8 
 : 
 type 
 INT 
 4:9-4:11 
 int 
 COMMA 
 4:12-4:12 
 , 
 ID 
 4:14-4:14 
 b 
 COLON 
 4:15-4:15 
 : 
 type 
 INT 
 4:16-4:18 
 int 
 RBRACKET 
 4:19-4:19 
 ) 
 COLON 
 4:20-4:20 
 : 
 type 
 INT 
 4:21-4:23 
 int 
 EQUALS 
 4:24-4:24 
 = 
 expr 
 expr 
 ID 
 5:5-5:5 
 a 
 PLUS 
 5:7-5:7 
 + 
 expr 
 ID 
 5:9-5:9 
 b 
 COMMA 
 5:10-5:10 
 , 
 expr 
 LET 
 6:5-6:7 
 let 
 defn 
 VAR 
 6:9-6:11 
 var 
 ID 
 6:13-6:13 
 a 
 COLON 
 6:14-6:14 
 : 
 type 
 INT 
 6:15-6:17 
 int 
 defn 
 VAR 
 6:19-6:21 
 var 
 ID 
 6:23-6:23 
 b 
 COLON 
 6:24-6:24 
 : 
 type 
 INT 
 6:25-6:27 
 int 
 IN 
 6:29-6:30 
 in 
 expr 
 expr 
 ID 
 7:9-7:9 
 a 
 EQUALS 
 7:11-7:11 
 = 
 expr 
 NUM 
 7:13-7:13 
 0 
 COMMA 
 7:14-7:14 
 , 
 expr 
 expr 
 ID 
 8:9-8:9 
 b 
 EQUALS 
 8:11-8:11 
 = 
 expr 
 NUM 
 8:13-8:13 
 0 
 COMMA 
 8:14-8:14 
 , 
 expr 
 expr 
 ID 
 9:9-9:9 
 a 
 PLUS 
 9:11-9:11 
 + 
 expr 
 ID 
 9:13-9:13 
 b 
 END 
 10:5-10:7 
 end 
 EOF