When all the input has been read, your program should produce a summary report that includes a list of all the tokens that appeared in the input, the number of times each token appears in the input and the class of each token. Your program should also list how many times tokens of each category appeared in the input.The token format: keyword -> if | then | else | begin | end identifier -> character | character identifier integer -> digit | digit integer real -> integer.integer special -> ( | ) | [ | ] | + | - | = | , | ; digit -> 0|1|2|3|4|5|6|7|8|9 character -> a|b|c ... |z|A|B|C ... |Z