Moved keywords to a lookup table.
Unified identifier regular expressions.
Tracking current line number.
More readable indentation and alignment.