Goldie: Change Log

Goldie
Parsing System (v0.9)
Goldie Home (v0.9)
Getting Started

- Requirements
- Download / Install
- Never Used a Parsing Tool?
- Goldie Overview
- Beginner's Tutorial
- Grammar Definition Language
- Contact / Support
  - Message Board
  - Issue Tracking

Goldie's Tools

- AlterCGT
- DumpCGT
- GenDocs
  - Template Format
- GRMC: Grammar Compiler
- JsonViewer
  - Parse Tree Mode
- Parse
- StaticLang
- Other Tools

GoldieLib Overview

- Static And Dynamic Styles
- Ambiguous Symbols

GoldieLib Reference

- Base
- Exception
- class Language
- class Lexer
- class Parser
- struct Symbol
- class Token
- Ver

GoldieLib Sample Apps

- Calculator Static
- Calculator Dynamic
- Sample Generic Parse

CGT File Format
FAQ
Change Log
If You Use Git Master
Future Work
Developers

- Scripts for Developers
- Library Source and StaticLang

Goldie Home (v0.9) -> Change Log

# Change Log

Dates below are in YYYY-MM-DD format.

### v0.9 - Tools

2012-04-17
Tested on: DMD 2.055 - DMD 2.059, but only partially DMD 2.057 as described below

- Added support for DMD 2.059.
- Removed support for DMD 2.054 and below.
- GoldieLib: Renamed Language.loadCGT to Language.load.
- GRMC: Grammar Compiler: Major bugs fixed:
  - Fixed: Shift-Reduce conflicts aren't actually resolved at all contrary to the warning message. They are now reported and resolved by assuming "Shift" as intended.
  - Fixed: Failure to resolve Shift-Reduce conflicts can result in false Reduce-Reduce conflict errors.
  - Fixed: In certain cases, extra terminals incorrectly added as lookaheads. Ultimately, the parser would occasionally accept a terminal when it should have given an "Unexpected xxxx" error, which probably would have then led to an InternalException. (Root cause: Generating lookaheads mistook recursive rules for "can derive empty".)
  - Fixed: In certain cases, LALR actions point to wrong state, creating extra conflict errors and possibly incorrect parsing.
  - Fixed: In certain cases, LALR states are accidentally merged.
- New tool: AlterCGT.
- Command line options for all tools are now processed with getopt and use standard Unix conventions (even on Windows). This means what used to be -foo:bar or /foo:bar must now be written as --foo=bar or --foo bar. (But /? is still supported as an alternative to --help.)
- DumpCGT: Dumps directly to a text file, not stdout.
- DumpCGT: Added --out and --no-filename command line options.
- GenDocs: Fixed: Code highlighted as "added" with + is followed by an excess blank line.
- Parse: Fixed: Crashes when saving to XML instead of JSON.
- Parse: Changed the command line options.
- StaticLang: Output directory cannot be the same as Goldie's package source, to prevent overwriting Goldie's source. (But note: This detection can be fooled with symbolic links or separate installations of Goldie.)
- StaticLang/Parse: Always output Unix-style \n newlines. (This is 2012 - everything relevant handles \n just fine, even on Windows. High time to standardize on it.)

### v0.8 - Support DMD 2.058

2012-02-18
Tested on: DMD 2.052 - DMD 2.058, but only partially DMD 2.057 as described below (but see this note regarding RDMD from the archived Goldie documentation)

- Added support for DMD 2.058.
- Calculator samples now require at least DMD 2.054.
- StaticLang: Static-style languages generate a proper compile-time error when used with a different version of Goldie than the one they were created with.
- Now uses SemiTwist D Tools tag 'goldie-v0.8'.

### v0.7 - API, 64-bit, Git

2012-01-29
Tested on: DMD 2.052 - DMD 2.056, and partially DMD 2.057 as described below (but see this note regarding RDMD from the archived Goldie documentation)

- GoldieLib: Added Token.get and Token.getRequired.
- GoldieLib: Added traverse for parse tree traversal.
- GoldieLib: Added op overloads as a preferred alternative to Token.subX for accessing subtokens in dynamic-style.
- GoldieLib: Fixed: RangeException on Token.matches("<blah>", null) (ie, when attempting to match an empty rule with matches).
- Fixed Issue #20: Fails on 64-bit builds. (But note the still-open #21: 64-bit 'staticlang' and 'sampleGenericParse' blocked by DMD Issue #6983)
- Switched version control from SVN/DSource to Git/BitBucket.
- Added Beginner's Tutorial.
- Many documentation updates/improvements including (in addition to the usual misc and API updates) an updated FAQ.
- StaticLang: Creates the output path if it doesn't already exist.
- Renamed "Parse Anything" sample to Sample Generic Parse (to avoid confusion with the Parse tool).
- Added support for DMD 2.056. On DMD 2.057, dynamic-style works, but not static-style or grammar compiling due to DMD Issue #7375.
- Now uses SemiTwist D Tools tag 'goldie-v0.7'.

### v0.6 - Newer DMDs and Static Fixed

2011-10-04
Tested on: DMD 2.052 - DMD 2.055 (but see this note regarding RDMD from the archived Goldie documentation)

- Added support for DMD 2.054 and 2.055. The next version of Goldie will likely require at least 2.055.
- Fixed: Major bug in static-style: Some tokens erroneously refer to calc grammar no matter what grammar they're from.
- Now uses SemiTwist D Tools r234

### v0.5 - Speed

2011-05-17
Tested on: DMD 2.052 - DMD 2.053

- Improved lexing/parsing speed by about 5x-6x.
- Small additional speedup lexing languages with large character sets (such as Unicode).
- GRMC: Grammar Compiler: Supports {All Valid} character set.
- GRMC: Grammar Compiler: Complex grammars are compiled to CGT up to about 4x-8x faster.
- GRMC: Grammar Compiler: Verbose (-v) flag shows each step and amount of time taken.
- ParseAnything: No more unhandled exception when parsing a source with an error.
- Fixed to work with DMD 2.053 (still works with 2.052, too).
- Now uses SemiTwist D Tools r221

### v0.4 - D2 and GRMC

2011-03-27
Tested on: DMD 2.052

- Switched from D1/Tango to D2/Phobos.
- New tool: GRMC: Grammar Compiler. Because of this, Goldie no longer requires GOLD Parser Builder.
- Grammars can be compiled not only from GRMC: Grammar Compiler, but also through the D API, GoldieLib.
- No longer requires xfBuild or Rebuild.
- Executable filenames are now prefixed with 'goldie-' to minimize chance of collisions on the PATH.
- Many misc changes/improvements to tools, API and documentation.
- Now uses SemiTwist D Tools r213

### v0.3 - Static-Style and Documentation

2010-07-25

- Added static-style languages.
- Major improvements to API for parsing errors.
- Misc changes/improvements to API.
- New tools: StaticLang, JsonViewer and GenDocs.
- Split Calculator sample app into a dynamic-style version and a static-style version.
- Greatly improved handling of Unicode.
- Created complete documentation.
- Now uses SemiTwist D Tools r132

### v0.02 - Minor Bugfix

2009-09-09

- Fixed: Rare array-out-of-bounds upon Lexer error.
- Fixed: Ticket #1: Extra oddball character in lex error message's quote
- Now uses SemiTwist D Tools r86

### v0.01 - Initial Release

2009-08-26

- Initial Release
- Uses SemiTwist D Tools r82