|Special Guest Lectures
|A cookbook approach to parsing and output generation with Spirit2
|Joel de Guzman, Boost Consulting
|Johnston Hall 218
May 11, 2007 - 11:00 am
Spirit2 will debut at the Boost conference. It will be a complete parsing and output generation system that attempts to cover the whole spectrum from lexing to output generation. Spirit2 uses an EBNF oriented syntax to describe a grammar (for parsing) and an output format (for generation) directly in C++. This allows the construction of programs able to parse input token sequences conforming to an input grammar and to generate output token sequences conforming to an output format. The target audience will be intermediate C++ programmers with basic background on parsing. We will cover a lot of ground through examples; lots of them. We will present them in a cookbook style approach. The workshop will give a thorough introduction to Spirit's subsystems, their features, how to use them, how to extend them for special needs. We will present real world examples from the simplest comma-separated-list parsing, to simple calculator examples, to the more complex scripting languages. We will cover semantic processing and backend generation to complete the picture. We will show how combining the various subsystems work for language transformations. We will have examples on generating code for a virtual machine, generation of HTML and XML, and building a dynamic GUI layout, to highlight a few. All these will be provided through step by step tutorials.
Joel de Guzman is the author of the Boost Spirit Parser Library, the Boost Fusion Library and the Phoenix Functional-C++ library. He is a highly experienced software architect and engineer with over 18 years of professional experience, with specialization and expertise in generic C++ cross platform libraries and frameworks. Joel is a consultant at Boost Consulting since 2002 and has provided support and development services focused on the Boost libraries. His interests include Parser Generators, Scripting language interpreters and compilers, Domain Specific Embedded Languages, 2D graphics and GUI frameworks.