Implemented a simpler version of the consume method that now extracts identifiers in the correct order. Deleted the checkBuffer method and created a single identifyLexeme method that takes a String and attempts to match it to a token. Changed all the members of the Terminal class from Strings to regular expressions. This prevents them from being compiled into regular expressions upon each invocation of the identifyLexeme method (I think).
Created a skeleton implementation of parse. Created the CompfyCompiler class is responsible for executing all the major compiler operations (Lex, Parse, etc..)
Added string support to the lexer.
Implementing the parser.
Implemented and tested the parsing phase. The next step is to create a CST while parsing.
Added class and method comments.
Added the Pattern class, which contains regex describing each terminal.
Added the Terminal class, which contains named constants for each terminal.
Node objects now take an Any parameter. This allows the creation of nodes with either a Production or Terminal as the node label.
Added comments.
Fixed a bug in parse that caused the boolean expression tree to formed improperly. Added the Environment, SymbolTable and Analyzer classes.
Added an Integer field to Token to track the line number where a token appears.
Edited the class comments for the Tree and Token classes.
Production is no longer an Enumeration type. It is now an object containing named constants for each Production in the grammar.
Removed unnecessary curly braces from ParseException class.
Changed the Node classes label type from Any to String.
A symbol table is now constructed while building the CST in Parse.
Scope-checking is performed during Parse.
Added comments to the Node class.
Edited class comments for Tag.
Implemented an Env class for managing variable scope.
Implemented a SymbolTable class.
Added type checking.