Implement an error annotator

Instead of the cryptic error descriptions, the user should get some more readable information like "Unexpected value ]".