|
The following is a list of
versions released in 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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
|