Provides parsers and tokenizers for reading SQL and breaking that SQL up into individual queries.

## Package Specification

The main goal of this package is to provide a facility for easily reading and interpretting a) SQL commands and b) extensions called Structured Comments.

Tokenization is done by the Tokenizer class, which scans a StringBuffer and spits out Tokenizer.Token objects; Token is a CharSequence which points onto the original StringBuffer in an attempt to save memory and time.

Query parsers must all implement QueryParser, although it is suggested that any future implementations extend AbstractQueryParser to take some of the routine work out of implementation. Derived from here is BasicQueryParser, the backwards compatible implementation and AbstractSyntaxQueryParser - a base class for syntax aware parsers. The QueryParsers spit out Query objects, which are also CharSequence based.

AbstractSyntaxQueryParser provides both look ahead and look behind caching of Tokens, storage for a list of Query objects, and automatically employs a StructuredCommentParser if the preferences permit it.

StructuredCommentParser is used to read special markup inside comments; this allows extensions to the SQL without necessarily requiring incompatibility with pre-existing RDBMS implementations, and also provides a structured means to add new language features without conflicting with the underlying RDBMS.

Command and its derived classes are the implemention of the structured comment extensions.