refactored tokenizing code
added support for underscore and numbers in identifiers
tokenizing handles string constants