September 22, 2009
ANTLR project lead and supreme dictator for life
University of San Francisco
ANTLR v3.2 is a bug fix and feature release.
- Added tree grammar filter=true mode. See Tree pattern matching
- Added misc.FastQueue and TestFastQueue: A queue that can dequeue and get(i) in O(1) and grow arbitrarily large. A linked list is fast at dequeue but slow at get(i). An array is the reverse. This is O(1) for both operations.
- Added tree.TreeIterator, a generator that walks a doubly-linked tree. The nodes must know what index they are. It's an Iterator but remove() is not supported. Returns navigation nodes always: UP, DOWN, EOF.
- Added misc.LookaheadStream: A lookahead queue that knows how to mark/release locations in the buffer for backtracking purposes. I hope to use for both tree nodes and tokens. Just implement nextElement() to say how to get next node or token.
- Added new options for tool invocation to control the points at which the code
generator tells the target code to use its equivalent of switch() instead of
-Xmaxswitchcaselabels m don't generate switch statements for dfas bigger than m 
-Xminswitchalts m don't generate switch statements for dfas smaller than m 
- Upgraded -X help output to include new options and provide the default settings, as well as provide units for those settings that need them.
- .g and .g3 file extensions work again.
- introduced bug in 3.1.3: gives exception not error msg upon missing .g file
- CommonTreeNodeStream -> BufferedTreeNodeStream. Now,
CommonTreeNodeStream is completely unbuffered unless you are
backtracking. No longer making a list of all nodes before tree parsing.
- Added reset to TreeNodeStream interface.
- Change the C Target to overide the deafults for the new settings to generate the most optimizable C code from the modern C compiler point of view. This is essentially to always use swtich statements unless there is absolutely no other option. C defaults are to use 1 for minimum and 3000 for maximum number of alts that trigger switch(). This results in object code that is 30% smaller and up to 20% faster.
From bug tracking system
- ANTLR-374 invalid % syntax problem; not handling valid template syntax
- ANTLR-399 C lexers do not count error messages
- ANTLR-398 Use of TokenLabelType in lexeres combined with labeled fragment rules