Boost logo

Proto :

Subject: Re: [proto] grammars, domains and subdomains
From: Thomas Heller (thom.heller_at_[hidden])
Date: 2010-12-08 17:30:20

Eric Niebler wrote:

> On 12/8/2010 4:44 PM, Thomas Heller wrote:
>> I will try to present a patch. I urgently need this feature to be
>> become officially supported to use it for phoenix3 (a scope opened by let
>> or lambda should be it's own sub domains in order to allow local
>> variables, theses shall not be allowed in a "regular" expression, and
>> they should be combinable with other expressions).

Basically, yes.
The other point is to detect if a expression is
nullary. With local variables we have a problem. They are not nullary,
however need a proper environment in order to be evaluated. I only do the
evaluation if the expression (evaluation also means result type calculation,
the problem here is operator()() as it gets instantiated every time. And I
can't calculate a result type for something like _1 or _a):
  1) Matches the grammar (this is without extension)
  2) Is nullary (no placeholders in the expression)

So, The sub-domain with sub-grammar part is the easiest and cleanest
solution, I actually looked it up in your old proto prototype.

> IIUC, this is to do "proper" error checking and detect scoping problems
> early. But if you don't have this feature, you can still make properly
> scoped expressions work, right? Can you move ahead with a looser grammar
> and tighten it up later?

I don't really now how to do it otherwise with the current design.
There is really only this part of the puzzle missing. If it is done, we have
a working and clean Phoenix V3.
For the time being, I can live with the workaround I did.
However, I will focus my efforts of the next days on working out a patch for
this to work properly.

Proto list run by eric at