aParse - Download

aParse is free to download and use without any obligations or limitations.

2.5 May 17, 2014 aparse-2.5.zip
Fixes C++ parser memory leaks.
An optional group *( ) is rejected if nothing is consumed by its component alternatives.
A null pointer exception may occur, and no compiler errors be shown, when no there is no end-of-line ; marker at the end of a rule.
2.4 Nov 1, 2013 aparse-2.4.zip
Changes Choose the longest valid alternative in an alternation rather than the first valid alternative found.
The new aparse-maven-plugin allows aParse to be invoked from Apache Maven.
Option to produce Java 1.4 compatible code, that does not use generics, removed.
2.3 Nov 25, 2012 aparse-2.3.jar
Changes Using the language argument, aParse can be instructed to produce C# as well as Java and C++ parsers. See User Manual (Java), User Manual (C++) and User Manual (C#).
Java rule and terminal class prefixes changed from Rule$ and Terminal$ to Rule_ and Terminal_ respectively to match the C++ and C# prefixes.
Fixes A group ( ) is rejected if nothing is consumed by its component alternatives and one of those alternatives permits it. For example, the group (*"A") should be accepted when matched against nothing (i.e. "").
2.2 May 10, 2012 aparse-2.2.jar
Fixes An infinite loop occurs when a grammar contains nested optional repeating groups *( ).
Rulenames with hyphens result in illegally named C++ header files.
Visual Studio C++ raises a C1061 : compiler limit : blocks nested too deeply error if the grammar contains more than 128 rules.
2.1 Sep 11, 2011 aparse-2.1.jar
Changes Using the new language argument, aParse can be instructed to produce Java or C++ parsers. See User Manual (Java) and User Manual (C++).
When a parser generates an "extra data found" ParserException, it may be chained to a "possible cause" ParserException that will indicate why the extra data was rejected.
Fixes The number of characters consumed by a rule, shown in the trace output, is not correct.
The XmlDisplayer adds unnecessary linefeeds when outputting terminal elements.
2.0 Mar 26, 2011 aparse-2.0.jar
Changes Via the new $rule directive, aParse now supports the use of user code to encapsulate and parse protocol elements that may not be directly support by the ABNF metalanguage. See External Rules (Java) and External Rules (C++).
The visitor pattern has been better implemented with the replacement of certain visit() methods with the accept() method.
1.1 Dec 11, 2010 aparse-1.1.jar
Changes One grammar file can now be read into another using the new $include directive. The directories searched for include files can be specified via the new optional aParse -includeDirs argument.
The new com.parse2.aparse.AntTask class allows aParse to be invoked from Apache Ant.
Fixes The parsing of %d values can cause java.util.regex.Pattern "illegal hexadecimal escape sequence" runtime errors.
1.0 Oct 14, 2010 aparse-1.0.jar
Changes The directory into which the generated files are placed can be defined via the new optional aParse -destdir argument.
New getReason(), getSubstring(), getSubstringIndex() and getRuleStack() accessor methods have been added to the PaserException class.
0.5 Dec 9, 2007 aparse-0.5.jar
Changes It is now possible to instruct a generated Parser to attempt to parse the input in accordance with any rule from the grammar.
The Rule class replaces Parser.AST and implements toString(), equals(), compareTo() and hashCode().
The Java package for the generated classes can be defined via the new optional aParse -package argument.
Java 1.4, rather than 5.0, compatible classes can be generated, that do not include generics, using the new optional aParse -java argument.
Fixes The Rule and Visitor classes should have public access.
Inconsistent use of case in a rule's name causes "no such symbol" compilation errors in the generated Parser.
0.4 Aug 9, 2007 aparse-0.4.jar
Changes prose-val is no longer supported and the grammar parser will raise an error if encountered.
Fixes Grammar file end-of-line markers are not being interpreted properly on DOS/Windows systems.
Backslashes \ in instances of char-val are being treated as the start of an escape sequence.
0.3 Jul 31, 2007 aparse-0.3.jar
Fixes An infinite loop occurs if the last rule isn't terminated properly with a semi-colon.
Parsing is not resynchronised properly following a partial match of an alternative within a group.
0.2 Jul 1, 2007 aparse-0.2.jar
Changes Two automatically generated display classes are now produced: Displayer only outputs the terminal values of the parsed tree thus simply reproducing the parsed input; XmlDisplayer displays the contents of the parsed tree in XML.
Concatened lists of terminal numeric values (e.g. %d97.98.99) have been implemented.
Fixes Rulenames with hyphens result in illegally named Java classes.
Rules with nested groups are not always parsed successfully.
0.1 May 27, 2007 aparse-0.1.jar
Initial version.