|
This release fixes a few minor bugs - mostly annoying - and adds a couple of useful
editor features.
- Added an indent and unindent editor feature. These two editor features allow you
increase and decrease the indent of the selected text.
- Added an 'auto align' editor feature. Most definitions can contain multiple lines. This
feature will align each '|' to the corresponding '::=' or '-'.
- 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.b.
- 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.
You can get a copy from the Builder Download page. |
I created a new icon for "help". The new version follows the current format
used in applications - a blue circle with a white question mark. The Contributors page was also updated. |
|
I made some changes to the tables used in the website. These changes were designed to
circumvent bugs in the FireFox browser.
- It has trouble rendering a page with a FORM tag. In particular, the metrics for cell
padding and margins do not work correctly.
- Also, the border-collapse feature of cascading style sheets yields rather strange
results. The website now gets same visual effects without using that feature.
With the exception of these two problems, Firefox is an excellent browser. |
|
This is a minor release. Most of the modifications are to the user interface.
- 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.
You can get a copy from the Builder Download page. |
|
Damon passed away in Sacramento on September 9, 2005 at the age of 25
years. He was a lifelong resident of Sacramento, graduating from Rio Americano High
School, attending California State University, Sacramento and working at Walgreen's.
"He will always be loved and will be missed by everyone he touched." In a field
I am the absence
of field.
This is
always the case.
Wherever I am
I am what is missing.
When I walk
I part the air
and always
the air moves in
to fill the spaces
where my body's been.
We all have reasons
for moving.
I move
to keep things whole.
- Mark Strand |
 |
