Note: The first two fields of each line of your output file should be the same as the first two columns of this file.
The entry number in the third field of each line in your output file may not agree with the third column of this file but that is OK as long as different lexemes have different entry numbers and multiple appearances of the same lexeme all use the same entry number.
PROGRAM program 40 ID test1 44 LPAR ( 23 ID in 45 COMMA , 27 ID out 46 RPAR ) 24 BEGINTOK begin 32 PROC procedure 4 FUNC function 5 VARTOK var 39 COLON : 29 REALTOK real 34 INTTOK integer 35 SEMICOL ; 28 ARRAYTOK array 37 LBRK [ 25 NUM 123 47 DOTDOT .. 12 NUM 456 48 RBRK ] 26 OFTOK of 38 BOOLTOK boolean 36 SEMICOL ; 28 RELOP = 6 RELOP <> 7 RELOP <= 9 RELOP >= 10 RELOP < 8 RELOP > 11 ID A 49 ASSIGNOP := 22 UNARYOP - 14 NUM 3 50 ADDOP + 13 NUM 40.00 51 ADDOP - 14 NUM 5E6 52 MULOP * 15 NUM 6.0E+23 53 MULOP / 16 NUM 7.12345E-23 54 ID B 55 ASSIGNOP := 22 UNARYOP + 13 NUM 8 56 MULOP div 17 UNARYOP - 14 NUM 9 57 MULOP mod 18 UNARYOP - 14 NUM 10 58 ID E 59 ADDOP + 13 ID C 60 NUM 11 61 ID E 59 ADDOP - 14 ID A 49 NUM 12 62 ID Error 63 ID F 64 LBRK [ 25 NUM 13 65 RBRK ] 26 ADDOP + 13 ID G 66 LPAR ( 23 NUM 14 67 RPAR ) 24 ADDOP + 13 ID H 68 LBRK [ 25 NUM 15 69 RBRK ] 26 ADDOP - 14 ID I 70 LPAR ( 23 NUM 16 71 RPAR ) 24 ADDOP - 14 ID J 72 IFTOK if 1 BCONST true 41 THENTOK then 2 ID A 49 ASSIGNOP := 22 NUM 50 73 ELSETOK else 3 ID B 55 ASSIGNOP := 22 NUM 70 74 SEMICOL ; 28 WHILETOK while 30 BCONST false 42 OROP or 19 BCONST true 41 ANDOP and 20 NOTOP not 21 BCONST false 42 DOTOK do 31 ID E 59 ASSIGNOP := 22 NUM 80 75 ENDTOK end 33 DOT . 43