Fixed bug that was causing 'EOL' tokens to not appear for regexes with annotations. This was due to an inflexible backtracking technique used for determining special EOL's. It now uses a for loop which allows backtracking for an arbitrary amount of annotation tokens.
Parsing is finally back to normal
Redesigned hash as a table of linked lists of records, rather than a table of records containing linked lists.
Implemented PJW hash function from compiler textbook. This halved the number of collisions in some instances
Removed unnecessary collision counter.
Changed 'tok_hashf' and 'tok_isequalf' to 'basic_hashf' and 'basic_isequalf'. Both of the functions were all moved to general.c. This is because their behavior is general enough to hash any integer, not just token pointer values.
Wrote a line table structure for containing line listings along with their errors.
Merged with annotation and resolved conflicts.