The Tower Bridge in Sacramento, California Revision History
Versions Released in 2004
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 ...

The following is a list of versions released in 2004.

Version 2.5 (December 18, 2004)

  • The functionality of Program Templates was expanded significantly. The templates contain a number of new tags and blocks that allow the entire contents of the Symbol Table, Rule Table, Character Set Table, DFA Table and LALR Table to be exported.
  • The 'Create a Skeleton Program' window now displays a 'scanning' message. When the window is first loaded, it scans the contents of the \templates folder. This can take a few moments.
  • The format of the file created by the 'Export to XML' tool was modified slightly.
  • Made a few minor tweaks to the LALR State Browser.
  • Fixed the double-paste bug. When text was pasted into the Grammar Editor, it would be pasted twice.

Version 2.4.2 (November 22, 2004)

  • The YACC to GOLD translator was integrated into the Builder. This is a simple utility that translates a grammar written in the YACC Meta-Language to the GOLD Meta-Language.
  • The Edit Menu now contains both a Find and Replace option. Most text editors contain simple find and replace windows. These were actually quite easy to implement given the functionality built into the RichText Control.
  • The Copy, Cut, Paste, and Delete keyboard shortcuts were added to the Edit menu.
  • The Test Window was improved slightly. When a 'parse action' is clicked, the description is now displayed at the bottom of the window.
  • Table generation was broken into two steps. Beforehand, the 'Next' button simply displayed 'Compute Tables'. When clicked both the LALR and DFA tables were constructed - one after another. Since the Builder can now correct for Shift-Reduce errors, the system would create the DFA tables even if the developer wants to create a grammar free of any shift-reduce conflicts.
  • The GUI library used by this application was updated. The overall efficiency of the library was improved. This includes both speed and memory requirements.
  • The 'dot' character in the Export to Formatted Text was changed. The ISO-8859 dot {#183} is now used.
  • The Export to Formatted Text output was modified. The Log is now printed before any of the other tables. The file also contains a simple header message.
  • The About Window was modified. The style of the About Window now matches the style of the splash screen.
  • Fixed a minor bug in LALR State Browser. When a CGT file was loaded, the LALR State Browser would not allow the developer to double-click on actions.
  • Fixed LALR and DFA State Browser scrollbars. The scrollbar was acting strangely when it was first clicked. This bug appears to be part of the actual Visual Basic control. It has been circumvented.

Version 2.4.1  (October 1, 2004)

  • Huge Addition! The LALR and DFA state windows were improved. Beforehand, both windows simply contained a listing of each state. This was hard to interpret since moving from state to state was done by scrolling. Both of the windows are now state 'browsers'. Links between states can be followed by double-clicking. I also added 'back' and 'forward' history buttons.
  • The log window is linked to the DFA and LALR state windows. If you double-click on a log item about a DFA or LALR state, it will open that state for you.
  • The text displayed in the LALR states for 'Reduce' actions was changed. The new format is designed to be easier to read. Beforehand, a reduction of rule 3 would be read 'Reduce 3'. Now it reads 'Reduce Rule 3'.
  • The speed of the 'Goto Line' feature in the grammar editor was improved. It is still very slow.
  • I made some minor changes to the GUI Library. These changes are minor, and are mostly performance based.
  • The format of the Symbols Window was improved. I rearranged the controls for readability.
  • The style of the webpage created by Export Webpage Window was improved. The new format looks slightly better - still not be best, but definitely not the worst! :-).
  • Fixed a bug in the Export Webpage Window. The color information was not being written correctly to the file. As a result, the color styles were in error and the resulting tables were simply black.
  • Fixed a minor bug in the Test Window. The Test Window normally disables the 'Parse' button if a problem is found when constructing the parsing tables. Unfortunately, the button is not disabled if a problem is found in the DFA States.

