The Tower Bridge in Sacramento, California Revision History
Versions Released in 2005
Latest News
Getting Started
Screen Shots

About GOLD
How It Works
Why Use GOLD?
Revision History
Freeware License
More ...

What is a Parser?
Backus-Naur Form
DFA Lexer
LALR Parsing
More ...

GOLD Newsgroup


The following is a list of versions released in 2005.


Version 3.0.2 (December 22, 2005)

  • Added an indent and unindent editor feature. These two editor features allow you increase and decrease the indent of the selected text. Buttons were added to the toolbar and the menus were updated.
  • Added an 'auto align' editor feature. Most definitions can contain multiple lines. This feature will align each '|' to the corresponding '::=' or '-'. A button was added to the toolbar and the menus were updated.
  • Some internal variables were changed from 16-bit integers to 32-bit integers.
  • The LALR State Browser was modified slightly. The LALR State Browser will display conflict information in both the Actions Tab and Configurations Tab. Beforehand, the message would only be displayed in the Configurations Tab.
  • Updated the toolbar icons. The new versions are a tad better. I doubt few will notice the change.
  • Fixed the focus bug in the Test Window. When a 'parse action' was double-clicked, the system was not setting the focus in the text window.
  • The Test Window is now reset with the rest of the system. Before, the Test Window would retain any parse information even if the system was 'reset'. This allowed information to be displayed that would differ from the grammar. This was a very minor bug.

Version 3.0.1 (October 16, 2005) 

  • The toolbar icons were updated. I wrote a really simple program that gave each icon minor shading. As a result, the new icons have a slight '3D' look and, consequently, are far more appealing than the previous set. The icon used for 'Help' was also replaced with the blue-circle symbol that is becoming the standard.
  • The footer in the Test Window was improved. When the user clicks on a parse action, details are displayed in the bottom of the window. If there was a large amount of text, it could not be displayed in the space provided. The window not will automatically display a scrollbar if this happens.
  • The grammar created by the Grammar Wizard was modified slightly. The horizontal tab is often allowed in string literals. However, the string definition created by Wizard did not include it.
  • The 'Tip of the Day'  Window is now an MDI child.
  • Fixed an 'overflow bug' in the Test Window. In cases where the test file was large, an 'overflow' error would occur. This happened when the system was ready to display the parse tree.