|
|
This file contains only the core files for the Windows version of the GOLD Parser
Builder. Unlike the normal download, this one does not contain an installation script.
However,the software should work without it. |
|
I fixed a few typos that I had made on the website. Special thanks to Chris Weed for
bringing them to my attention. |
I forgot to change the 'ANSI' references to 'Windows-1252' in the Meta-language
Documentation.
In version 3.0 of the Builder, the "character mapping" parameter was modified
to accept either 'Unicode' or 'Windows-1252'. Beforehand, the developer would specify
'ANSI' to map the characters from the Windows-1252 character set. This change was designed
to better hold to standard naming conventions. |
|
- 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.
- 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.
- Changed the 'ANSI' parameter setting to 'Windows-1252'. Developers can still specify
'ANSI' for the Character Mapping parameter. Both are treated the same.
- The application's icon was changed. The new version is more 'golden' and contains a
faint outline of Tower Bridge.
- Fixed a character constant bug. Terminal definitions were not properly handling
character constants. Thanks to Dan Ullfig for reporting this bug.
You can get a copy from the Builder Download page. |
The Engine Pseudo-code had a number of spelling errors and other various typos. I
updated the webpages as well as the downloadable documentation. |
The internal stream class was optimized - making much faster than before. The Engine
was essentially recompiled with this new class.
You can get a copy from the Visual Basic 6 Engine Download page. |
|
I just uploaded a BETA for version 2.7 of the Builder.
There are still some changes that I plan to make, but, for the most part, this version
is complete. Given that the user interface was completely revamped, I might renumber this
release as "Version 3.0".
For the link to the Beta, please visit the Discussion Group at: groups.yahoo.com/group/GOLDParser |
|
The GOLD Engine Pseudo code was modified to include an procedure that I forgot to
include - Initialize. This procedure prepares the system for parsing. The downloadable
documentation was also updated.
For more information, visit the Documentation page. |
|
The Stream Class was replaced by a "Text Stream" class - which is far simpler
than the previous version. The Visual Basic project was also slightly "cleaned
up".
You can get a copy from the Visual Basic 6 Engine Download page. |
|
The new version of the project fixes a number of bugs and enhances many of the
debugging tools.
You can get a copy from the Visual Basic 6 Engine Download page. |
The GOLD Engine can be implemented in any general-purpose programming language.
However, sometimes understanding the algorithms can be difficult. The Pseudo-Code
documentation is designed to be easy to understand and make it far easier to write new
implementations of the Engine.
In addition, the documentation for Compiled Grammar Table files and Program Templates
was moved from the Builder Documentation to a new "Developer Documentation"
section. This information was also compiled into a Windows CHM file.
You can download a copy from the Documentation page. |
|
Vladimir Morozov created a new implementation of his C# Engine. The key changes in this
version are:
- DFA transition vector uses SortedObjectMap instead of HashTable.
- Calls to Grammar properties from Parser replaced with calls to internal fields.
- Merged CharReader, TokenReader and Parser to one class to provide faster access to
source string.
- Eliminated creation of small strings for Tokens while parsing.
- Use SyntaxNode class instead of Reduction and Token classes.
- Engine keeps original comment lines. In this version Hashtable for comments replaced
with SortedObjectMap.
- Reduced number of source files.
You can download a copy on the C# Engine Download page. |
Allen Benton created a sample project that implements an interpreter for the
"Simple" programming language. This project contains a number of debugger
abilities which include:
- Step Trace highlights the currently active step and prints debug messages
- Single Step highlights the currently active step and pauses after each step execution
- Step Delay defines the wait time between steps
You can get a copy from the Visual Basic 6 Engine Download page. |
June 14, 2005 |
A couple of the images on this page (and a few others), had a local harddrive link
rather than a relative website link. As a result, some images would not load correctly.
Special thanks to Eike Anderson for his help. |
June 11, 2005 |
The new version of the Builder mostly contains enhancements to the GUI and tools. The
changes include the following:
- 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 !* .. *!.
- 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.
You can get a copy from the Builder Download page. |
The new version of the Builder contains a number of changes to the GUI interface. As a
result, the screenshots used in the documentation were updated. Botht he online and
downloabable versions of the documentation were updated. |
I made some more, rather trival, changes to the website. The only noteworthy change is
that the picture, used in the top-right corner of the page header, was updated. |
|
The background gradient was replaced with new version using slightly different colors.
The graphic that is displayed in the top-right corner was also replaced. The old graphic
displayed a screenshot from the GOLD Builder. However, I did not want to give special
treatment to any part of this project. The new graphic contains part of the
"Simple" grammar that is used in some sample projects. |
|
I tweaked the content a number of the pages. The horizontal lines (HR tags) were
modified to use cascading style sheets. Each horizontal line had the color and width
manually set - which is not a good practice for website maintenance.
Also, the small icon used to in the menu to denote Contributors
was modified. Before, the icon resembled two human figures. Now, the icon is trophy -
which better shows the appreciation that the Contributors deserve. |
|
A new version of Mathew Hawkin's popular
Java Engine is now available. It contains two code changes that were submitted by Rick
Blommers and Nat Ayewah.
Rick Blommers added some code to the Databaseloader class to handle the number of of
multiblocks in the CGT file. Nat Ayewah added some code to the LookAheadStream class to
handle an abnormality in the Java Virtual Machine. Sometimes, the carriage-return / line
feed sequence would be converted to a single char \n.
You can get a copy from the Java Engine page |
Over time, a number of developers and computer scientists have reported bugs in the
different Engines or the Builder application. Although their invaluable help is listed on
the Revision History page, they were not
listed on the Contributors Page. |
A new version of the grammar contains a number of changes:
- The "With" statement was added
- Identifiers are allowed to have a dot in front of them to be used inside of
"With" statement.
You can get a copy from the Grammar Download page |
|
There are a number of websites that were created by contributors for their projects.
Before, these pages were only linked from the Contributors
Page.
I also added a link to an excellent introductory article about GOLD written by Adrian Moore. |
The 3 subpages that are located in the Links &
Resources section were modified slightly. The programming language books were moved to
the Programming Languages page. The list of compiler books was moved to a page containing
links to other parsing systems. |
The small icons used to represent websites was modified to resemble (at least loosly) a
website. The old icon was a duplicate of the "page" icon used all over the site
(there are a bunch on the menu). |
|
Some additional webpages were updated with better content. These include the main index
page. |
|
This page contains a list of possible changes to the GOLD Parsing System. I also linked
the page from the FAQ.
Future Work Page
|
A number of the pages were "tweaked" slightly. |
|
Robert van Loenhout just
released a new version of his Calitha Engine. The new version contains a number of changes
to enhance performance.
You can download a copy from the .NET Engine Download page |
|
- 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.
You can get a copy from the Builder Download page. |
|
- 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 were 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.
You can get a copy from the Builder Download page. |
Eylem Ugurel has updated the LUDO (Language for
Unified Design and Operation) Engine. The new version contains the following changes:
- '<S> ::= import <E>' rule is replaced by '<S> ::= import STRING'
- The 'HEX' literal definition is changed from '0x{HexChar}+' to '0(x|X){HexChar}+'
- The code behind the 'import' keyword is written from scratch so that the 'SImport'
statement-class is removed; instead a Preprocessor object takes place which performs
textual insertions for imported files.
- The 'Core.lib' and the 'Parser.lib' are given several bug-fixes and speed optimizations.
- The very first LUDO console window after the system startup was showing unfocused or
minimized. This issue is fixed.
- The code in 'Ludo.cpp' is splited into several sub files categorized by subject.
- Several new built-in functions added such as: ReadAll, WriteAll, Len, Chr, Asc, Hex,
Cls, DoFileDialog, and DoMessageBox.
- The documentation is updated with the language reference.
You can download a copy from the C++ Engine page |
The documentation for Program Templates had an incorrect variable name for the LALR
state table tag. The %Value% variable contains the value associated with either a shift or
reduce action. The documentation was displaying %Target%. Special thanks to Rex
Songten for finding this error. |
|
- 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.
You can get a copy from the Builder Download page. |
|
- 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.
- 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.
You can get a copy from the Builder Download page. |
A bug was found in the ActiveX DLL Engine that prevented the LineNumber property from
correctly incremented for UNIX encoded files. |
The minus sign was removed from the IntLiteral and RealLiteral definitions. These can
cause some parse errors when expressions like "2-2" are read. In this case
it would have been interpreted as "2" and "-2" rather than
"2", "-" and "2".
You can download a copy from the Grammar Download Page. |
The COBOL grammar was modified slightly. Basically, the <Sentences> and
<Statements> lists are now left-to-right recursive - which is, most likely, what the
developer expects.
You can download a copy from the Grammar Download Page. |
The grammar used to define grammars using the GOLD Meta-Language was updated. The new
version is used by the GOLD Builder versions 2.6 and later. |
|
The new version of the Builder contains a large number of improvements. These include
both the efficiency of the system, the GUI interface and the GOLD Meta-Language itself.
The new version contains (but is not limited to) the following changes:
- 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.
- 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.
- 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.
- The Grammar Editor window and the Test Window now display the current column number.
- 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.
You can get a copy from the Builder Download page. |
Adrian Moore made some modifications to the
Visual Basic .NET grammar. These include:
- Add support for Implements in Class
- Add support for AddressOf keyword
- No longer fails if variable starts with _
You can download a copy from the Grammar Download Page. |
|
The new version includes the following changes:
- 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.
- 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 '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.
You can get a copy from the Builder Download page. |
|
"P.H." submitted a modified version Justin Holmes' C Engine.
Like the original it should compile with any ANSI C compiler, however this version has
only been compiled and tested using Microsoft VC++ 6. Building the parse tree will use
more memory and CPU cycles than the original project, especially if large files are
parsed. Where memory is limited, this project could be easily modified to output the parse
tree as a binary file.
You can get a copy from the ANSI C Engine page. |
Eylem Ugurel has updated the LUDO (Language for
Unified Design and Operation) Engine. The new version contains the following changes:
- The 'pack' and 'unpack' keywords are introduced. By means of packing, we are now able to
group a set of variables inside a packed variable where we can access items using the '.'
ID rule.
- The issue is fixed so we no more should initialize a variable before passing its
reference ('@' ID) to a function.
You can download a copy from the C++ Engine page |
I updated a few quotes on the Computer Science Quotes page. |
I'm currently working on version 2.5.4 of the Builder. It will contain a more versatile
version of the "Import a YACC Grammar" utility and a few tweaks to the
"Export to a Webpage" utility. |
|
The new version contains a number of bug fixes:
- 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.
You can get a copy from the Builder Download page. |
I expanded this section to include a number of new pages.
- Computer Science Quotes Page - this page contains a
number of interesting quotes related to computer science.
- Books - This section was originally part of the
main Links & Resources page. I will add more books over time.
- Programming Language Homepages - This page was
also originally part of the main Links and Resources page.
Some of the sections of the Links & Resources page might eventually be put on
separate pages. |
|
Robert van Loenhout created
the Calitha Engine using the C# Programming Language. The new version has the following
changes:
- Included templates and a "Text Calculator" example project.
- Ability to abort parse during token read and reduction events.
- Added a parse mode to free stored tokens to conserve memory.
- Added the ability to reorder files in namespaces.
- TokenReadEvent is optional again.
You can download a copy from the .NET Engine Download page |
Eylem Ugurel has updated the LUDO (Language for
Unified Design and Operation) Engine. The new version contains the following changes:
- The 'import' statement is introduced. You can now include other LUDO script files into
your current script using the 'import' keyword.
- The HEX literal is added. Its format is just like in C syntax (e.g. 0xff, 0x12EE, etc.)
- In the grammar file, the DOUBLE literal is replaced with REAL; therefore 'FormatDbl'
function in the API is changed to FormatReal.
- A bunch of new functions introduced; see the documentation.
- Command line grammar is updated: STRING2 literal is introduced to replace (")
character with (') to fix shell related stuff.
- Important fix in OpenRegistryKey function.
You can download a copy from the C++ Engine Download page |
The page is more descriptive and should better help new users understand the system. |
|
The Engine Download page was broken into several pages based on
the programming language and programming platform. I hope everyone enjoys this change -
since it took a long, long time to complete. |
Links to several popular and famous compiler books were added. |
|
I made a number of miscellaneous changes to the website. |
|
Two properties were added to the Token Object - LineNumber and ColumnNumber. |
|
A couple of the changes were made to the page. Each of the grammars taken from compiler
books were given a special section and pictures of each book were added. These include the
'Tiny' grammar from Kenneth C. Louden's Compiler
Construction: Principles and Practice book. |
|
Eylem Ugurel has updated the LUDO (Language for
Unified Design and Operation) Engine. The functions 'FormatDbl' and 'Separate' were
introduced |
|
Often, C block comments cannot be nested. The grammar was modified to contain a
definition of the Whitespace terminal that will create non-nested block comments. This
definition is commented-out and the regular Comment Start and Comment End are still used -
since most dialects of C allow nested comments. |
|
The new version of the Builder was released to resolve a bug that some users were
experiencing when attempting to use the Create Skeleton Program utility. In the process of
researching the bug, a secondary bug was found and resolved.
- 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 command line version of the Builder was also updated. |
A true type font has nothing to do with parsing
technology or the study of programming languages. I, however, am very fond of the
Commodore 64.
The new ZIP file contains the original symbol font as well as 3 new variants: Commodore
64 Pixeled, Commodore 64 Angled and Commodore 64 Rounded. You can download it by clicking
the graphic above or visiting the Grammar Download
page. |
|
Robert van Loenhout created
the Calitha Engine using the C# Programming Language. The new version has the following
improvements: the ability to set user object in reductions, performance
improvement when using large character sets, font selection in test project, making user
selections persistent between application sessions, and file source browsing and UTF-16
Little Endian BOM detection. |
Justin Holmes developed a version of the GOLD
Parser Engine using ANSI C. The new version is not platform dependent, and has been tested
to compile cleanly on WindowsTM and Linux. The Parse() method returns the
actual rule reduced rather than a result code. -1 is returned for a parse error. The
download also includes a well-commented example program that prints the tokens and rules
as it matches them. |
Eylem Ugurel has created a new version of the
LUDO (Language for Unified Design and Operation) Engine in C++. The ZIP file contains both
the Visual C++ source code and the source code for his LUDO Scripting Language. |
|
This is a very minor update to the Builder. Most of the changes regard the Export to
Webpage utility.
- 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.
You can get a copy from the Builder Download page. |
The screenshot page for the 'Export to Webpage' utility now links to a sample webpage
for the LISP grammar. |