|Information About Each Release
This page contains a list of
changes and features added to the GOLD Parser Builder per each release.
- Added a 'Previous States' tab in the DFA State Browser. It works
just like the tab in the LALR State Browser.)
- Added a Nullable and First Set Table window. This information is
used to construct the LALR State Table. It should be useful for
students learning parsing theory.)
- The Symbol Information Window now displays relevant data.
Nonterminals and terminals have different meaningful properties. The
window now will only display the ones that apply to the symbol in
- Fixed a bug when declaring hexadecimal set ranges. The algorithm
had a flaw resulting in -1 (FFFFFFFF) in most cases.)
- Fixed a bug that affected using a Group End Terminal in
productions. This should be allowed in all cases, but the system was
vulnerable to the order of declaration in the grammar.)
- Fixed a bug in the Create Webpage utility. The system was
duplicating group lexical information. The same text was being
repeated for each group.)
- Added Shift+Home and Shift+End to the editor. The text editor
now supports Shift+Home, to select to the end of a line, and
Shift+Home to select to the beginning of a line.
- Revamped the Test Window layout. Before, the tabs (containing
the actions and tree) were displayed below the test text. This
wasted 'screen real estate'. Now, the two sections are side by side.
- Save As dialog window now contains the filename. If you attempt
to save the current grammar, if will show the current filename as a
- Added cancel button to the Clear Bookmarks window.
- Replace Window bug fixed. The system was taking an extremely
long time to do a simple Find-Replace on the grammar. It will work
- Test Window now draws the parse tree. A last minute change
in 5.1.1 caused it not to be drawn.
- Test Window is using color in the Actions table. This was an
oversight when 5.1 was released.
- Test Window now reports LALR shifts. In the last version, shifts
were never reported in the Actions Table.
- Color scheme bug fixed.. Users were unable to save custom color
schemes. Now, when you save a custom color scheme, the system will
save it in the user's 'AppData' folder. So, color schemes are
located in both the application's Colors folder and the user's
- Added LALR Conflict Reports. The system now tracks the origin of
lookahead symbols in LALR Configurations. When a conflict occurs,
the LALR State Browser will generate a report. It contains the 'why'
symbols can follow a reduced production.
- Export Webpage tool was overhauled. The new 'Export Webpage'
tool can automatically generate lists of 'reserved' words, symbols,
and information about lexical groups. You can also export tables.
The generated webpage can be a great way of starting a language
- Added new dialog windows. The new dialog windows are basic, but
allow customized button text and a, very useful, 'show this next
time' text box. This will allows users to make windows, they find
annoying, go away.
- Huge bug fixed. A last minute change resulted in a bug with
productions. In this case, productions could only have unique
symbols. Special thanks to Michael for finding this.
- Version 5.0 parsing algorithm was implemented. This change gives
the developer great flexibility over lexical behavior. Lexical
groups and the ability to control the attributes of terminals were
- Added Test Window report options. The developer can now
control if whitespace and parser actions (shift/reduce) will be
reported in the report.
- Added a 'Do you want to edit' warning to the Test Window.
Beforehand, the Test Window source was locked during a test. With
this change, the user can edit the source and receive a warning.
This warning, like the one generated if the user edits the grammar,
can be disabled.
- The Test Window is now linked. The user can double-click
on the test report and the system will open the appropriate Symbol
or LALR Window.
- Added a tab to the Symbol Detail Window. The new tab
displays the productions which use the symbol as its head. This was
an oversight and should have been added before.
- Added a most recently used (MRU) list for the Test Window.
The list was placed in a submenu. Otherwise, the menu would look a
- Added filters to the Create a Skeleton Program window. The
filters can be used to display programs templates for a specific
engine and/or target language. This should keep the window from
becoming overly complex.
- The grammar editor now uses smart indenting. When you hit
enter, the new line will be automatically indented. This is a common
feature in most program development software.
- Updated the code box. I made some internal changes to
improve speed. In particular, the changes were designed to improve
the efficiency of drawing the screen.
- Improved program templates. The program templates can now
export lexical groups (given their addition to the GOLD system).
Also, the user can specify %Col=nn% in the markup code. This will
cause spaces to be inserted until column 'nn' is reached. This is
good for aligning code for readability.
- Improved the YACC/Bison import utility. The updated
version will successfully load YACC grammars that contain embedded C
code. Before, the system would sometimes fail depending on the
content of the code. Also, the YACC file name is now placed in the
imported grammar's parameters.
- Moved the main most recently used (MRU) list into a
submenu. This matches the style of the test window's MRU. It also
allows a 'clear list' menu item to be added and look somewhat decent
- Moved all testing options to the Test Options Window.
- Improved the Symbols Window. The Symbols Window now
displays the symbol's type. This is a minor, yet helpful, change.
- Fixed a highlight bug in the Test Window. The system was
failing to clear the highlighted source after the parse was
- Fixed a bug in the Test Window that affected the
menus/toolbar. If the Test Window was closed, with a test active at
the time, the system was not resetting. As a result, the
menus/toolbars were still set as if test was active.
- Fixed a bug in the Symbol Detail Window. The window wasn't
displaying the correct text in the 'definition' property field. It
affected terminals defined using set literals.