Version 3.0 (September 4, 2005)

  • Major Update! The user interface was completely overhauled! Prior versions of the Builder used a GUI library that I wrote a long time ago. Although I thought it looked good on Windows 95, 98, etc... it looks quite odd on XP systems. This change also makes the application considerably 'lighter' than the last version.
  • The main toolbar was redesigned. By adopting the standard toolbar and coolbar controls, I have been able to add more icons to the application.
  • The message section, which displays the current step, was redesigned. An icon was added that represents the current step. The accompanying description was also changed.
  • Added a new 'Reset' tab to the Options Window. The new tab allows the developer to check off items to be reset. So far, only the Most Recently Used (MRU) menu is available.
  • Some helpful, recently used, folders are now remembered between sessions. The folders that were used save skeleton programs, load test information, and save test results are stored for later use. Beforehand, the developer had to manually browse to the folder - even if it was used just moments before.
  • A new window was added for the 'Go To Line' feature. Before, the system merely used a default Windows dialog message.
  • The colors were modified slightly. Some of the colors used in the Log and the Test Window were changed. In each case, only the brightness and hue were tweaked.
  • Changed the 'ANSI' parameter setting to 'Windows-1252'. The Character Mapping parameter is used to specify if the Builder needs to add extra characters to support other sets besides pure Unicode. The value 'ANSI' was used to support the characters mapped between 129 and 159 by the Windows-1252 standard. Techincally speaking, the usage of 'ANSI' rather than 'Windows-1252' was not correct. This modification fixes it. Developers can still specify 'ANSI' for the Character Mapping parameter. Both are treated the same.
  • The application's icon was changed. The old icon was created several years ago and was used in the first beta release of the Builder. Needless to say, the icon was due for a change. The new version is more 'golden' and contains a faint outline of Tower Bridge. I still might change it again.
  • The save prompt text was changed. The system now prompts 'Do you want to save changes?'.
  • The 'Close' button on the Grammar Window was disabled. The Grammar Window cannot be closed. In the last version of the Builder, the system called the 'New Grammar Wizard' if this button was clicked. This button should have been disabled long ago.
  • The internal stream class was optimized. The new version is much faster.
  • YACC Import Wizard was improved slightly. The utility produces better error messages - if the grammar does not import correctly.
  • Fixed a minor bug in the Test Window. When a syntax error occurred, the line on the Parse Actions tab was not colored.
  • Fixed a character constant bug. Terminal definitions were not properly handling character constants. In most cases, characters constants, which are denoted using the {#xxx} and {&xxx} notations, are used in set definitions. However, they can be used directly in terminal definitions as well. Thanks to Dan Ullfig for reporting this bug.
  • The 'Reset' menu option was available if a CGT was loaded. This was a very minor bug.

Version 2.6.5 (June 11, 2005)

  • Added a 'comment' and 'uncomment' editor feature. These two features will add/remove the ! symbol from the start of each selected line. Buttons were also added to the main toolbar. The Meta-Language still supports block comments using !* .. *!.
  • Added toolbar buttons for Cut, Copy and Paste. The buttons, like the menu items, will work for both the grammar editor and the 'Test Grammar' window.
  • Redesigned the LALR State Browser. The window now contains three tabs. The first two tabs contain information that was previously available - namely configurations and actions. The 'new' third tab contains all the 'prior states' that advance to the current state. This allows the developer to trace backwards - which was very difficult before.
  • The 'Export to Webpage' window was revamped. The developer can now save their customized color schemes. Beforehand, each color scheme was 'hard-wired' into the system. In addition, some new color schemes were created based on a different colors.
  • The system creates HTML much more efficiently. The algorithms used to export HTML from the various internal tables were rewritten.
  • The 'Export to Text' window was modified. The checkboxes were rearranged slightly and a 'Show the Prior State List' option was added.
  • The icons in the Revision History window were changed. The new icons follow the same metaphor as before: a star for new features & major changes, a gear for modifications and a hammer for bug fixes. Basically, the icons are now a little smaller. Naturally, this is a cosmetic change.
  • The Window Menu was modified slightly. The menu item 'Log' is now grouped with the other window items. This is a minor modification.
  • The DFA State Browser as modified. The window now displays 'There are currently no states' if the DFA table has not been computed. This is very minor change.
  • The preview text in the Page Setup and Options windows was changed. The new text '<S> ::= print <E>' is short, but should be more representative of the grammar.
  • Some of the colors were modified. The colors used to denote reduces and gotos were modified to be consistent between the 'Test Window' and the DFA and LALR state browsers.
  • Fixed a minor bug in 'Go To Line'. An internal variable was changed from an 16-bit integer to a 32-bit integer. In some cases, this variable was overflowing.
  • Fixed a minor bug in the Test Window. The Test Window would not jump to the top of the z-order when its toolbar button or menu item was clicked.
  • Fixed a minor window refresh bug. The LALR and DFA state browser windows would not refresh when a new grammar (or CGT) was loaded.

Version 2.6.4 (May 10, 2005)

  • The text displayed for LALR Conflicts was changed. The text is now more descriptive. In addition, the names of the symbols, that caused the conflict, are grouped into a single log entry. This makes it far easier to analyze the conflict.
  • The Print Parse Tree option in the Test Window was improved. Headers were added to the Parse Actions and Parse Tree section of the generated file. This is a very minor change.
  • Reduce-Reduce Conflicts were not being logged! Reduce-Reduce Conflicts were being analyzed, but not entered into the system log. Special thanks to Manfred Nowak for his help.

Version 2.6.3 (May 3, 2005)

  • A Page Setup window was added. The new window allows the developer to specify the margins and the font used to print a grammar. Before this addition, the window was set to half inch margins using the Courier New font.
  • An Options window was added. Most applications contain a window (or a set of windows) that the developer can use to set different options and preferences. This new window currently only contains the font used in the Editor Window. However, the Options Window should grow over time.
  • The Test Window now displays shift information. Shifts, which were previously not reported, are now listed under the 'Actions' tab.
  • The developer can now double-click on Test Window items. If the developer double-clicks on 'Token Read', the system will jump to the corresponding line in the test window. Also, if the developer double-clicks on a shift or reduce, the system will open the LALR State Browser.
  • The icons in the Test Window was improved. The new icons are designed to be a tad simplier and easier to recognize. I still haven't figured out a good picture to use for reductions. For now, the 'box' icon is still used.
  • The Trim Reductions feature on the Test Window is now disabled by default.
  • Fixed the 'Goto Line' control key. The system was reading the Control-G key combination, but was not prompting the user to enter a line number. Basically, the control-key was not being processed. The menu and right-click methods worked.
  • Fixed a very minor bug in the test window. The message section of the window had the 'Use Mnemonic' flag set to true. This caused any text that displayed an ampersand (&) to underline the next character.

Version 2.6.2 (April 14, 2005)

  • The Test Window output was modified slightly. One of the columns on the 'Parse Actions' tab contains the 'Table Index'. Unfortunately, the actual meaning of the data stored there was not indicated. The data now displays whether the 'Table Index' is a rule, symbol or LALR state (which was just added).
  • The description area of the Revision History window was resized. The description area is was increased slightly.
  • Fixed a bug in the LALR table construction algorithm. The bug occurred in the 'partial closures' that are created before the LALR states are computed. In rare cases, configurations were not set to 'inherit' lookahead symbols from the spawning state. This resulted in parse errors even though the source text and grammar were correct. This bug only affected versions 2.6 and 2.61 of the Builder. Even though the bug is rare, it is recommended that you recompile your grammars.
  • Fixed a minor bug with the Test Window. The 'Parse' button was remaining disabled if a Compiled Grammar Table file was loaded.
  • Fixed a refresh bug with the Find and Replace windows. Both of these windows were being displayed as 'modal' - on top of all other windows. However, if the developer attempted to replace text when the system had other windows opened, the system would create an error. Both windows are now normal MDI subwindows.

Version 2.6.1 (April 9, 2005)

  • Added some additional grammar checks. The checks are designed to find flaws in grammars before the system attempts to create the LALR parser and DFA tokenizer. The first test checks if rules are both left AND right recursive. The second checks for rules in the form <A> ::= <A>. Both cases will always cause a shift-reduce error.
  • The LALR construction algorithm was improved. The algorithm now uses a different tree traversal method than before. In addition, some additional, temporary, tables were created to improve efficiency.
  • The text displayed in the system log was changed. The text displayed for Shift-Reduce conflicts now includes the symbol's name. There were some additional, trivial, modifications.
  • Pop-up menus no longer have the short-cut key names. In Windows, special key combinations allow you to copy, paste, etc.... When the user right-clicks on either the Grammar Editor or Test Window, a pop-up menu will appear contain the options in the Edit Menu. However, the control-key values were also being displayed, which is not the standard format for Windows applications.
  • The splash screen and About Window were modified slightly. The pictures used in both were tweaked slightly. The gray that is displayed under the logo was not appearing quite 'gray' on some systems. In addition, the splash screen now stays on screen for a couple seconds.
  • Windows now refresh more efficiently.
  • The 'Export the Tables' sub menu was modified. The 'Export to Formatted Text' and 'Export to a Webpage' utilities are now enabled whenever exportable data exists. Beforehand, these two utilities were only enabled if both the LALR and DFA tables were analyzed.
  • The buttons on the main toolbar were rearranged. The position of the DFA and LALR buttons were switched. Originally, the DFA State Table was computed before the LALR. This is why the DFA button was displayed first.
  • Fixed a line increment bug in the Test Window. The Test Window uses an embedded version of the ActiveX Engine which has a bug. The Engine maintains an internal count of the number of lines parsed. However, the line was only being incremented if a Carriage Return (#13) character was read. While this works for Windows/DOS files, UNIX files caused a problem given that only a Line Feed (#10) is used.
  • Fixed a character constant bug. I made a couple quick changes before version 2.6 was compiled and uploaded to the site. One careless change caused character literals {&x) and {#x} to be misinterpreted. Special thanks to Marutsu Nokoni for reporting this bug.

Version 2.6 (March 28, 2005) - Major Update

  • Huge Addition! Set ranges were added to the GOLD Meta-Language. Set ranges allow the developer to specify a large range of characters. Beforehand, developers had to rely on the predefined sets or manually add each character of the range to a set definition. Needless to say, this could be quite tedious. In addition, some predefined sets were also added that include large sections of the Unicode Character Set.
  • Major Update! The DFA table construction algorithm was reengineered. The new version is faster and able to handle huge character sets.
  • Update! The LALR table construction algorithm was improved. The algorithm now computes all the nonterminal configuration set closures before building the LALR state table.
  • Added a 'Save Log' item to the Tools menu. Beforehand, the log could only be saved by exporting the tables to either text or a webpage. The Log Window was also modified to include a save button.
  • The 'Import a YACC Grammar Wizard' was reengineered. The new version is better able to handle grammars with embedded C/C++ source code. Beforehand, the system was able to import a grammar only if the C code followed the rule. This new version, however, tolerates C code appearing anywhere in the rule. It is also better able to handle YACC precedence levels.
  • The Edit menu now works with both the Grammar Editor and Test Grammar windows. You can use the control keys or the menu to copy, paste, cut, etc... text into either window. Pop-up menus were also added.
  • Added a set literal warning. Sometimes, developers use YACC-like notation for set literals such as [A-Z]. However, the GOLD Builder only interprets this as the three characters: 'A', '-', and 'Z'. I had previously added this warning to when sets were being defined, but failed to add it when set literals are used directly in terminal definitions.
  • Modified the DFA and LALR state browser windows. The tabulation order was fixed and the grids that display the state information were improved.
  • The Grammar Editor window and the Test Window now display the current column number.
  • The Tip window as modified slightly. Both the window and the controls were resized slightly.
  • Minor revisions were made to the Create Skeleton Program window. The window is now disabled (and the hourglass cursor is displayed) when the program template folder is being scanned.
  • Modified the Replace window. The window now contains a message bar that will display the total number of replacements - if 'Replace All' was selected.
  • When a CGT loads, the 'Next' button will now be set to 'CGT Loaded'.
  • The toolbar was modified slightly. The placement of the buttons and graphic 'dividers' was changed.
  • The 'Tools' menu was modified slightly. The Create Skeleton Program utility is now disabled until the grammar is completely analyzed.
  • The 'Export' submenu was improved. Only the items that should be disabled, are disabled, depending on the status of system. Beforehand, the entire 'Export' menu was disabled unless the grammar was successfully analyzed.
  • The splash screen and 'About' window were modified. The picture of Tower Bridge was modified to be a tad brighter.
  • Miscellaneous internal improvements were made. Most of the improvements were minor and dealt mainly with efficiency.
  • Fixed the 'format paste' bug. Often when text was copied and pasted into the grammar editor, the text's color, font and size were also copied.
  • DFA State Browser now refreshes on reset. The DFA State Browser was not resetting the displayed data if the system was reset. As a result, the system would show the last viewed state although it did not exist.
  • Fixed the z-order for the Find and Replace windows. Sometimes, the Find and Replace windows could be hidden behind other windows. If the user attempted to display the windows, it would not jump to the front of the z-order.
  • Fixed a very minor file load bug. If the user attempts to open a unsupported file type, the system was displaying a message box with no text.

Version 2.5.4 (March 7, 2005)

  • The YACC Import Utility is now a wizard. The new 'YACC Import Wizard' gives the user more control over the how the new grammar is generated. This includes the formatting of rules and how rule names are converted.
  • The HTML generated by the 'Export To Web Page' utility was improved. The page now complies with W3C standards.
  • Some changes were made to the preset color themes in 'Export To Web Page' utility. The colors of the 'Humboldt' theme and 'Default' theme were improved. In addition, a new theme called 'California Republic' was added. This theme is based on the colors of the flag.
  • Made some modifications to the log. If a shift-reduce conflict is fixed, the log will now display the name of the token that caused the conflict.
  • The Most Recently Used (MRU) menu was modified. The files listed on the MRU are now ordered based on the last opened. Beforehand, if a file was already on the list, it would remain at its original position.
  • The 'C (ANSI) - Defines' program template was updated. Justin Holmes created a new version of the template to include rule #define statements.
  • Fixed a bug with the 'Export to Web Page' utility. The system would sometimes report an overflow error if the source grammar was exported. Special thanks to Jens Olesen for reporting the error.
  • Fixed a minor bug in the 'Replace' edit window. When the window is loaded, any text highlighted in the grammar editor window should be copied into the 'Find' textbox. However, the text was being copied into the 'Replace' textbox.

Version 2.5.3 (February 15, 2005)

  • The Program Templates for Robert van Loenhout's Calitha Engine were added. The templates can also be downloaded with his source code.
  • Some changes were made to the DFA and LALR State Browsers. The changes are completely internal and are designed to improve efficiency.
  • The 'Notes' section in the 'Create Skeleton Program' utility was improved. The system now reformats the text before it is displayed. This change is completely cosmetic.
  • When a CGT loads, the 'Next' button will now be set to 'Done'. Before, the 'Next' button would be set to 'Save the Tables'.
  • Fixed two bugs in the 'Create Skeleton Program' utility. The %Delimiter% variable was not properly working. Secondly, the %ID.Padded% variable was the wrong number of characters in some rare instances.

Version 2.5.2 (January 18, 2005)

  • Fixed the "Subscript Out of Range" bug. Some users were experiencing  a 'subscript' error when attempting to use the Create Skeleton Program utility. The source of the bug was traced to a compiler flaw. The application was modified to circumvent it. Special thanks to Bert Robben for his help.
  • Fixed a bug in the Create Skeleton Program utility. The generated constants were not correct for symbols and rules.

Version 2.5.1 (January 2, 2005) - Minor Update

  • The 'Export to Webpage' utility was improved. The format of the generated tables was improved slightly. Column headers are now displayed with a different style than the body cells. The window also allows more control in selecting colors. Some of the 'Presets' were updated and renamed. Many of these were based on different counties in the California Republic.
  • Fixed a bug when reassigning parameters. The parameters were not being completely reset when a new grammar was loaded. As a result, the system generated erroneous warnings.

2004 Revisions
2003 Revisions
2002 Revisions
2001 Revisions