source 
 prog 
 defn 
 FUN 
 1:1-1:3 
 fun 
 ID 
 1:5-1:5 
 f 
 LBRACKET 
 1:6-1:6 
 ( 
 RBRACKET 
 1:7-1:7 
 ) 
 COLON 
 1:9-1:9 
 : 
 type 
 VOID 
 1:11-1:14 
 void 
 EQUALS 
 1:16-1:16 
 = 
 expr 
 LET 
 1:18-1:20 
 let 
 defn 
 FUN 
 1:22-1:24 
 fun 
 ID 
 1:26-1:26 
 f 
 LBRACKET 
 1:27-1:27 
 ( 
 ID 
 1:28-1:28 
 a 
 COLON 
 1:30-1:30 
 : 
 type 
 INT 
 1:32-1:34 
 int 
 COMMA 
 1:35-1:35 
 , 
 ID 
 1:37-1:37 
 b 
 COLON 
 1:39-1:39 
 : 
 type 
 INT 
 1:41-1:43 
 int 
 COMMA 
 1:44-1:44 
 , 
 ID 
 1:46-1:46 
 c 
 COLON 
 1:48-1:48 
 : 
 type 
 INT 
 1:50-1:52 
 int 
 RBRACKET 
 1:53-1:53 
 ) 
 COLON 
 1:54-1:54 
 : 
 type 
 VOID 
 1:55-1:58 
 void 
 IN 
 1:60-1:61 
 in 
 expr 
 LET 
 1:63-1:65 
 let 
 defn 
 FUN 
 1:67-1:69 
 fun 
 ID 
 1:71-1:71 
 f 
 LBRACKET 
 1:72-1:72 
 ( 
 RBRACKET 
 1:73-1:73 
 ) 
 COLON 
 1:74-1:74 
 : 
 type 
 VOID 
 1:75-1:78 
 void 
 IN 
 1:80-1:81 
 in 
 expr 
 LBRACKET 
 1:83-1:83 
 ( 
 expr 
 ID 
 1:84-1:84 
 a 
 COMMA 
 1:85-1:85 
 , 
 expr 
 ID 
 1:87-1:87 
 b 
 COMMA 
 1:88-1:88 
 , 
 expr 
 ID 
 1:90-1:90 
 c 
 RBRACKET 
 1:91-1:91 
 ) 
 END 
 1:93-1:95 
 end 
 COMMA 
 1:96-1:96 
 , 
 expr 
 LET 
 1:98-1:100 
 let 
 defn 
 FUN 
 1:102-1:104 
 fun 
 ID 
 1:106-1:106 
 f 
 LBRACKET 
 1:107-1:107 
 ( 
 RBRACKET 
 1:108-1:108 
 ) 
 COLON 
 1:109-1:109 
 : 
 type 
 INT 
 1:110-1:112 
 int 
 EQUALS 
 1:114-1:114 
 = 
 expr 
 expr 
 NUM 
 1:116-1:116 
 5 
 PLUS 
 1:117-1:117 
 + 
 expr 
 NUM 
 1:118-1:118 
 5 
 IN 
 1:120-1:121 
 in 
 expr 
 SIZEOF 
 1:123-1:128 
 sizeof 
 type 
 LSQUARE 
 1:130-1:130 
 [ 
 NUM 
 1:131-1:132 
 10 
 RSQUARE 
 1:133-1:133 
 ] 
 type 
 INT 
 1:134-1:136 
 int 
 END 
 1:138-1:140 
 end 
 END 
 1:142-1:144 
 end 
 EOF