digitalmars.D.announce - Goldie v0.3 Release (Parser Library and Tools)
- Nick Sabalausky (43/43) Jul 24 2010 I've just released a new Goldie version, v0.3, with many improvements an...
- Trass3r (3/3) Jul 25 2010 Nice work!
- Nick Sabalausky (30/33) Jul 25 2010 The workflow for that is currently like this:
- Andrej Mitrovic (4/67) Jul 25 2010 Sweet!
- Nick Sabalausky (6/11) Jul 25 2010 You're in good company. It doesn't seem to be quite as well known as, sa...
- Nick Sabalausky (6/6) Jul 28 2010 One thing I forgot to point out, that may be obvious, but is probably
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
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
"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
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
"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
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