lexer output token rather than (lineno, token).
error handling for non-terminated block comment.
token variant for each symbol.
parser skeleton.
more parser.