Fix the ambiguity of generic type parameters.
Refactor the grammar files.
If we use enum class, we should use XX::YY to access its members.
Remove useless newlines when there are no declares.
Add antlr-3.4-complete.jar to tools.