source 
 prog 
 defn 
 TYP 
 2:1-2:3 
 typ 
 ID 
 2:5-2:5 
 a 
 EQUALS 
 2:7-2:7 
 = 
 type 
 INT 
 2:9-2:11 
 int 
 defn 
 FUN 
 3:1-3:3 
 fun 
 ID 
 3:5-3:5 
 f 
 LBRACKET 
 3:6-3:6 
 ( 
 ID 
 3:7-3:7 
 x 
 COLON 
 3:8-3:8 
 : 
 type 
 ID 
 3:9-3:9 
 a 
 RBRACKET 
 3:10-3:10 
 ) 
 COLON 
 3:12-3:12 
 : 
 type 
 INT 
 3:14-3:16 
 int 
 EQUALS 
 3:18-3:18 
 = 
 expr 
 LET 
 4:5-4:7 
 let 
 defn 
 TYP 
 5:9-5:11 
 typ 
 ID 
 5:13-5:13 
 a 
 EQUALS 
 5:15-5:15 
 = 
 type 
 CHAR 
 5:17-5:20 
 char 
 defn 
 VAR 
 6:9-6:11 
 var 
 ID 
 6:13-6:13 
 y 
 COLON 
 6:15-6:15 
 : 
 type 
 ID 
 6:17-6:17 
 a 
 IN 
 7:5-7:6 
 in 
 expr 
 LBRACKET 
 8:9-8:9 
 ( 
 expr 
 expr 
 ID 
 8:10-8:10 
 x 
 PLUS 
 8:12-8:12 
 + 
 expr 
 ID 
 8:14-8:14 
 y 
 COMMA 
 8:15-8:15 
 , 
 expr 
 NUM 
 8:17-8:17 
 3 
 RBRACKET 
 8:18-8:18 
 ) 
 END 
 9:5-9:7 
 end 
 EOF