www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Goldie v0.3 Release (Parser Library and Tools)

reply "Nick Sabalausky" <a a.a> writes:
I've just released a new Goldie version, v0.3, with many improvements and 
enhancements.

Goldie (pronounced "goal D") is a GOLD Engine for D1/Tango (Although it will 
change to D2 in a future release). It gives D developers the ability to 
easily load, lex and parse a text/source file according to any grammar 
defined using the excellent GOLD Parser Builder tool. Alternatively, Goldie 
can be used to merely load a GOLD .cgt file ("Compiled Grammar Table") if 
you would like to create your own GOLD lexer/parser.

Goldie is fully-usable and has been tested on both Windows and Linux (it 
should work on OSX and FreeBSD as well, but has not been tested), although 
the API is still subject to change. Goldie is licensed under The zlib/libpng 
License.

Highlights of this version:

- New Tool: StaticLang: Creates new "static-style" languages for enhanced 
compile-time error checking. A preview of this was seen in Bill Baxter's Nov 
2009 NWCPP D presentation ( 
http://www.nwcpp.org/old/Meetings/2009/11.html ).

- Languages can be embedded directly into your app using the StaticLang tool 
(don't have to load a CGT file at run-time, although you still can) .

- New Tool: JsonViewer: Not officially part of Goldie, but an enhanced 
version of JsonViewer is included that adds a special Parse Tree Mode for 
inspecting the relationship between a source and a tree representing the 
source (such as the parse tree).

- New Tool: GenDocs: Simple HTML preprocessor intended for generating 
documentation.

- Complete documentation has been created.

- Major improvements to API for dealing with parsing errors.

- Misc changes/improvements to API.

- Greatly improved handling of Unicode.

Links:

Goldie Homepage:
http://www.dsource.org/projects/goldie

Complete Documentation (including Requirements, installation instructions, 
API overview, API reference, sample apps, tool documentation, and more):
http://www.semitwist.com/goldiedocs/current/Docs/

Pre-packaged downloads:
http://www.dsource.org/projects/goldie/browser/downloads

Requirements:
http://www.semitwist.com/goldiedocs/current/Docs/Requires/

Download and Installation Instructions:
http://www.semitwist.com/goldiedocs/current/Docs/Install/

GOLD Parser Builder:
http://www.devincook.com/goldparser/
Jul 24 2010
next sibling parent reply Trass3r <un known.com> writes:
Nice work!
I'm curious, how does it handle the case of incremental development, i.e.  
gradually changing and enhancing the grammar?
Jul 25 2010
parent "Nick Sabalausky" <a a.a> writes:
"Trass3r" <un known.com> wrote in message 
news:op.vgejl0zl3ncmek enigma.fem.tu-ilmenau.de...
 Nice work!
 I'm curious, how does it handle the case of incremental development, i.e. 
 gradually changing and enhancing the grammar?

The workflow for that is currently like this: 1. Update the ".grm" file (the actual formal grammar). 2. Use GOLD Parser Builder to compile the ".grm" to a ."cgt" (Compiled Grammar Table). I plan to have Goldie be able to do this step itself (via the command-line) in a future version. 3. If you're using "static-style" (see: http://www.semitwist.com/goldiedocs/v0.3/Docs/APIOver/StatVsDyn/ ), then re-run the "StaticLang" tool on the ".cgt" to re-generate the ".d" files. This step isn't needed if you're using "dynamic-style" and loading the ".cgt" and run-time. 4. Update your application code (see the sample app sources: http://www.dsource.org/projects/goldie/browser/tags/v0.3/src/samples ). If you're using "static-style", you will get compile-time errors if your code doesn't match the new grammar. (I you're using "dynamic-style", you'll get bugs. Naturally, static-style is recommended in most cases.) 5. Recompile your program. Also, I've been giving some thought to the idea of automatically generating a function from the grammar that can just simply be filled in, and maybe even do some Visual Studio-style trickery to non-destructively update that function even when you've already filled parts in. We'll see. Any suggestions, of course, would be welcome. One thing I would prefer to avoid though, is going the route of embedding D code directly into the grammar, because that would eliminate what I see as one of the benefits of the GOLD system, which is that grammars are completely independent of implementation/host language. But maybe it could be smuggled in through the comments or something. Or maybe the ".grm" grammar file could even be generated from the D application code. I'll have to think about all of that. If anyone else has any thoughts on any of that, let me know.
Jul 25 2010
prev sibling next sibling parent reply Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
Sweet!

I've never heard of GOLD before (I must live in a cave or something..). Thanks
for the link to that Bill Baxter presentation btw.

Maybe you should to get your engine featured on the GOLD website 
http://www.devincook.com/goldparser/engine/d/index.htm ?

Nick Sabalausky Wrote:

 I've just released a new Goldie version, v0.3, with many improvements and 
 enhancements.
 
 Goldie (pronounced "goal D") is a GOLD Engine for D1/Tango (Although it will 
 change to D2 in a future release). It gives D developers the ability to 
 easily load, lex and parse a text/source file according to any grammar 
 defined using the excellent GOLD Parser Builder tool. Alternatively, Goldie 
 can be used to merely load a GOLD .cgt file ("Compiled Grammar Table") if 
 you would like to create your own GOLD lexer/parser.
 
 Goldie is fully-usable and has been tested on both Windows and Linux (it 
 should work on OSX and FreeBSD as well, but has not been tested), although 
 the API is still subject to change. Goldie is licensed under The zlib/libpng 
 License.
 
 Highlights of this version:
 
 - New Tool: StaticLang: Creates new "static-style" languages for enhanced 
 compile-time error checking. A preview of this was seen in Bill Baxter's Nov 
 2009 NWCPP D presentation ( 
 http://www.nwcpp.org/old/Meetings/2009/11.html ).
 
 - Languages can be embedded directly into your app using the StaticLang tool 
 (don't have to load a CGT file at run-time, although you still can) .
 
 - New Tool: JsonViewer: Not officially part of Goldie, but an enhanced 
 version of JsonViewer is included that adds a special Parse Tree Mode for 
 inspecting the relationship between a source and a tree representing the 
 source (such as the parse tree).
 
 - New Tool: GenDocs: Simple HTML preprocessor intended for generating 
 documentation.
 
 - Complete documentation has been created.
 
 - Major improvements to API for dealing with parsing errors.
 
 - Misc changes/improvements to API.
 
 - Greatly improved handling of Unicode.
 
 Links:
 
 Goldie Homepage:
 http://www.dsource.org/projects/goldie
 
 Complete Documentation (including Requirements, installation instructions, 
 API overview, API reference, sample apps, tool documentation, and more):
 http://www.semitwist.com/goldiedocs/current/Docs/
 
 Pre-packaged downloads:
 http://www.dsource.org/projects/goldie/browser/downloads
 
 Requirements:
 http://www.semitwist.com/goldiedocs/current/Docs/Requires/
 
 Download and Installation Instructions:
 http://www.semitwist.com/goldiedocs/current/Docs/Install/
 
 GOLD Parser Builder:
 http://www.devincook.com/goldparser/
 
 

Jul 25 2010
parent "Nick Sabalausky" <a a.a> writes:
"Andrej Mitrovic" <andrej.mitrovich gmail.com> wrote in message 
news:i2hgn8$k46$1 digitalmars.com...
 Sweet!

 I've never heard of GOLD before (I must live in a cave or something..).

You're in good company. It doesn't seem to be quite as well known as, say, ANTLR.
 Thanks for the link to that Bill Baxter presentation btw.

 Maybe you should to get your engine featured on the GOLD website 
 http://www.devincook.com/goldparser/engine/d/index.htm ?

Absolutely. In fact, I've already asked him to add it there. He tends to be busy though, so it may not happen right away.
Jul 25 2010
prev sibling parent "Nick Sabalausky" <a a.a> writes:
One thing I forgot to point out, that may be obvious, but is probably 
worth...umm...pointing out:

If you're on a platform that has binaries already built (currently Windows 
and Linux x86), then even if you're on D2 instead of D1, or don't even use D 
at all, then all the tools are still perfectly usable (except StaticLang, 
naturally), just not the library.
Jul 28 2010