Boost logo

Boost :

Subject: Re: [boost] [spirit] semantic action for mismatches?
From: Joel de Guzman (joel_at_[hidden])
Date: 2011-01-07 21:12:57

On 1/8/2011 9:57 AM, caustik wrote:
> On Fri, Jan 7, 2011 at 5:30 PM, Joel de Guzman<joel_at_[hidden]>wrote:
>> On 1/8/2011 7:54 AM, caustik wrote:
>>> I've come to notice that there seems to be a missing bit of symmetry in
>>> spirit with regards to semantic actions.
>>> If a rule matches, and thus executes it's semantic action(s), but a rule
>>> which includes that rule mismatches, there seems to be no way to "unwind"
>>> the code executed down the chain. For example, if one of your semantic
>>> actions allocates memory or increments a reference count, how do you free
>>> /
>>> release that reference in the mismatch scenario? I've thought about using
>>> something like a shared_ptr, but it seems like that gets pretty sloppy and
>>> unnatural. Is there something you can think of that would work?
>> Sure:
>> r = p | eps[cleanup];
>> If p fails with side-effects from its direct or indirect semantic
>> actions, the cleanup semantic action can roll them back.
>> <>
> hmmm...
> Brilliant. You sir, are a gentleman and a scholar.

<blush> That was an easy way to earn that comment :-)

> I wonder if this is FAQ material. It's elegant yet a bit non-intuitive.

There is now:



Joel de Guzman

Boost list run by bdawes at, gregod at, cpdaniel at, john at