ANTLR v4 Honey Badger early access [sorry...haven't been keeping this up to date] Apr 26, 2012 * -> for parser labels becomes # Feb 17, 2012 * added -parse-listener option and differentiated between parse and parse tree listener interfaces now. Only parse tree listener stuff generated by default. * names changed. visit() -> visitX(). enter/exit() -> enter/exitX() * capitalizing automatically now. rule s -> SContext not sContext * no enter/exit method in generic rule context object if rule has alt labels, nor in interfaces. * dup labels allowed in same rule * label X or x illegal if rule x exists Feb 14, 2012 * Fixed https://github.com/antlr/antlr4/issues/8 and lots of other little things. Jan 30, 2012 * Moving to github. Jan 28, 2012 * ~[] stuff is allowed and works inside sets etc... Jan 22, 2012 * Added ranges, escapes to [a-z] notation in lexer: a-z is the inclusive range escape characters with special meaning: trnbf\'" such as \t \uXXXX Unicode character with text digits \- is the - character \] is the ] character Missing final range value gives just first char. Inverted ranges give nothing Bad escape sequence gives nothing Jan 21, 2012 * Added modeNames to gen'd lexers * added lexer commands skip more popMode mode(x) pushMode(x) type(x) channel(x) WS : (' '|'\n')+ -> skip ; use commas to separate commands: "-> skip, mode(FOO)" * Lexer fields mv from x to _x like type changed to _type. Jan 14, 2012 * labels on tokens in left-recursive rules caused codegen exception. * leave start/stop char index alone in CommonTokenFactory; refers to original text. * reuse of -> label on multiple alts in rule caused dup ctx object defs. Jan 11, 2012 * -> id labels work now for outermost alternatives, even for left-recursive rules; e.g., | a=e '*' b=e {$v = $a.v * $b.v;} -> mult * Fixed a bug where visitTerminal got a NPE * in tree views, spaces/newlines were blanks. I converted to \n and middle dot for space. Jan 5, 2012 * Deleted code to call specific listeners by mistake. added back. * Labels allowed in left-recursive rules: e returns [int v] : a=e '*' b=e {$v = $a.v * $b.v;} | a=e '+' b=e {$v = $a.v + $b.v;} | INT {$v = $INT.int;} | '(' x=e ')' {$v = $x.v;} ; Jan 4, 2012 * '_' was allowed first in symbol names in grammar * fix unit tests * Allow labels in left-recursive rules * lr rules now gen only 1 rule e->e not e->e_ etc... altered tests to build parse trees. * no more -trace, use Parser.setTrace(true) * add context rule option; not hooked up * 1+2*3 now gives new parse tree: (e (e 1) + (e (e 2) * (e 3)))