source 
 prog 
 defn 
 TYP 
 1:1-1:3 
 typ 
 ID 
 1:5-1:6 
 ii 
 EQUALS 
 1:8-1:8 
 = 
 type 
 INT 
 1:10-1:12 
 int 
 defn 
 FUN 
 3:1-3:3 
 fun 
 ID 
 3:5-3:8 
 main 
 LBRACKET 
 3:9-3:9 
 ( 
 RBRACKET 
 3:10-3:10 
 ) 
 COLON 
 3:11-3:11 
 : 
 type 
 INT 
 3:12-3:14 
 int 
 EQUALS 
 3:16-3:16 
 = 
 expr 
 LET 
 4:5-4:7 
 let 
 defn 
 FUN 
 4:9-4:11 
 fun 
 ID 
 4:13-4:13 
 c 
 LBRACKET 
 4:14-4:14 
 ( 
 RBRACKET 
 4:15-4:15 
 ) 
 COLON 
 4:16-4:16 
 : 
 type 
 INT 
 4:17-4:19 
 int 
 EQUALS 
 4:21-4:21 
 = 
 expr 
 expr 
 NUM 
 4:23-4:23 
 1 
 PLUS 
 4:25-4:25 
 + 
 expr 
 NUM 
 4:27-4:27 
 2 
 defn 
 FUN 
 5:9-5:11 
 fun 
 ID 
 5:13-5:13 
 b 
 LBRACKET 
 5:14-5:14 
 ( 
 RBRACKET 
 5:15-5:15 
 ) 
 COLON 
 5:16-5:16 
 : 
 type 
 ID 
 5:17-5:18 
 ii 
 EQUALS 
 5:20-5:20 
 = 
 expr 
 expr 
 expr 
 expr 
 NUM 
 5:22-5:22 
 5 
 ASTERISK 
 5:24-5:24 
 * 
 expr 
 NUM 
 5:26-5:26 
 4 
 PLUS 
 5:28-5:28 
 + 
 expr 
 NUM 
 5:30-5:30 
 7 
 PLUS 
 5:32-5:32 
 + 
 expr 
 NUM 
 5:34-5:34 
 9 
 IN 
 6:5-6:6 
 in 
 expr 
 expr 
 expr 
 expr 
 ID 
 7:9-7:9 
 c 
 LBRACKET 
 7:10-7:10 
 ( 
 RBRACKET 
 7:11-7:11 
 ) 
 ASTERISK 
 7:13-7:13 
 * 
 expr 
 expr 
 ID 
 7:15-7:15 
 b 
 LBRACKET 
 7:16-7:16 
 ( 
 RBRACKET 
 7:17-7:17 
 ) 
 PLUS 
 7:19-7:19 
 + 
 expr 
 NUM 
 7:21-7:23 
 100 
 END 
 8:5-8:7 
 end 
 EOF