source 
 prog 
 defn 
 FUN 
 1:1-1:3 
 fun 
 ID 
 1:5-1:5 
 a 
 LBRACKET 
 1:6-1:6 
 ( 
 RBRACKET 
 1:7-1:7 
 ) 
 COLON 
 1:8-1:8 
 : 
 type 
 ID 
 1:9-1:10 
 ab 
 EQUALS 
 1:12-1:12 
 = 
 expr 
 IF 
 1:14-1:15 
 if 
 expr 
 IF 
 1:17-1:18 
 if 
 expr 
 ID 
 1:20-1:21 
 E4 
 THEN 
 1:23-1:26 
 then 
 expr 
 ID 
 1:28-1:29 
 E5 
 COMMA 
 1:30-1:30 
 , 
 expr 
 ID 
 1:32-1:33 
 E6 
 ELSE 
 1:35-1:38 
 else 
 expr 
 ID 
 1:40-1:41 
 E7 
 COMMA 
 1:42-1:42 
 , 
 expr 
 ID 
 1:44-1:45 
 E8 
 END 
 1:47-1:49 
 end 
 THEN 
 1:51-1:54 
 then 
 expr 
 WHILE 
 1:56-1:60 
 while 
 expr 
 ID 
 1:62-1:63 
 E9 
 DO 
 1:65-1:66 
 do 
 expr 
 ID 
 1:68-1:70 
 E10 
 COMMA 
 1:71-1:71 
 , 
 expr 
 STRING 
 1:73-1:84 
 "QWERHBEQR " 
 COMMA 
 1:85-1:85 
 , 
 expr 
 LBRACKET 
 1:87-1:87 
 ( 
 expr 
 IF 
 1:88-1:89 
 if 
 expr 
 ID 
 1:91-1:92 
 E4 
 THEN 
 1:94-1:97 
 then 
 expr 
 ID 
 1:99-1:100 
 E5 
 COMMA 
 1:101-1:101 
 , 
 expr 
 ID 
 1:103-1:104 
 E6 
 ELSE 
 1:106-1:109 
 else 
 expr 
 ID 
 1:111-1:112 
 E7 
 COMMA 
 1:113-1:113 
 , 
 expr 
 ID 
 1:115-1:116 
 E8 
 END 
 1:118-1:120 
 end 
 RBRACKET 
 1:121-1:121 
 ) 
 COMMA 
 1:122-1:122 
 , 
 expr 
 ID 
 1:124-1:125 
 E3 
 END 
 1:127-1:129 
 end 
 END 
 1:131-1:133 
 end 
 EOF