Added separate classes for distinct token types
Fixed lexer callbacks and updated tests
Forgot to add file in last commit