Add parsing logic for everything but expressions

This solves the problem with the `BlockStatement` production by simply giving the lexer result a lookahead (of 3 tokens :( ). There's probably a way to factorize the grammar back into SLL(1) form, but all my attempts at doing so were pretty ugly.