123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582 |
- ****************************************************************************
- As of ANTLR 4.2.1, March 25 2014, we are no longer updating this file. Instead,
- we are using the github release mechanism. For example, here is
- 4.2.1 release notes:
- https://github.com/antlr/antlr4/releases/tag/4.2.1
- ****************************************************************************
- ANTLR v4 Honey Badger
- January 15, 2014
- * Unit tests for lexer actions from yesterday.
- * Refactored TreeView so we can refresh tree externally w/o creating new one.
- Needed for intellij plugin.
- January 14, 2014
- * Updated serialized ATN representation of lexer actions, allowing the lexer
- interpreter to execute the majority of lexer commands (#408)
- January 12, 2014
- * Support executing precedence predicates during the SLL phase of
- adaptivePredict (#401). The result is a massive performance boost for grammars
- containing direct left-recursion (improvements of 5% to 1000+% have been
- observed, depending on the grammar and input).
- December 29, 2013
- * Internal change: Tool.loadGrammar() -> parseGrammar(). Tool.load()->parse()
- * Added Tool.loadGrammar(fileName) that completely parses, extracts implicit lexer,
- and processes into Grammar object. Does not geneate code. Use
- Grammar.getImplicitLexer() to get the lexer created during processing of
- combined grammar.
- * Added Grammar.load(fileName) that creates Tool object for you. loadGrammar()
- lets you create your own Tool for setting error handlers etc...
- final Grammar g = Grammar.load("/tmp/MyGrammar.g4");
- December 19, 2013
- * Sam:
- Improved documentation for tree patterns classes
- Refactored parts of the tree patterns API to simplify classes and improve encapsulation
- Move ATN serializer to runtime
- Use ATNDeserializer methods instead of ATNSimulator methods which are now deprecated
- * parrt: fix null pointer bug with rule "a : a;"
- November 24, 2013
- * Ter adds tree pattern matching. Preferred interface:
- ParseTree t = parser.expr();
- ParseTreePattern p = parser.compileParseTreePattern("<ID>+0", MyParser.RULE_expr);
- ParseTreeMatch m = p.match(t);
- String id = m.get("ID");
- or
- String xpath = "//blockStatement/*";
- String treePattern = "int <Identifier> = <expression>;";
- ParseTreePattern p =
- parser.compileParseTreePattern(treePattern,
- JavaParser.RULE_localVariableDeclarationStatement);
- List<ParseTreeMatch> matches = p.findAll(tree, xpath);
- November 20, 2013
- * Sam added method stuff like expr() that calls expr(0). Makes it possible
- to call expr rule from TestRig (grun).
- November 14, 2013
- * Added Sam's ParserInterpreter implementation that uses ATN after
- deserialization.
- LexerGrammar lg = new LexerGrammar(
- "lexer grammar L;\n" +
- "A : 'a' ;\n" +
- "B : 'b' ;\n" +
- "C : 'c' ;\n");
- Grammar g = new Grammar(
- "parser grammar T;\n" +
- "s : (A{;}|B)* C ;\n",
- lg);
- LexerInterpreter lexEngine = lg.createLexerInterpreter(new ANTLRInputStream(input));
- CommonTokenStream tokens = new CommonTokenStream(lexEngine);
- ParserInterpreter parser = g.createParserInterpreter(tokens);
- ParseTree t = parser.parse(g.rules.get(startRule).index);
- November 13, 2013
- * move getChildren() from Tree into Trees (to avoid breaking change)
- * Notation:
- /prog/func, -> all funcs under prog at root
- /prog/*, -> all children of prog at root
- /*/func, -> all func kids of any root node
- prog, -> prog must be root node
- /prog, -> prog must be root node
- /*, -> any root
- *, -> any root
- //ID, -> any ID in tree
- //expr/primary/ID, -> any ID child of a primary under any expr
- //body//ID, -> any ID under a body
- //'return', -> any 'return' literal in tree
- //primary/*, -> all kids of any primary
- //func/*/stat, -> all stat nodes grandkids of any func node
- /prog/func/'def', -> all def literal kids of func kid of prog
- //stat/';', -> all ';' under any stat node
- //expr/primary/!ID, -> anything but ID under primary under any expr node
- //expr/!primary, -> anything but primary under any expr node
- //!*, -> nothing anywhere
- /!*, -> nothing at root
- September 16, 2013
- * Updated build.xml to support v4 grammars in v4 itself; compiles XPathLexer.g4
- * Add to XPath:
- Collection<ParseTree> findAll(String xpath);
- September 11, 2013
- * Add ! operator to XPath
- * Use ANTLR v4 XPathLexer.g4 not regex
- * Copy lots of find node stuff from v3 GrammarAST to Trees class in runtime.
- September 10, 2013
- * Adding in XPath stuff.
- August 31, 2013
- * Lots of little fixes thanks to Coverity Scan
- August 7, 2013
- * [BREAKING CHANGE] Altered left-recursion elimination to be simpler. Now,
- we use the following patterns:
- * Binary expressions are expressions which contain a recursive invocation of
- the rule as the first and last element of the alternative.
- * Suffix expressions contain a recursive invocation of the rule as the first
- element of the alternative, but not as the last element.
- * Prefix expressions contain a recursive invocation of the rule as the last
- element of the alternative, but not as the first element.
- There is no such thing as a "ternary" expression--they are just binary
- expressions in disguise.
- The right associativity specifiers no longer on the individual tokens because
- it's done on alternative basis anyway. The option is now on the individual
- alternative; e.g.,
- e : e '*' e
- | e '+' e
- |<assoc=right> e '?' e ':' e
- |<assoc=right> e '=' e
- | INT
- ;
- If your language uses a right-associative ternary operator, you will need
- to update your grammar to include <assoc=right> on the alternative operator.
- This also fixes #245 and fixes #268:
- https://github.com/antlr/antlr4/issues/245
- https://github.com/antlr/antlr4/issues/268
- To smooth the transition, <assoc=right> is still allowed on token references
- but it is ignored.
- June 30, 2013 -- 4.1 release
- June 24, 2013
- * Resize ANTLRInputStream.data after reading a file with fewer characters than
- bytes
- * Fix ATN created for non-greedy optional block with multiple alternatives
- * Support Unicode escape sequences with indirection in JavaUnicodeInputStream
- (fixes #287)
- * Remove the ParserRuleContext.altNum field (fixes #288)
- * PredictionContext no longer implements Iterable<SingletonPredictionContext>
- * PredictionContext no longer implements Comparable<PredictionContext>
- * Add the EPSILON_CLOSURE error and EPSILON_OPTIONAL warning
- * Optimized usage of closureBusy set (fixes #282)
- June 9, 2013
- * Add regression test for #239 (already passes)
- June 8, 2013
- * Support list labels on a set of tokens (fixes #270)
- * Fix associativity of XOR in Java LR grammar (fixes #280)
- June 1, 2013
- * DiagnosticErrorListener includes rule names for each decision in its reports
- * Document ANTLRErrorListener and DiagnosticErrorListener (fixes #265)
- * Support '\uFFFF' (fixes #267)
- * Optimize serialized ATN
- May 26, 2013
- * Report errors that occur while lexing a grammar (fixes #262)
- * Improved error message for unterminated string literals (fixes #243)
- May 24, 2013
- * Significantly improve performance of JavaUnicodeInputStream.LA(1)
- May 20, 2013
- * Generate Javadoc for generated visitor and listener interfaces and classes
- * Fix unit tests
- May 18, 2013
- * Group terminals in Java grammars so ATN can collapse sets
- * Improved Java 7 support in Java grammars (numeric literals)
- * Updated error listener interfaces
- * Support detailed statistics in TestPerformance
- May 17, 2013
- * Add JavaUnicodeInputStream to handle Unicode escapes in Java code
- * Proper Unicode identifier handling in Java grammars
- * Report file names with lexer errors in TestPerformance
- May 14, 2013
- * Use a called rule stack to prevent stack overflow in LL1Analyzer
- * Use 0-based indexing for several arrays in the tool
- * Code simplification, assertions, documentation
- May 13, 2013
- * Unit test updates to ensure exceptions are not hidden
- May 12, 2013
- * Updates to TestPerformance
- May 5, 2013
- * Updated several classes to use MurmurHash 3 hashing
- May 1, 2013
- * Added parse tree JTree to TreeViewer (Bart Kiers)
- April 30, 2013
- * Updated TestPerformance to support parallelization across passes
- April 24, 2013
- * Remove unused stub class ParserATNPathFinder
- * Remove ParserInterpreter.predictATN
- * Remove DFA.getATNStatesAlongPath
- * Encapsulate implementation methods in LexerATNSimulator and ParserATNSimulator
- * Updated documentation
- * Simplify creation of new DFA edges
- * Fix handling of previously cached error edges
- * Fix DFA created during forced-SLL parsing (PredictionMode.SLL)
- * Extract methods ParserATNSimulator.getExistingTargetState and
- ParserATNSimulator.computeTargetState.
- April 22, 2013
- * Lazy initialization of ParserATNSimulator.mergeCache
- * Improved hash code for DFAState
- * Improved hash code with caching for ATNConfigSet
- * Add new configuration parameters to TestPerformance
- * Update Java LR and Java Std to support Java 7 syntax
- April 21, 2013
- * Add new configuration parameters to TestPerformance
- April 18, 2013
- * Must check rule transition follow states before eliminating states in
- the ATN (fixes #224)
- * Simplify ParserATNSimulator and improve performance by combining execDFA and
- execATN and using DFA edges even after edge computation is required
- April 15, 2013
- * Fix code in TestPerformance that clears the DFA
- April 12, 2013
- * Improved initialization and concurrency control in DFA updates
- * Fix EOF handling in edge case (fixes #218)
- April 4, 2013
- * Improved testing of error reporting
- * Fix NPE revealed by updated testing method
- * Strict handling of redefined rules - prevents code generation (fixes #210)
- * Updated documentation in Tool
- March 27, 2013
- * Avoid creating empty action methods in lexer (fixes #202)
- * Split serialized ATN when it exceeds Java's 65535 byte limit (fixes #76)
- * Fix incorrect reports of label type conflicts across separated labeled outer
- alternatives (fixes #195)
- * Update Maven plugin site documentation
- March 26, 2013
- * Fix bugs with the closureBusy set in ParserATNSimulator.closure
- * Fix handling of empty options{} block (fixes #194)
- * Add error 149 INVALID_LEXER_COMMAND (fixes #190)
- * Add error 150 MISSING_LEXER_COMMAND_ARGUMENT
- * Add error 151 UNWANTED_LEXER_COMMAND_ARGUMENT
- * Updated documentation in the Parser and RecognitionException classes
- * Refactored and extensively documented the ANTLRErrorStrategy interface and
- DefaultErrorStrategy default implementation
- * Track the number of syntax errors in Parser.notifyErrorListeners instead of in
- the error strategy
- * Move primary implementation of getExpectedTokens to ATN, fixes #191
- * Updated ATN documentation
- * Use UUID instead of incremented integer for serialized ATN versioning
- March 7, 2013
- * Added export to PNG feature to the parse tree viewer
- March 6, 2013
- * Allow direct calls to left-recursive rules (fixes #161)
- * Change error type 146 (EPSILON_TOKEN) to a warning (fixes #180)
- * Specify locale for all format operations (fixes #158)
- * Fix generation of invalid Unicode escape sequences in Java code (fixes #164)
- * Do not require escape for $ in action when not followed by an ID start char
- (fixes #176)
- February 23, 2013
- * Refactoring Target-related classes to improve support for additional language
- targets
- February 22, 2013
- * Do not allow raw newline characters in literals
- * Pair and Triple are immutable; Triple is not a Pair
- February 5, 2013
- * Fix IntervalSet.add when multiple merges are required (fixes #153)
- January 29, 2013
- * don't call process() if args aren't specified (Dave Parfitt)
- January 21, 2013 -- Release 4.0
- * Updated PredictionContext Javadocs
- * Updated Maven site documentation
- * Minor tweaks in Java.stg
- January 15, 2013
- * Tweak error messages
- * (Tool) Make TokenVocabParser fields `protected final`
- * Fix generated escape sequences for literals containing backslashes
- January 14, 2013
- * Relax parser in favor of errors during semantic analysis
- * 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
- January 11, 2013
- * Updated error 72, 76; added 73-74 and 136-143: detailed errors about name
- conflicts
- * Report exact location for parameter/retval/local name conflicts
- * Add error 144: multi-character literals are not allowed in lexer sets
- * Error 134 now only applies to rule references in lexer sets
- * Updated error messages (cleanup)
- * 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
- January 10, 2013
- * Add error 135: cannot assign a value to list label: $label
- (fixes antlr/antlr4#128)
- January 2, 2013
- * Fix EOF handling (antlr/antlr4#110)
- * Remove TREE_PARSER reference
- * Additional validation checks in ATN deserialization
- * Fix potential NPE in parser predicate evaluation
- * Fix termination condition detection in full-context parsing
- January 1, 2013
- * Updated documentation
- * Minor code cleanup
- * Added the `-XdbgSTWait` command line option for the Tool
- * Removed method override since bug was fixed in V3 runtime
- December 31, 2012
- * I altered Target.getTargetStringLiteralFromANTLRStringLiteral() so that
- it converts \uXXXX in an ANTLR string to \\uXXXX, thus, avoiding Java's
- conversion to a single character before compilation.
- December 16, 2012
- * Encapsulate some fields in ANTLRMessage
- * Remove ErrorType.INVALID
- * Update error/warning messages, show all v3 compatibility messages
- December 12, 2012
- * Use arrays instead of HashSet to save memory in SemanticContext.AND/OR
- * Use arrays instead of HashSet to save memory in cached DFA
- * Reduce single-operand SemanticContext.and/or operations
- December 11, 2012
- * Add -long-messages option; only show exceptions with errors when set
- * "warning treated as error" is a one-off error
- * Listen for issues reported by StringTemplate, report them as warnings
- * Fix template issues
- * GrammarASTWithOptions.getOptions never returns null
- * Use EnumSet instead of HashSet
- * Use new STGroup.GROUP_FILE_EXTENSION value
- December 2, 2012
- * Remove -Xverbose-dfa option
- * Create the ParseTreeVisitor interface for all visitors, rename previous base
- visitor class to AbstractParseTreeVisitor
- December 1, 2012
- * escape [\n\r\t] in lexical error messages; e.g,:
- line 2:3 token recognition error at: '\t'
- line 2:4 token recognition error at: '\n'
- * added error for bad sets in lexer; e.g.:
- lexer set element A is invalid (either rule ref or literal with > 1 char)
- some tests in TestSets appeared to allow ~('a'|B) but it was randomly working.
- ('a'|B) works, though doesn't collapse to a set.
- * label+='foo' wasn't generating good code. It was generating token type as
- variable name. Now, I gen "s<ttype>" for implicit labels on string literals.
- * tokens now have token and char source to draw from.
- * remove -Xsave-lexer option; log file as implicit lexer AST.
- November 30, 2012
- * Maven updates (cleanup, unification, and specify Java 6 bootstrap classpath)
- November 28, 2012
- * Maven updates (uber-jar, manifest details)
- November 27, 2012
- * Maven updates (prepare for deploying to Sonatype OSS)
- * Use efficient bitset tests instead of long chains of operator ==
- November 26, 2012
- * Maven updates (include sources and javadocs, fix warnings)
- * Don't generate action methods for lexer rules not containing an action
- * Generated action and sempred methods are private
- * Remove unused / problematic methods:
- ** (unused) TerminalNodeImpl.isErrorNode
- ** (unused) RuleContext.conflictsWith, RuleContext.suffix.
- ** (problematic) RuleContext.hashCode, RuleContext.equals.
- November 23, 2012
- * Updated Maven build (added master POM, cleaned up module POMs)
- November 22, 2012
- * make sure left-recur rule translation uses token stream from correct imported file.
- * actions like @after in imported rules caused inf loop.
- * This misidentified scope lexer/parser: @lexer::members { } @parser::members { }
- November 18, 2012
- * fixed: undefined rule refs caused exception
- * cleanup, rm dead etypes, add check for ids that cause code gen issues
- * added notion of one-off error
- * added check for v3 backward incompatibilities:
- ** tree grammars
- ** labels in lexer rules
- ** tokens {A;B;} syntax
- ** tokens {A='C';} syntax
- ** {...}?=> gate semantic predicates
- ** (...)=> syntactic predicates
- * Detect EOF in lexer rule
- November 17, 2012
- * .tokens files goes in output dir like parser file.
- * added check: action in lexer rules must be last element of outermost alt
- * properly check for grammar/filename difference
- * if labels, don't allow set collapse for
- a : A # X | B ;
- * wasn't checking soon enough for rule redef; now it sets a dead flag in
- AST so no more walking dup.
- error(51): T.g:7:0: rule s redefinition (ignoring); previous at line 3
- November 11, 2012
- * Change version to 4.0b4 (btw, forgot to push 4.0b3 in build.properties when
- I made git tag 4.0b3...ooops).
- November 4, 2012
- * Kill box in tree dialog box makes dialog dispose of itself
- October 29, 2012
- * Sam fixes nongreedy more.
- * -Werror added.
- * Sam made speed improvement re preds in lexer.
- October 20, 2012
- * Merged Sam's fix for nongreedy lexer/parser. lots of unit tests. A fix in
- prediction ctx merge. https://github.com/parrt/antlr4/pull/99
- October 14, 2012
- * Rebuild how ANTLR detects SLL conflict and failover to full LL. LL is
- a bit slower but correct now. Added ability to ask for exact ambiguity
- detection.
- October 8, 2012
- * Fixed a bug where labeling the alternatives of the start rule caused
- a null pointer exception.
- October 1, 2012 -- 4.0b2 release
- September 30, 2012
- * Fixed the unbuffered streams, which actually buffered everything
- up by mistake. tweaked a few comments.
- * Added a getter to IntStream for the token factory
- * Added -depend cmd-line option.
- September 29, 2012
- * no nongreedy or wildcard in parser.
- September 28, 2012
- * empty "tokens {}" is ok now.
- September 22, 2012
- * Rule exception handlers weren't passed to the generated code
- * $ruleattribute.foo weren't handled properly
- * Added -package option
- September 18, 2012 -- 4.0b1 release
|