Version 2.4  (September 21, 2004)

  • Major Update! The system will now automatically fix Shift-Reduce conflicts. The system will not add a reduce action if it will cause a Shift-Reduce conflict. This is the same behavior that is used in the YACC compiler-compiler.
  • Added a 'Tip of the Day' window.
  • The grammar can now be exported to YACC. I originally created this simple procedure for my Master's Project Report. This tool will create a new '.y' file containing the grammar's rules in YACC format.
  • The Test Grammar Window now logs read comments. As comments are read, the system now lists them on the 'Actions' tab.
  • I added some miscellaneous links to the Help Menu. These links include the Unicode Consortium and California State University, Sacramento.
  • Some internal changes were made to attempt to solve the mysterious Error 91 bug. This bug only affects the builder when it is executed on the Asian version of Windows. The cause is, unfortunately, not obvious in the code. Special thanks to HaeRim Lee for his help.
  • The semantic checks for grammars were enhanced. The system now better checks if all rules and terminals are defined properly.
  • Windows are displayed more efficiently. The system only reloads information into windows if the data has changed. Beforehand, anytime a window was 'displayed', information was reloaded.
  • The icons in the System Log were changed. The icons for 'Critical Error', 'Success', 'Warning' and 'Information' were replaced with better variants.
  • The New Grammar Wizard was modified. When the wizard creates a line-based grammar, the definition for a 'New Line' was modified to include a single {LF}.
  • The main toolbar was rearranged slightly. Most likely, now one will notice this change.
  • The release dates for each version of the Builder were added to this window. Just click on one of the version icons. I don't have the release information for versions before 1.0 Beta 20.
  • The Log Window was modified slightly. The error description for Shift-Reduce Conflicts was changed.

Version 2.3  (June 6, 2004)

  • Added a New Grammar Wizard. The Wizard allows you to create a basic grammar for a number of common programming language attributes.
  • Added two new variables to the Program Template format. These two new variables, %ID.Padded% and %Value.Padded%, allow the developer to specify identifiers and values that are right-padded with spaces such that each has the same width.
  • Program Templates are now more versatile. The identifier tags, such as ##ID-CASE, can appear anywhere in the template. Beforehand, these tags could only appear at the start of the template. With this change, the developer can create different symbol and rule lists using identifiers with different formats. In addition, this information was removed from the Create Skeleton Program window since a single displayed value is meaningless.
  • Tweaked the 'Next' button.
  • The look of the Splash Screen was modified.
  • Modified the preset colors on the Export Webpage utility. The 'Beige' scheme is far more beige.
  • Fixed a very minor bug in the DFA table construction. Most likely, no one ever found this bug.
  • Fixed an Engine bug concerning line comments. When the Engine encounters a line comment, text is discarded until either a new line or the end of file is encountered. The new line characters are not discarded. The Engine was discarding the first character of the carriage return / line feed sequence which caused problems with line-based grammars. Special thanks to Dean McNamee for finding this bug.
  • Fixed a bug when saving large grammars. When saving grammars over 32k lines, the Builder would crash. This was the result of using a 16-bit integer rather than a 32-bit version.

Version 2.2.1   (May 15, 2004)

  • Added a Most Recently Used (MRU) section to the file menu. This feature is found in most applications. The most recently used files are displayed at the bottom of the File Menu.
  • Made some revisions to the GUI library.
  • The arrow icon on the 'Next' button was changed. The new icon matches the style of the icons used in the toolbar.
  • Fixed a few typos.
  • The Log Window will only automatically appear if a problem is found. Beforehand, the Log Window would display each time the 'Next' Button was clicked.
  • Fixed a bug in the DFA table construction. Kleene Stars were not functioning correctly if applied to a literal string (e.g. 'bug'*). Special thanks to Rick Sprague for finding this error.

