Subject: Re: [boost] [spirit] semantic action for mismatches?
From: Joel de Guzman (joel_at_[hidden])
Date: 2011-01-07 20:30:36
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?
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.
-- Joel de Guzman http://www.boostpro.com http://spirit.sf.net