Still experimenting with the lexer. As of right now, Lex performs two passes on the source input: On the first pass it processes the source line-by-line, trimming leading and trailing whitespace, and reducing sequences of multiple white space chars to a single blank; The second pass will process the source one character at a time using the "consume" function. Created a Terminal class containing members corresponding to each terminal in the grammar.