The Tower Bridge in Sacramento, California GOLD Parsing System
Frequently Asked Questions
Main
Latest News
Getting Started
Screen Shots
Download
Documentation
Contributors
Contact
About GOLD
How It Works
FAQ
Why Use GOLD?
Comparison
Revision History
Freeware License
More ...
Articles
What is a Parser?
Backus-Naur Form
DFA Lexer
LALR Parsing
Glossary
Links
More ...


The following is a collection of frequently asked questions about the GOLD Parsing System

 

1. How exactly does the GOLD Parsing System work?

There is documentation on the overall design and structure of the GOLD Parsing System on this website. Please click inline-arrow-r.gif (99 bytes)here to read it.

2. Is GOLD free? Is there a license agreement?

Yes, GOLD will always be free. It is hoped that this application will eventually become a common programming tool used by students, professors and professionals. This site contains a very simple inline-arrow-r.gif (99 bytes)freeware license agreement.

3. Is there going to be a UNIX or Linux version?

The GOLD Builder will be compiled for both the UNIX and Linux platforms, but this will be some time from now.

Developers writing compilers or interpreters for these platforms, can still compile the grammar on Windows machine and then use the created tables on a UNIX/Linux version of the Parser Engine. 

4. Are you going to release the Builder source code?

Eventually the source code will be released, but this will be some time from now.

The Builder is still, in part, in a stage of "development" - meaning that the system semantics are still being fine-tuned. For instance, in version 2.2 of the Builder, Virtual Terminals were added as an optional parameter. This functionality was designed to aid the creation of grammars that contained terminals that cannot be identified by a Deterministic Finite Automata. This parameter had a small effect on the nature of the GOLD Meta-Language - which is used to specify a grammar.

The result of releasing source too early would be the creation of a number of slightly incompatible versions of the Builder or the actual appearance of competing variants. In either way, the primary goal of the Builder would be compromised.

The Builder source will be released after the Meta-Language is formalized through a group such as ANSI,  ACM or IEEE.

5. Are you going to maintain the GOLD Builder?

Yes. I will continue to develop and release new versions of  the GOLD Builder. If, for any reason, I cannot continue to maintain the software, I will release the full source code.

6. How is GOLD different from YACC?

There is documentation on the differences between GOLD and YACC on this website. Please click here to read it.

7. How do I add the GOLD Engine DLL to my Visual Basic project?

The GOLD Engine DLL is added through the "References" section of the Project Menu. Please click here for more information.

8. What grammars are available?

There is a collection of sample grammars on the Grammar Download page. Grammar submissions are always welcome!

9. My grammar is getting a Shift-Reduce or Reduce-Reduce error. What does that mean?

When the system analyzes a grammar, it checks all the possible states that the parser can have. During this process, the system will find ambiguities in the grammar. The Shift-Reduce error is caused when two or more possible actions can happen when a token is read.

This error is often caused by recursive grammar definitions where the system cannot determine when one rule is complete and another is just started. The Builder documentation contains an example of the common if-then-else grammar problem and how to fit it.

10. How do I design a grammar for languages that use indentations for blocks rather than symbols?

Languages such as Python, do not use symbols to mark the start and end of a block of statements. Instead, the indentation of each statement is used to determine where a block begins and ends.

This type of information cannot be recognized by the Deterministic Finite Automata that is used by the tokenizer. Whether an "Indentation Increase" or "Identation Decrease" occurs depends on the content of whitespace. For instance, if a program currently has an indent of 10 spaces, the grammar must contain a set of rules for statements at this level. The same is true for all other levels of indentation - requiring an infinite number of rules to parse.

To solve this problem version 2.2 of the Builder added a feature called "Virtual Terminals". The developer can specify terminals that will be added to the symbol table but not added to the Deterministic Finite Automata. For more information please check the related documentation.

11. What future changes are going to be made to the system?

GOLD is an ever-evolving tool. Additional features will be added to the Builder and the grammar's Meta-Language over time. Any change that does take place, will always be backwards compatible.

I've created a page that contains all the possible changes that can be made to the GOLD Meta-Language. These include suggestions from developers and other people interested in parsing technology.

Future Work Page


If you have a question not listed above, please visit the Contact Page

or, visit the Yahoo Group forum at: groups.yahoo.com/group/GOLDParser