1 === 1.8.5 / 10-21-10 2 3 * 1 Bug Fix 4 - fixed ANTLR3::InteractiveStringStream to work with Ruby 1.9. The lexer main script 5 should function in interactive mode for Ruby 1.9 now. 6 7 === 1.8.4 / 10-08-10 8 9 * 1 Bug Fix 10 - removed directory dependency from tasks created by ANTLR3::Task, which caused 11 compilation to be performed twice in some situations 12 13 === 1.8.3 / 10-08-10 14 15 * 2 Bug Fixes 16 - fixed typo in TokenRewriteStream#cast_range 17 - added work-around code to handle the lack of support for StopIteration in Rubinius 18 19 === 1.8.2 / 10-02-10 20 21 * Bug Fix: removed references to Parser#token_stream 22 - changed references to Parser#token_stream to Parser#input in `antlr3/profile.rb' to 23 avoid "private method token_stream called" errors in profile mode 24 25 * Minor Enhancement: new samples included with the distribution 26 - added a newly developed `samples/JavaScript.g' file for parsing JavaScript. 27 While not entirely complete and flawless, it does a pretty good job 28 of parsing JavaScript up through Firefox's 1.6 version of the language. 29 - included the `samples/standard' directory with the package distribution, 30 which has been in the development repository for a while, but I never 31 updated the package spec to include these files. 32 33 === 1.8.0 / 07-03-10 34 35 * Bug Fix / Major Enhancement: made antlr3 compatible with ruby 1.9 36 - altered ANTLR3::StringStream to always have #peek return an integer in both 37 Ruby 1.8 and 1.9. In 1.9, @data is now an array of code point values and 38 the new instance variable @string contains the actual string. In Ruby 1.8, 39 both @data and @string contain the string value. 40 - lexer code is no longer generated using '?c' character syntax; characters 41 are now represented as hexadecimal integers to make the code compatible 42 with Ruby 1.9 43 44 === 1.7.5 / 06-18-10 45 46 * Minor Enhancements 47 - added #compile! and #clobber! methods to directly invoke the 'compile' 48 and 'clobber' tasks respectively 49 50 * Bug Fixes 51 - removed special ruby-stylistic formatting on syntactic predicate method names to 52 fix a bad bug in code-generation that cropped up in more complex grammars 53 54 === 1.7.2 / 05-16-10 55 56 * Minor Enhancements 57 - added new #hold convenience method to ANTLR3::CommonTokenStream 58 59 * Bug Fixes 60 - corrected a typo in ANTLR3::Error#FailedPredicate which caused a 61 NoMethodError to raise instead of FailedPredicate when semantic 62 predicates failed 63 64 * Documentation 65 - added more content to the ruby antlr3 guide 66 - set up an official project website at 67 http://antlr.ohboyohboyohboy.org 68 69 === 1.7.0 / 04-20-10 70 71 * Minor Enhancements 72 - added new #each_on_channel and #walk convenience methods to ANTLR3::CommonTokenStream 73 74 * Bug Fixes 75 - discovered and fixed a rare but serious bug in the way the output code evaluates 76 syntactic predicates 77 78 * Documentation 79 - began developing a more thorough usage guide for the package 80 - the guide is currently available on GitHub at 81 http://ohboyohboyohboy.github.com/antlr3 82 83 === 1.6.3 / 02-12-10 84 85 * 4 Minor Enhancements 86 - added --help and --version options to antlr4ruby 87 - documented the antlr4ruby source and added license information 88 - prettied up the source code in all of the library files a little 89 - added a hoe-based rakefile with the gem distribution of the source code 90 91 === 1.6.0 / 01-27-10 92 93 * 4 Minor Enhancements to runtime library 94 - CommonTokenStream and subclasses can now also accept another CommonTokenStream 95 object, serving sort of as a copy constructor. This provides a reasonable way 96 to cast a CommonTokenStream into a TokenRewriteStream and vice-versa 97 - CommonTreeNodeStream can take an options hash at the end of any of its various 98 signatures to provide values for attributes like token_stream 99 - If a parser is created with a CharacterStream object (i.e., StringStream), it 100 will also try to cast it by checking for an associated lexer (like it currently 101 does when created with String or IO objects). 102 - Template-output mode parsers have a new class method "load_templates( path )" 103 which will attempt to load the template group file at +path+ and, if successful, 104 set it to the parser's default template library. (See the CMinus example set for 105 an example of how this can be used) 106 107 * 2 bug fixes / 1 change to templates 108 - backtracking was broken in situations where recognition failed when 109 a semantic predicate was encountered as the template code did not 110 throw BacktrackingFailed when it was in backtracking mode instead of 111 PredicateFailed 112 - rule memoization also had a major bug in that rules that were memoized 113 after failure did not throw BacktrackingFailed when it was needed 114 - I changed `attribute scope' structures (not rule return scopes, but 115 the groups of attributes you can assign to rules with the `scope' keyword), 116 from being implemented as named constants in the class body to class 117 variables belonging to the recognizer. As class variables do not need 118 to follow naming conventions, this provides more freedom in naming without 119 all of the ugly name mangling. These are generally used privately by parsers, 120 so it shouldn't be too drastic of a change as to break end user's code. 121 122 === 1.5.0 / 01-25-10 123 124 * 2 minor enhancements 125 - Added BaseTree#walk, which iterates in a top-down fashion across all notes in a tree. 126 - Added BaseTree#prune, which stops decent into the current node during BaseTree#walk. 127 128 * 1 optimization 129 - changed `closure loops' ( uses of the `*' or `+' modifiers ) from using 130 Kernel#loop to `while true ... end' style loops, which should be slightly 131 faster 132 133 * new test code 134 - test/functiona/template-output/template-output.rb serves as a basic 135 functional test implementation for the new template output mode 136 137 === 1.4.0 / 01-17-10 138 139 * 1 major new feature 140 - finished basic implementation of a template output mode. 141 - lib/antlr3/template.rb defines a number of classes for 142 ERB-based template output translation 143 - templates/ST.stg defines the Ruby target templates to 144 generate template output mode recognizers 145 146 * new test code 147 - added template unit tests at test/unit/test-template.rb 148 - test/functional/template-output/template-output.rb serves as a basic 149 functional test implementation for the new template output mode 150