|
The new version of the GOLD Parser Builder contains the following changes:
- 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.
- Fixed the double-paste bug. When text was pasted into the Grammar Editor, it would be
pasted twice.
You can get a copy from the Builder Download page. |
The "createskelprog" program was modified to support the new Program Template
features. The remainder of the programs were also recompiled - just in case I fixed a bug
and forgot about it. The version of each program is now 2.5. |
The online documentation was updated to reflect to new features that were added to
Program Templates. In addition, the overall look and feel of the documentation was
improved. |
|
The new version of his engine is now called "LUDO" (Language for Unified
Design and Operation). The download includes the source code for his LUDO Scripting
Language. |
This new version of the "Calitha" Engine now supports error recovery. If a
parse error occurs, a new token can be pushed onto the stack at runtime. |
|
The look of the documentation was updated and few flaws were fixed. In particular, the
documentation for the CGT file format contained a number of confusing errors.
Special thanks to Jens Olesen for finding the flaws. |
|
The new version of the GOLD Parser Builder contains a number of improvements to the GUI
and the overall performance of the system. The major changes are as follows:
- 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.
- 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.
- 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 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.
- Fixed LALR and DFA State Browser scrollbars. The scrollbar was acting strangely when it
was first clicked.
You can get a copy from the Builder Download page. |
The 'Changes by Version' caption in the menus was changed to 'Revision History' to
match the terminology used in the Builder application and the webpage itself. |
The online and downloadable documentation for the Builder was updated. The changes were
rather minor. |
Both of these grammars had very minor errors - mainly to do with the descriptions. |
The size of the HTML tables were in error. As a result, the page did not resize
correctly. |
|
I forgot to update the online documentation for the new version of the Command Line
Builder. I also updated the downloadable documentation. |
|
"Oberon-00 is a simple programming language proposed in [Wirth98] as a simple
example of a common language that can be used for hardware and software compilation. Such
language could be used for research purposes in the field of high-level synthesis (HLS)
and as a testbed for hardware-software codesign. Oberon-00 is derived as a
hardware-friendly subset of Oberon."
You can download a copy from the Grammar Download Page |
The Programming Languages table was broken into "Programming Languages" and
"Academic Programming Languages" tables. |
|
I have updated the arguments of the command line version of the Builder. The new
format:
goldbuilder [options] Grammar [CGT-file]
[Log-File] |
is easier to use than the last version. The "options" section contains a new
+export flag that will cause the system to export the tables to the log file. |
|
The command-line version of the Builder is essentially a collection of three Windows
applications that are designed to run without a user interface. When each program is
started from the command line, it executes in the background. The command-line, however,
continues immediately - regardless if the program has terminated.
This can be quite confusing (and annoying) for someone who starts the programs and
expects the command-line interface to wait. This was an oversight on my part.
I renamed each of the command-line programs and replaced the original name with a batch
file. When the batch file is started, it will execute the associated program with
the "start /wait" batch command. The system will properly wait for execution to
finish. |
|
As legend states, the Brainf#ck Programming Language (also called BF by those not
wanting to curse) was created by Urban Müller in 1993.
The language was designed, in part, so Müller could create the
smallest compiler ever. The first BF compiler was written for the Commodore
Amiga OS 2.0 and was only 240 bytes in size. The BF Programming Language only
consists of 8 different instructions, an array and a pointer. |
|
ALGOL is, by far, the most influential programming language developed to date. Although
is did not achieve mass use, a large number of syntactic and semantic principles and
concepts were developed and incorporated into the language. As a result, ALGOL is
considered the main reference language in computer science.
You can get a copy from the Grammar Download page. |
|
This is a simple utility program that will translate a grammar written using the YACC
Meta-Language to the GOLD Meta-Language.
The program will create the "hidden" rules that are implied with the %left
and %right YACC directives. The %prec directive, which is primarily used for unary
operators, is also supported. Currently, all other YACC directives such as embedded code,
%union, %type, etc... are parsed by this utility program, but are discarded.
You can get a copy from the Builder Download page. |
The grammar that was posted on October 4th has a few minor flaws. You can download a
copy from the Grammar Download Page |
I added a link on Links and Resources page to the
Textpad website. Textpad is an easy-to-use and quite versatile text editor. The
application supports syntax highlighting and Unicode, and has a huge number of editing
features. |
|
One of the oldest and most respected parsing engine generators available to
developers is YACC. Like "vi" "grep" and "awk", this
software is considered the de facto standard in the UNIX world. YACC, which is an
acronym for Yet Another Compiler-Compiler, was developed by Stephen C. Johnson at
AT&T. YACC can be used to create parsers using the C and C++ programming
languages.
You can download a copy from the Grammar Download Page |
|
- 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 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.
You can get a copy from the Builder Download page. |
I added a very simple explanation of Shift-Reduce and Reduce-Reduce conflicts. The
downloadable documentation was also updated. |
|
A new version fo the GOLD Parser Builder was just released. The new version contains a
number of new tools and performance improvements. The changes include the following:
- Major Update! The system will now automatically fix Shift-Reduce conflicts.
- Added a 'Tip of the Day' window.
- The grammar can now be exported to YACC.
- 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 mysterous Error 91 bug.
- 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.
You can get a copy from the Builder Download page. |
|
PDF995 is a free PDF converter which installs on your computer as a virtual
printer. As a result, creating PDFs is as easy as printing a document! |
Planet Source Code is an online database containing a massive amount of free source
code. The source is submitted by developers wishing feedback or wanting to help others in
the development community. |
|
I recently converted the document, called "Design and Developement of a Grammar
Oriented Parsing System", into the popular PDF format. The document is a total of 527
pages long About 100 pages of which contain a side-by-side comparison of LALR states
created by both YACC and GOLD for the ANSI C programming language.
You can get a copy on the Download page.
Special thanks to Masa Omae for converting the file to PDF. |
|
Mat Housell submitted a sample project using the Calitha Engine. When a grammar is
opened, the program does some syntax highlighting and creates a tree view. |
|
I have removed all the useless "_vti_cnf" directories from the server. I may
have, however, inadvertently broke something. If you find any pages that are not working
correctly, please e-mail me. |
|
On Augest 24th 2004, I finally submitted the final version of my Master's
Project Report to the College of
Engineering & Computer Science at
California State University, Sacramento.
The top of the project is - as you probably guessed - this parsing system. I will put a
PDF of the report on this website when I get a chance. |
I created a real simple utilty that can be used to upload websites to the Internet. I
am currently using an good-ole-fashioned FTP program to manually copy each file to the
server. Naturally, this can be a very long and tedious process.
The new program maintains a "sync" log of all files. It then selects those
files which have changed and FTP's them to the server. The best part is that I can avoid
those superfluous "_vti_cnf" directories! |
The pages about Deterministic Finite Automata, Backus-Naur Form, LALR Parsing and
Regular Expressions were updated with proper terminology. |
|
Vladimir Morozov created a new implementation of the Engine using both Marcus
Klimstra's C# Engine and Alexender's Rai Delphi Engine as templates. It has the following
features: the grammar properties and tables are immutable, the parser uses special
transition vectors for DFA and LALR processing to make them faster, the parser object has
to be created for each parsing string, the parser collects all comments in Hashtable with
source line number as an index, the engine uses a resource file for error messages to
support multiple languages.
You can download a copy on the Engine Download page. |
Adrian Moore modified Marcus Klimstra's Engine
so that the Compiled Grammar Table file can be an embedded resource in the assembly's
manifest. As a result, the Reduction, LookAheadReader, GrammarReader and GoldParser
objects were modified. He also submitted a sample project.
You can download a copy on the Engine Download page. |
The new version has a number of modifications and enhancements. These include: corrects
the camel/pascal case mistake in creation methods, includes strongly signed binaries,
source includes different general purpose test key for building StronglyNamedAssembly
solution, and supports fast multi-threaded creation of tokenizers and parsers.
You can download a copy on the Engine Download page. |
The folder hierarchy of the website was restructured so that information is better
organized. This new structure is better prepared for the eventual revamp of the Engine
Pages. For the most part, this will be invisible to website visitors. |
I forgot to give special thanks to Robert van Loenhout for his help. |
|
I added a few links from different implementations of the Engine to their respective
websites. |
The new table is hopefully easier to use and for more aesthetically appealing. I also
added a very simple version to the Builder Download page. |
The link that pointed to the Tutorial for the Java Engine was broken. The link now
points to a local copy of the file. |
Okay I admit, a True Type font has nothing to do
with either parsing or grammars. However, I am very fond of the Commodore 64.
I created the original font a long time ago and just recently cleaned it up and added a
number of new glyphs. I put a copy on the Grammar Download
page. |
|
Vladimir Morozov submitted a grammer for the
Visual Basic Scripting Language - VB Script. This is a version of Microsoft Visual Basic
that can be used in webpages or for scripting tasks in Windows. |
The Concept Page about the Unicode Character Set was updated with two examples of
extended ASCII. I added the character charts for both IBM-PC Extended ASCII and Mattel
Aquarius Extended ASCII.
Few people are familiar with the Mattel Aquarius,
and for good reason. It has the dubious honor of being known as the worst home
computer of all time. This system was completely out-matched by all other home computers
of 1984 - and even those older systems. It was only produced for 3 months and lead to the
financial ruin of Mattel Electronics. |
Work has started on version 2.4 of the GOLD Parser Builder. The new version will
contain a number of minor enhancements and hopefully better compatability with Japanese
and Korean versions of the Windows Operating System. |
|
The updated version is hopefully easier to navigate. |
Eike Anderson submitted the grammar for PL/0. PL/0 is a simple programming language
created by Niklaus Wirth in his 1976 book Algorithms + Data Structures = Programs.
Essentially, the grammar is a subset of Pascal and Modula-2 - both of which Niklaus Wirth
created. |
|
The updated version is hopefully easier to navigate. |
|
- 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.
You can get a copy from the Builder Download page. |
Jorgen Bodde released an implementation of the GOLD Engine for wxWidgets (http://www.wxwidgets.org) which is a cross platform
GUI toolkit. The source was ported from the Alexandre Rai engine (Delphi 5 version) to C++
and runs under Linux and Windows (MacOS and Solaris should also work).
You can download a copy on the Engine Download page. |
Robert van Loenhout updated his popular Calitha Engine and updated the online
documentation. The new version add the TrimReduction property that is found in the ActiveX
Engine. |
This grammar is based on a partial conversion of Sun Java 1.0-2.0 specification. You
can download a copy from the Grammar Download Page |
The Engine Download page was coming complex and confusing. As a result, each of the
different implementations of the GOLD Engine were organized into different tables. |
|
The Documentation was updated again. The syntax diagrams used in the Meta-Language
documentation were incorrect. |
|
The Documentation for the GOLD Meta-Language was updated to include a description and
example of Virtual Terminals. The downloadable version of the documentation was also
updated. |
|
A new version of the GOLD Parser Builder is now available. This version improves the
GUI and fixes a bug. The changes include the following:
- 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.
- 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.
You can get a copy from the Builder Download page. |
The same bug that affected the Windows version of the GOLD Parser Builder, also
affected the command-line version. All three of the command-line programs were updated and
some additional features were added. The Documentation was also updated.
You can get a copy from the Builder Download page. |
The New Archive was organized into "2003" and "2002" pages.
Naturally, I doubt anyone will ever read these, but it is important to keep a history. |
|
The GOLD Parser Builder normally opens the online documentation when it is selected
from the Help menu. Since the documentation changes from time to time, this makes sure
that the latest version is always displayed.
However, there are cases where the developer may want to look at the documentation
without connecting to the Internet. This file will solve this problem. |
Cascading Style Sheets was originally proposed in 1994 by Hakon Wium Lie during
"Mosaic and the Web" conference in Chicago.
Shortly afterwards, Hakon Wium Lie teamed up with Bert Bos who was developing a web
browser called "Argo". Together the format of the first Cascading Style Sheets
was developed and, with Thomas Reardon of Microsoft, was submitted to the W3C Committee in
late 1996.
You can download a copy from the Grammar Download Page |
|
Milosz A. Krajewski developed a pure implemention the GOLD Parser Engine using the
Python Programming Language. You can download a copy on the Engine Download page. |
This grammar is based on a partial conversion of Sun Java 1.0-2.0 specification. You
can download a copy from the Grammar Download Page |
This grammar defines a JavaScript like language with some C# like extensions. You can
download a copy from the Grammar Download Page |
The new bullet is a simple purple-ish document with a question mark. |
|
A new version of the GOLD Parser Builder is now available. This version greatly
improves performance, fixes a few bugs and adds a few minor features. The changes include
the following:
- 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.
- 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 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.
- 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.
- 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.
You can get a copy from the Builder Download page. |
This is a command line version of the Windows 32-bit application. The three major
features of the Builder Application: Compiled Grammar Table file generation, Skeleton
Program Creation and Grammar Testing, were implemented using separate executables.
You can get a copy from the Builder Download page. |
The new version of the ActiveX DLL has a number of performance and usage enhancements.
In particular, it is now able to read UTF-16 encoded text files. A new method,
CurrentColumn was also added. |
The look and feel of the documentation was updated for the Builder, Compiled Gramamr
Table files, Program Templates and the ActiveX Engine
Documentation for the command line version of the Builder was also added. |
The grammar used to parse a grammar written in the GOLD Meta-Language was updated. The
updated file contains better notation and terminology. |
The ANSI C grammar had a number of flaws. The new version successfully parses actual
source programs. |
|
I should be able to get back to work on creating version 2.2 of the GOLD Parser Builder
and responding to e-mails (I am very behind). I am almost complete with my Master's Thesis
on GOLD.
The next version of the Builder will contain "virtual" terminals as well as a
number of improvements. |
|
The LISP grammar was not correct - not even close to being correct. |
|
Justim Holmes has created a version of the GOLD
Parser Engine using pure ANSI C. The Parse() method returns the actual rule reduced rather
than a result code. -1 is returned for a parse error.He also included a program template
and example program.
You can download a copy on the Engine Download page. |
Vladimir Morozov fixed a few flaws in the
Visual Basic .NET grammar. 1. The definition for strings did not allow the double
double-quote override. 2. A real literal does not need to have a fraction if
followed by an exponent. 3. Escaped identifiers can contain a null string and 4. Rem works
the same as the apostrophe. |
This version of the BASIC Programming Language was implemented on the Commodore 64. I
wrote this grammar to amuse myself and to remember the fun I had on that 8-bit wonder. |
This grammar requires little explanation - being the dominant format used for websites.
Like XML, HTML is a descendant of SGML (Standardized General Markup Language). |
|
I finally made some design changes to the website - which were long overdue. Basically
the "template" was changed. I hope you like the new look, because it took me
forever to change all the pages. :) |
|
Dmitry Lamdan submitted a new version of his
popular Grammar Edit application. This application contextually highlights reserved words,
terminals, rules, etc... and even interactively allows the developer see which rules and
terminals have been defined and those which have not yet been.
You can download a copy on the Builder Download page. |
Robert van Loenhout updated
his GOLD Parser Engine so the parser can accept a Stream object instead of a FileStream.
In addition, he made some other changes to fix bugs and enhance performance. He also
submitted an updated version of his detailed documentation.
You can download a copy on the Engine Download page. |
Tom van Dijck found a bug in the grammar concerning variable initialization. The
grammar did not allow variable initialization for all variables. |
|
Visual Basic .NET is the latest version in the long evoluation of the BASIC programming
language. The Visual Basic .NET programming language is far more "clean"
and orthagonal than its predecessors. Although some of the old constructs exist, the
language is far easier to read and write.
You can download a copy on the Grammar Download page. |
The Visual Basic sample projects includes a rather old verison of the GOLD Parser
Engine - v1.1. The file were updated with the latest version. |
The source code that was on the site was for version 1.1 of the Engine. |
|
The new version of the GOLD Parser Builder contains two bug fixes and a few minor
enhancements. The changes are as follows:
- Added a browse button to the 'Create a Skeleton Program' window.
- The behavior of the Test Window was slightly changed.
- 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.
- Fixed a 'Set Constant' bug. The set constants {#xxxx) and {&xxxx} were not valid
when defining terminals.
- Fixed a bug when creating skeleton programs.
|
|
I added a link in the to WorldMaker's GOLDDotNet
Project. This website contains Max Battcher's
fast growing selection of excellent GOLD tools. These include his new EvParser, which is a
wrapper class, and GOLDDot software, which can be used with AT&T Dot to create
graphs of rules, and parse tables. |
On the main page, the text that read "A Free, Multi-Platform, Parser
Generator" was changed to "A Free, Multi-Language, Parser Generator." This
is a very simple update. |
|
A new version of the GOLD Parser Builder is now available. This version greatly
improves performance, fixes a few bugs and adds a few minor features. The changes include
the following:
- 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 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.
- 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.
- Updated the Log Window. When you click on a log item, the window will now display the
title and description.
You can get a copy from the Builder Download page. |
This grammar, submitted by Richard Scheider, is
for a graph language from AT&T known by the names Graphviz and Dot. |
|
Dmitry Lamdan submitted an excellent application designed to write grammars. The
application contextually highlights reserved words, terminals, rules, etc... and even
interactively allows the developer see which rules and terminals have been defined and
those which have not yet been.
You can download a copy on the Builder Download page. |
Robert van Loenhout
submitted a new version of the engine for the Microsoft .NET architecture. This version
was written in Microsoft C#®. He also supplied full
documentation for using the DLL. You can download a copy on the Engine Download page. |
The CHM file was updated to included the latest documentation such as Program
Templates. The style of the documentation was updated for better readibility. |