|
Proto : |
Subject: [proto] Externalizing grammar pattern matching
From: Joel Falcou (joel.falcou_at_[hidden])
Date: 2010-11-23 10:19:48
Here is some classical pattern matching using proto::or_
https://gist.github.com/711891
This is pretty canonical I guess (unless my proto-fu is rusting).
As stated in the comments, my main concern is that adding new
pattern->value rules need to edit or_<>. Also classical.
For a long time it didn't bothered me until I needed to ship some code
doing this AND wanting to be extended by random contributors to add new
patterns.
I brainstormed and conjured something like:
https://gist.github.com/711895
(hold your horses on the crappiness of my MPL, it's a quick'n'dirty demo
code trying to get around the fact that mpl::pair, for whatever silly
reason, IS NOT a MPL RandomAccessSequence :| )
So it's slightly better. Now I dont have to touch the or_<>, just the
mpl::vector. Close but no cigare.
After some other hours, I found a way to make a MPL map look-a-like
where the insertion is external:
https://gist.github.com/711906
Alas, i can't find a way to put a decent mpl::iterator over this so both
puzzles pieces fits.
So, question is: is there a way to have an extensible list of
when<pattern,rule> that can be extended "from the outside", something
like a proto::switch_ but with patterns instead of tag ?
My daydream being something akin to :
https://gist.github.com/711914
So, now, I'll be grateful if you can answer this by some "you moron, use
X" :D
Proto list run by eric at boostpro.com