Initial version of parser
Changes to fix a problem with shortbus CUP plugin (didn't generation package directory properly).
Cleanup of the build infrastructure

1) cleanup pom, in particular:
  a) remove jflex (unnecessary dependency)
  b) upgrade guavac to v09
  c) commented out the assembly for now
  d) don't use snapshot versions of hadoop
  e) specify use of java 1.6 over defaults
  f) have surefure capture the test output to a file for easier review
2) added a README to help new developers
3) added a .gitignore
Updated for Marcel's review comments
New version of maven-cup-plugin with everything working
Added command line parsing
Added details to the README on how to run the parser.Main using mvn in development mode
Adding rudimentary analysis functionality plus unit tests.
Adding a rudimentary catalog/metastore interface plus unit tests.
Fixing aggregate analysis bug.
Adding AVG substitution
Adding a separate exception hierarchy (and retiring Analyzer.Exception).
Adding a planner shell.
Addressing Carl's review comments.
IMP-1. Fix Hive configuration for Impala tests
Fixed the following scanning/parsing issues:
1. Unmatched string literals are detected as a token and appropriately reported during parsing.
2. Enhanced error messages include the last encountered token, and a list of expected tokens.

I looked into the following issues, which I found are not really bugs:
1. Appearance of "^" in error messages seems incorrect in eclipse due to use of non fixed-width font. When displayed using a fixed-width font the error messages are fine (e.g. using System.err).
2. Tests for predicates with negation (!) pass after appropriate lines in parser generator are uncommented. The grammar looks good.
3. Tests for queries with order by pass.
IMP-3. Add Eclipse launch configurations for Impala testcases
- addressed Carl's comments from last review
- created planner test framework plus one very basic test
- added debug and explain output to plan nodes; added debug output to (some) expr nodes
- fixed some bugs related to aggregation analysis; added new test cases
analysis of on and using clauses, plus unit tests
Now using Hive-style type casting.

we follow Hive's type casting behavior as described in:
http://wiki.apache.org/hadoop/Hive/Tutorial
summary of Hive's type casting:
implicit conversion is done from child to an ancestor,
in the type hierarchy.
Special case for STRING -> DOUBLE

we chose not to follow MySQL's type casting behavior as described here:
http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html
for the following reasons:
conservative casting in arithmetic exprs: TINYINT + TINYINT -> BIGINT
comparison of many types as double: INT < FLOAT -> comparison as DOUBLE
special cases when dealing with dates and timestamps

Added the following unittests:
- all arithmetic ops with all implicit casts
- all comparison ops with all implicit casts
- string to date casts
- error messages
Added support for code coverage testing via Clover
assignment of conjuncts to scan and agg node; additional toSql() functions
fixing build failure
Fixed logging to not use mortbay, made static final log in caps
Added checking of error messages in AnalyzerTest. Ignoring tables with
unsupported Hive types (all complex types). Using Guava
toStringHelper() to implement debugString().

Also fixed an issue with creating tables with complex types in TestSchemaUtils (mvn clean test would fail).

We considered using Java's ToStringBuilder but rejected it due to the following reasons:

1. reflectionToString() has ugly output. Implementing several custom ToStringStyles would be too much work.
2. both the regular ToStringBuilder.append() and the reflectionToString() require a functioning hashCode() implementation.
Our Exprs do not have a proper hashCode(), and it isn't worth implementing them only for debugString().