adding an UNKNOWN token to the BNF parser, so that a malformed grammar
doesn't get stuck.  also, storing the current token on the tokenizer,
for error-reporting purposes