The ARG_ACTION token for a rule's locals is always an ActionAST
Add field Attribute.token to hold a pseudo-token with specific location information for the attribute; track this position in ScopeParser
Report conflicting argument error at specific location in input
Add detailed errors for the various types of conflicts between names of rules, tokens, parameters, return values, locals, and labels
Documentation and cleanup in AttributeDict
Use separate error messages for multi-character literals (always illegal) and rule references (not yet supported) in lexer sets
Error message cleanup
Updated CHANGES.txt
Reduce size of _serializedATN by adding 2 to each element: new representation avoids embedded values 0 and 0xFFFF which are common and have multi-byte representations in Java's modified UTF-8
TestRig uses instance fields instead of static fields, allows reuse from other applications
Add missing listener interface methods to GrammarTreeVisitor
Remove unused field
Parser allows empty options{} block, empty element options, modes with no rules, and empty lexer alternatives
Add error 145: lexer mode must contain at least one non-fragment rule
Add error 146: non-fragment lexer rule can match the empty string
Update CHANGES.txt
Forgot to update GrammarTreeVisitor to support modes with no rules
Call grammarError instead of toolError to provide proper error location
Updated error message, updated TestAttributeChecks
Make TokenVocabParser fields `protected final`