Dec 21

I added a page for FAQ entries. This page will contain FAQ entries which will eventually be incorporated into the FAQ section of the documentation.

See the page here.

Dec 21

In the previous two installments of this article series (The Magical Power of Attributes in Spirit – Primitives and The Magical Power of Attributes in Spirit – Operators) we talked about the attribute handling in different constructs utilized to build parsers and generators with Spirit. We will continue this walkthrough while touching on the remaining parts: directives and non-terminals

See full article here.

Tagged with:
Dec 15

How about some trivia…

So you know BNF (Backus-Naur Form or originally Backus Normal Form) and EBNF (Extended Backus-Naur Form). But did you know Panini’s grammar? It defined Sanskrit using a variety of formal techniques including recursion, transformations, and metarules. That was around 500 B.C.!

See this link. And this.

Dec 14

Each operator implements its own set of attribute propagation rules. These rules define the synthesized attributes of Qi expressions and the consumed attributes of Karma expressions. As we have seen already, it is very important to understand how the synthesized and consumed attributes are formed. Parsers and generators are most elegant and efficient if they are tightly integrated with your data structures, and learning to match those to the attributes is crucial to being able to apply Spirit for your own needs.

See full article here.

Tagged with:
Dec 11

Spirit V2.1 has been released only a couple of weeks ago. The first feedback we have gotten so far was overwhelming! Many people seem to quickly understand the concepts of the new library, being able to apply its power to their needs. We try to follow people’s comments and watch for reported problems. There is one theme recurring over and over again: attributes. This new (for Spirit) concept turns out to be the most difficult idea to understand, especially for somebody starting to work with the library.

See full article here.

Tagged with:
Dec 10

Spirit 2 has undergone lots of revisions from its inception to what you are seeing now. An early beta  release, dubbed Spirit 2 beta, was included as part of Boost 1.39. The adventurous among you started using it as soon as it was released. Spirit 2.1 is essentially the same as Spirit2 beta apart from some cosmetic differences and QOI changes. For the sake of those who started using Spirit from 2.0 beta, here’s what’s changed:

See full article here.

Dec 06

We are trying to get the best possible content to you by regularly publishing articles about different aspects of the new Spirit V2.1 library (released with Boost 1.41). Now we need your feedback! Sure, you already can leave comments, but we thought it might be cool to add the possibility to rate the quality of the articles. So just click the stars at the end of a post to tell us what you think. Moreover, we added thumbs up/down rating for comments. That’s an easy way for you to agree or disagree with other user’s opinions. Use it!

And, by the way, it would be helpful if you rated the older articles as well.

Dec 05

Creating Your Own Generator Component for Spirit.Karma

By Hartmut Kaiser Karma Example Comments Off on Creating Your Own Generator Component for Spirit.Karma

In the good tradition of highlighting Spirits both major sub-libraries based on similar use cases I will talk about Karma today. In a previous installment (see Creating Your Own Parser Component for Spirit.Qi) I presented the steps needed to create a parser terminal. Our topic here is the creation of a new generator directive allowing to group output elements in columns.

See the full article here.

Tagged with:
Dec 02

I am considering writing a series of articles on compiler development using Spirit-2. It will be based on the series of BoostCon talks from 07 to 09. From the humblest calculator to a full blown programming language. Details are still sketchy at this point. All I can ascertain is that the final language shall use LLVM as a back-end. There are lots of questions I need to ask in order to get the bases covered. I’d like to solicit feedback and comments. Will it be an imperative language like C or a functional language like Scheme? I love the line oriented syntax of Python, but is a free format syntax with the all too familiar braces or begin/end blocks be better? Will it be statically typed like C++ or dynamically typed like Python or LISP? Will it be OOP? How complex or simple should it be? Remember, this is meant for instruction. Is a toy language good enough? How about basing it on a simple ISO-standard language like Pascal? Or fun languages like Javascript? How about features? Type inference? Lambda? Operator overloading? Etc., etc., etc.

Let me know what you think…

preload preload preload