source 
 prog 
 defn 
 FUN 
 1:1-1:3 
 fun 
 ID 
 1:5-1:8 
 main 
 LBRACKET 
 1:9-1:9 
 ( 
 RBRACKET 
 1:10-1:10 
 ) 
 COLON 
 1:11-1:11 
 : 
 type 
 BOOL 
 1:12-1:15 
 bool 
 EQUALS 
 1:17-1:17 
 = 
 expr 
 LET 
 2:5-2:7 
 let 
 defn 
 TYP 
 3:9-3:11 
 typ 
 ID 
 3:13-3:13 
 a 
 EQUALS 
 3:14-3:14 
 = 
 type 
 INT 
 3:15-3:17 
 int 
 defn 
 VAR 
 4:9-4:11 
 var 
 ID 
 4:13-4:13 
 c 
 COLON 
 4:14-4:14 
 : 
 type 
 ID 
 4:15-4:15 
 a 
 IN 
 5:5-5:6 
 in 
 expr 
 expr 
 ID 
 6:9-6:9 
 c 
 EQUALS 
 6:11-6:11 
 = 
 expr 
 NUM 
 6:13-6:13 
 2 
 COMMA 
 6:14-6:14 
 , 
 expr 
 expr 
 expr 
 ID 
 7:9-7:9 
 c 
 ASTERISK 
 7:11-7:11 
 * 
 expr 
 ID 
 7:13-7:13 
 c 
 GT 
 7:15-7:15 
 > 
 expr 
 expr 
 ID 
 7:17-7:17 
 c 
 PLUS 
 7:19-7:19 
 + 
 expr 
 ID 
 7:21-7:21 
 c 
 END 
 8:5-8:7 
 end 
 COMMA 
 8:8-8:8 
 , 
 expr 
 LET 
 9:5-9:7 
 let 
 defn 
 VAR 
 10:9-10:11 
 var 
 ID 
 10:13-10:13 
 c 
 COLON 
 10:14-10:14 
 : 
 type 
 ID 
 10:15-10:15 
 b 
 defn 
 TYP 
 11:9-11:11 
 typ 
 ID 
 11:13-11:13 
 b 
 EQUALS 
 11:14-11:14 
 = 
 type 
 INT 
 11:15-11:17 
 int 
 IN 
 12:5-12:6 
 in 
 expr 
 expr 
 ID 
 13:9-13:9 
 c 
 EQUALS 
 13:11-13:11 
 = 
 expr 
 NUM 
 13:13-13:13 
 1 
 COMMA 
 13:14-13:14 
 , 
 expr 
 expr 
 expr 
 ID 
 14:9-14:9 
 c 
 ASTERISK 
 14:11-14:11 
 * 
 expr 
 ID 
 14:13-14:13 
 c 
 GT 
 14:15-14:15 
 > 
 expr 
 expr 
 ID 
 14:17-14:17 
 c 
 PLUS 
 14:19-14:19 
 + 
 expr 
 ID 
 14:21-14:21 
 c 
 END 
 15:5-15:7 
 end 
 EOF