|
- Fixed an error in the character mapping table The Greek character Mu was entered into
the case mapping table. The system was adding an equivalent character located in the Greek
section of Unicode. The error does not adversely affect any compiled grammar.
- Fixed a bug in XML encoding. When the system created a skeleton program, it was not
converting < and > to the < and > codes.
You can get a copy from the Builder Download page. |
|
Dave Dolan submitted a grammar of the Javascript Object Notation file format. JSON is a
text file format that was created for data-interchange between different programming
languages. The conventions of the format is based on the C programming language and, as a
result, should be familiar to programmers of C++, Java, and C#.
You can download a copy from the Grammar Download page |
Dave Dolan submitted a modified version of Calitha Engine that generates a tiny factory
class "MyParserFactory". It was designed not to touch the other signatures in
the MyParser class. |
The webpage template was modified slightly. The changes are not visually obvious, but
will allow the website to be more easily modified in the future. |
|
Ege Madra created a version of the Engine using the Intel x86 Assembly Language. The
result is a super-fast version of the Engine can be used any language that supports DLLs.
The download contains the source code, a compiled DLL, and a program template.
You can download a copy from the Assembly Download page |
|
- Fixed a bug in the Create a Skeleton Program utility. The bug affected all program
template variables that contained a period. In these cases, the system would not insert
any text.
You can get a copy from the Builder Download page. |
|
Robert van Loenhout just
released a new version of his Calitha Engine. The new version contains a number of changes
to enhance performance. These include:
- Improved error recovery, including the ability to insert tokens.
- New event for line and block comments.
- Extract comment with or without comment tokens.
You can download a copy from the C# Engine Download page |
- The installation script was updated. The previous
version of the installation contained a bug that caused a "files out of date"
error message to be displayed. This was a bug located in the package and deployment
software I was using. The software was patched and the installation should be
problem-free.
- Files can now be automatically opened from the Windows shell. The .grm and .cgt file
extensions are now automatically associated with the GOLD Builder application.
You can get a copy from the Builder Download page. |
|
Vladimir Morozov submitted a grammar 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.
Vladimir Morozov worked with Nathan Baulch on a number of updates which take into
account some real-world scenarios. These include the use keywords as identifiers, the use
dot in front of identifiers in WITH statements (grammar allows to use them anywhere),
missed statements, parameters for calling SUB, and much more.
You can get a copy from the Grammar Download page. |
|
The page was updated with possible future changes that would allow multiple block
comments. The page was also now contains "Compatibility" charts. |
|
Rob van den Brink updated his engine for the
Object Pascal Programming Language. His implementation uses a template to create a
full-functioning program. This does not require you to load a Compiled Grammar Table file.
You can get a copy from the Pascal Download page. |
Rob van den Brink, who authored the Object Pascal Engine,
updated the grammar for the Delphi 7 Programming Language. The update contains a myriad of
refinements.
You can get a copy from the Grammar Download page. |
|
This release fixes a few very minor bugs.
- The symbol's name was added to the 'Unused Terminal' warning title. "If the log is
exported to a text file, this change makes the items actually meaningful.
- The window's dimensions are only saved if the window is normalized. Beforehand, the
window dimensions were saved even if the window was maximized. This was problematic the
next time the application was loaded.
- Fixed the menu enabled/disable bug. Some of the items in the menu were not disabled when
the system was busy.
You can get a copy from the Builder Download page. |
The new version of the grammar fixes a number of flaws in the first uploaded. In
particular, this version is able to handle embedded statements.
You can get a copy from the Grammar Download page. |
|
This release fixes a bug and adds a number of improvements. The changes include
the following:
- The import grammar utility now supports Bison. The new version can import grammars
written in either YACC or Bison. In addition, the system displays the import progress on
screen.
- Added a 'prior definition' warning for rules. If a rule is defined in two different
locations, the system will now log a warning. Often, for large grammars, it is easy to
accidentally create rules with the same name.
- Fixed a bug in some of the pre-defined character sets. The bug affected the {ANSI
Printable}, {All Valid}, and {Control Codes} sets. Special thanks to Bill White for
reporting the bug.
You can get a copy from the Builder Download page. |
|
The COBOL programming language is one of the oldest still in use today. It was
originally designed by the United States Department of defense under the supervision
of the Conference on Data Systems Languages (CODASYL) Committee. Most of the groundwork
and design of COBOL was done by Admiral Grace Hopper of the United States Navy.
The COBOL 85 grammar is complex - containing, over 350 reserved words, 950 rules which
results in 1,681 LALR states.
You can get a copy from the Grammar Download page. |
|
C# was primarily the work of computer scientist Anders Hejlsberg who has worked on a
wide range of programming languages. These include, but are not limited to, Visual J++,
Borland Delphi and Turbo Pascal. His previous works and influences from Java and C++ can
be seen in C#.
The grammar was designed, in part, using the official language specification that can
be found on the Microsoft website. As a result, considerable time was required to write a
LALR(1) compliant version.
You can get a copy from the Grammar Download page. |
|
This release fixes a few minor bugs and adds a number of improvements. The changes
include the following:
- The system now remembers the window size. Each time the application is closed, the
current size of the window is now saved into the Registry.
- You can now specify if the printer font will be bold. Before, only the font name and
size could be specified.
- Rob van den Brink's Pascal engine template is now included. The template creates a
full-functioning program that does not require you to load a Compiled Grammar Table
file."
- Updated the Help Icon. The new version is a basic blue rounded-box. It is far simpler -
and far more aesthetically appealing - than the last version.
- Fixed an editor bug when a CGT was loaded. I was not disabling all the edit features
when a CGT was loaded. This was a minor bug.
- Some buttons were not disabled when a CGT was loaded. When a CGT is loaded, the 'save'
button needed to be disabled.
- A rare 'printer selection' bug was fixed. If the name of the printer is over 32
characters, the system was not able to properly select it.
- Fixed a printing word-wrap bug. In very rare situations, the system would not word-wrap
a line before the text entered the right margin.
You can get a copy from the Builder Download page. |
Rob van den Brink, who authored the Object Pascal Engine,
created the grammar for the Delphi 7 Programming Language. Delphi was developed from the
concepts and syntax of Pascal and, its successor, Object Pascal.
You can get a copy from the Grammar Download page. |
|
This release fixes a few minor bugs and adds a number of improvements. The changes
include the following:
- The Options Window was improved. You can now specify the font used in the Test Window
and the various tables.
- Program templates were improved.
- The startup size of the main window was changed. When the application first loaded, the
size of the main window was a tad small.
- The startup (Modified) flag was fixed. When the Builder first loads, it puts a short
comment description in the grammar window. The system was setting the 'Modified' flag to
true.
- Fixed a bug when parsing large test files. When more than 16k reductions were performed,
the system would crash. Special thanks to Bob Moore for his help.
You can get a copy from the Builder Download page. |
Rob van den Brink created a new engine for the Object Pascal Programming Language. The
template creates a full-functioning program that does not require you to load a Compiled
Grammar Table file. The download contains a program template as well as several examples.
From the template file:
This template generates an inline parser engine, in (object) Pascal code, with full
support of error productions (to recover from errors). The lexer and parser are fully
embedded in the rest of your code, so that other modules are not required. The resulting
code can be compiled directly into a stand-alone program with a good object Pascal
compiler (like Virtual Pascal or Delphi).
You can get a copy from the Pascal Download page. |
|
Ege Madra created a version of the Engine that was implemented using the Intel x86
Assembly Language. The result is a super-fast version of the Engine can be used any
language that supports DLLs. The download contains the source code, a compiled DLL,
and a program template.
From the ReadMe file:
GOLDx86Engine is written with x86 assembly language to ensure it has decent
performance for serious compilers / interpreters.Another important aspect of it is that it
is language neutral, that is, the functions contained in the DLL can be called from any
programming language that is able to call windows functions such as C/C++, Visual Basic,
Delphi etc. The package contains 3 forms of the software:
- DLL version. As mentioned before, can be used by any language that can call a 32 bit
Windows dll. Import library, and .def and .exp files are provided.
- Lib version. C/C++ and Assembler programmers can embed it to their applications to
aviod distributing an additional dll. An include file for assembly programmers also
included. C/C++ programmers should create their own header files.
- Assembler source code. You can modify or use it directly if you have MASM32 package
to assemble it.
You can get a copy from the Assembly Download page. |
I made some changes to the Engine pages to better organize them. Before, the pages were
roughly organized into their development paradigm, but there are case where languages
overlap. A good example is the dynamic linked library.
Now, the pages are organized by the language used to implement the Engine. I created a
new page that links to the different engines depending on their avaiable plug-in modules. |
|
Sorry for the lack of updates. I will catch up soon. |
|
The menus located on the left side of each page were changed. The new format is
designed to be better to navigate and to able to handle any additional pages.
To accomplish this, I organized two of the menus into "About GOLD" and
"Articles" - both of which have separate subfolders on the website. I added a
"More..." option, will links to the index of each subfolder. As new pages are
added about GOLD and about parsing theory, they can be put into each section without
requiring the website to be redesigned again. |
The new section is still under construction, but will eventually have tutorials and
other information designed to help new users understand the system. |
The new information is more descriptive and accurate. |
|
The following is the key features of version 2.0 (copied and pasted from his website).
- Parser is designed to be a "pull" parser, where client programs pulls data out
of parser.
- Parser keeps only minimum information required for parsing. So, it can be used for
parsing large files without allocating a lot of memory.
- Parser uses TextReader as a text input. So it can use StringReader or StreamReader
classes.
- Parser implements "lazy" string allocation for tokens. So, if token text is
not important then no extra string allocation will be done.
- There is a special Grammar class which can be initialized from CGT file once and reused
for multiple parsing operations.
- All Grammar properties and tables are immutable.
- Parser uses special transition vectors for DFA and LALR processing to make them faster.
It is especially optimized for a case where ASCII charset is used. It uses char value as
an index in array.
- Parser object has to be created for each parsing string or stream.
- Parser has special parse messages to collect comments.
- Callback function can be supplied to collect source lines.
You can get a copy from the C# Engine Download page. |
This release fixes a few minor bugs.
- The 'Help' toolbar icon was updated. The new version is slightly different. I am finally
satisfied with how it looks.
- The Export Parse Tree feature was fixed. The Export Parse Tree feature can be used to
export a tree, created in the Test Window, to an ASCII file. The tree is drawn using ASCII
characters. I had failed to notice the function displayed the header in each recursive
call - which was a careless mistake.
- Added some 'Tool Tips' to buttons.
You can get a copy from the Builder Download page. |