since the macro handler is much like the C/C++ handler, I thought I might as well just use a C preprocessor, and see where it lead me.
I wound up using the Cybiko preprocessor.
Now I've got a tool that takes the following:
#define SET(x,y) >(x)[-]+(y)<(x)
#define ZERO(x) SET(x,0)
#define POSITIONA 10
#define POSITIONB 12
#define VALUE ~5
and converts it to the following:
So, most of the hard part is done... all I need now is to make a tool to take it the rest of the way, and I'm done!