added lexer based on Matt Might's blog post