source 
 prog 
 defn 
 VAR 
 1:1-1:3 
 var 
 ID 
 1:5-1:5 
 b 
 COLON 
 1:7-1:7 
 : 
 type 
 INT 
 1:9-1:11 
 int 
 defn 
 FUN 
 2:1-2:3 
 fun 
 ID 
 2:5-2:5 
 f 
 LBRACKET 
 2:6-2:6 
 ( 
 ID 
 2:7-2:7 
 a 
 COLON 
 2:9-2:9 
 : 
 type 
 INT 
 2:11-2:13 
 int 
 RBRACKET 
 2:14-2:14 
 ) 
 COLON 
 2:16-2:16 
 : 
 type 
 VOID 
 2:18-2:21 
 void 
 EQUALS 
 2:23-2:23 
 = 
 expr 
 expr 
 ID 
 2:25-2:25 
 a 
 EQUALS 
 2:27-2:27 
 = 
 expr 
 expr 
 ID 
 2:29-2:29 
 b 
 OR 
 2:33-2:34 
 or 
 expr 
 expr 
 FALSE 
 2:36-2:40 
 false 
 AND 
 2:42-2:44 
 and 
 expr 
 expr 
 TRUE 
 2:46-2:49 
 true 
 NEQUALS 
 2:51-2:52 
 != 
 expr 
 expr 
 FALSE 
 2:54-2:58 
 false 
 PLUS 
 2:60-2:60 
 + 
 expr 
 expr 
 NUM 
 2:62-2:62 
 2 
 ASTERISK 
 2:64-2:64 
 * 
 expr 
 expr 
 NUM 
 2:66-2:66 
 4 
 HAT 
 2:68-2:68 
 ^ 
 EOF