antlr/CHANGES.txt

101 lines
2.6 KiB
Plaintext

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)))