Version 2.2   (April 28, 2004)

  • Added 'Virtual' terminals. These terminals are specified in the "Virtual Terminals" parameter. The system will enter these terminals into the symbol table, but they will not be entered into the Deterministic Finite Automata. As a result, the terminals will not be recognized by the tokenizer, but can, instead, be created by a specialized version of the Engine or by the developer. This can help developers parse languages which are not context free - such as Python.
  • Added a few new options to the exporting to formatted text or web pages. You can now exclude LALR lookahead sets and unstarted configurations when exporting the parse tables.
  • Program Templates now can create constants in lowercase. The ID-CASE parameter can contain Uppercase, Propercase and Lowercase. Previously, 'lowercase' was not allowed.
  • Added a 'Trim Reductions' button to the Test Window toolbar. Beforehand, this option could only be changed from the main menu.
  • The Test Window can now export the parse action table. Before, the test window would only export the parse tree.
  • The formatting used in the Test Window was improved. The formatting used to list parse actions was modified. The new format is easier to interpret.
  • I cleaned up much of the internal code. There are too many things to list.
  • The acronym for 'GOLD' was changed again. The new acronym stands for Grammar Oriented Language Developer. This should be the last time the acronym is changed.
  • Character constants between &D800 and &DBFF are no longer valid. These values are reserved in Unicode for UTF16 encoding.
  • The 'Export Formatted Text' utility is now much faster. Both the speed and formatting used by this utility was improved.
  • The Help toolbar button and menu item will now open the main online help page. Beforehand, the Help would open the meta-language documentation page.
  • Fixed a bug when creating skeleton programs. If the Symbol or Rule prefix was blank, the system was adding the text 'Space'. This made if it difficult to create constant names without prefixes.
  • Fixed a very minor bug with the Create Program Template window. When you browse for a different folder using the Create Skeleton Program utility, the system was not disabling the 'Create' button if no templates were found.
  • Possibly fixed a bug concerning how the toolbar icons are displayed. On some systems, the toolbars were failing to remove the mask color (color that is transparent) on the icons. I made some revisions to the GUI library that might fix this. Time will only tell, though.

Version 2.1.1   (January 19, 2004)

  • Added a browse button to the 'Create a Skeleton Program' window. The button allows the user to select another folder containing program templates.
  • The behavior of the Test Window was slightly changed. The Test Window will now clear the Parse Actions and Parse Tree tabs when a new test file is opened.
  • The system now displays the 'Working' dialog when opening a file that was dragged and dropped.
  • The shortcut key for the Test menu was changed from Alt-E to Alt-S. The 'E' was conflicting with the Edit menu.
  • Fixed a 'Set Constant' bug. The set constants {#xxxx) and {&xxxx} were not valid when defining terminals. This was a careless mistake.
  • Fixed a bug when creating skeleton programs. When the system created enumerated constants for the symbol table, some symbols were left out. This was the result of conflicts with the generated constant names. For the rule table, these conflicts were resolved by adding a number to the end of the constant. Symbols, however, did not contain this logic. Special thanks to Rick Sprague for finding this bug.

Version 2.1   (January 10, 2004)

  • Added a splash screen.
  • Major Update! The LALR table generation algorithm was reengineered. The old algorithm would slow down exponentially for complex grammars. The new algorithm, in some cases, is twice as fast in computing the tables.
  • Two buttons were added to the Test Window. One of the buttons allows the user to display the 'Set Error Recovery Limit' value. The other button allows the user to save the parse tree.
  • Window minimization was disabled. When MDI child windows were minimized by the user, some strange errors could happen. The buttons might be enabled in a future version.
  • The toolbar icon used for the System Log was changed. Beforehand, the icon consisted of a pencil - which was not very representative of the System Log. The new icon will hopefully work better than the last.
  • The help icon was updated. The new version is slightly better.
  • Some additional information was added to the error log.
  • Updated the Log Window. When you click on a log item, the window will now display the title and description.
  • Fixed a rather careless bug in the Grammar Test Window. For large parse trees, the test window will display a message that the tree can be saved to a file. However, I forgot to enable the save feature.
  • Fixed a bug in the Webpage Export window. The table that created to display parameters also contained comments that should not have been visible.
  • When computing tables, the menus and toolbar buttons were not disabled.

2003 Revisions
2002 Revisions
2001 Revisions