Appendix CChange log

Revision History
  • 2.2.2, 17 May 2023

    Fixed bug where CoffeePot had a runtime dependency on Saxon EE. (It can use Saxon EE, and EE is needed for loading dynamic function libraries, but EE isn’t required for basic functionality.)

  • 2.2.1, 17 May 2023

    Fixed bug where choices were not always presented in a logical order (earlier matches before later matches) when displaying alternatives. Updated CoffeeGrinder and fixed stylesheet so that marks on nonterminals are included when describing ambiguity.

  • 2.2.0, 06 May 2023

    Changed the --show-grammar option to display the grammar after duplicates have been resolved. Also changed the display to include marks. Documented the priority pragma. Removed the combine and regex pragmas from the documentation; I’m not convinced they work correctly.

  • 2.1.0, 23 Apr 2023

    Added support for choosing between ambiguous parses using either an extension function or XPath expressions.

  • 2.0.3, 15 Apr 2023
    • Updated to use CoffeeFilter version 2.0.3 which corrects errors in the serialization of control characters in attributes and text content (and changes the serialization of > to always be >).

    • If a UTF-8 grammar or input file begins with a byte-order-mark (BOM), the BOM is ignored. A new configuration property ignore-bom can be set to false to disable this behavior.

    • The build system has been updated to use Gradle version 8.0.2.

  • 2.0.0, 10 Apr 2023

    Making the 2.x code base the current release.

  • 1.1.0, 16 Apr 2022

    Support for the 15 April 2022 specification, version 1.1.0

    The most significant changes are:

    1. The “repeat0” and “repeat1” separator characters are now doubled: “item*','” becomes “item**','”, and “item+','” becomes “item++','”.

    2. The semantics of “^” before a literal have changed. It now signals an insertion. The grammar fragment “'a', ^'-', 'b'” matches an “a” followed immediately by a “b”, but the XML output will be “a-b”. The text marked “^” matches nothing but is inserted in the output. The insertion character may change.

    3. At least one whitespace character or comment is required between rules. (This is very unlikely to have any practical consequence since most grammar authors start a new rule on a new line. But where “a:'1'.b:'2'. used to be allowed, you must now write “a:'1'. b:'2'.. This avoids an ambiguity in the grammar.)

  • 1.0.0, 20 Mar 2022

    Initial release, version 1.0.0