Keyword parser __tostring escapes the name and uses the same format as the other parsers
Add some small optimizations to avoid repeatedly calling begin/after if the parser state hasn't changed
Indentation based language