capture more location information during lexing
use plt.types in the lexer