- FIRSTBRANCH(fizzbuzz0) GOBRANCH(fizzbuzz2); \
- MIDBRANCH(fizzbuzz1) ; \
- LASTBRANCH(fizzbuzz2) \
- DECL(fizzbuzz3, int _i = base COMMA _limit = limit) \
- for (; _i < _limit; _i++) \
- DECL(fizzbuzz4, char _buf[24]) \
- DECL(fizzbuzz5, const char *var) \
- WRAP(fizzbuzz6, \
- { switch (_i%15) { \
- case 0: var = "fizzbuzz"; break; \
- case 3: case 6: case 9: case 12: var = "fizz"; break; \
- case 5: case 10: var = "buzz"; break; \
- default: sprintf(_buf, "%d", _i); var = _buf; break; \
- } }, \
- { ; }, \
- { GOBRANCH(fizzbuzz1); })
+ MC_GOTO(top) \
+ MC_LABEL(out) MC_ACT({ ; }) \
+ MC_LABEL(top) DECL(bounds, \
+ int _i = base COMMA _limit = limit) \
+ for (; _i < _limit; _i++) \
+ DECL(buf, char _buf[24]) \
+ DECL(var, const char *var) \
+ WRAP(wrap, { \
+ switch (_i%15) { \
+ case 0: \
+ var = "fizzbuzz"; \
+ break; \
+ case 3: case 6: case 9: case 12: \
+ var = "fizz"; \
+ break; \
+ case 5: case 10: \
+ var = "buzz"; \
+ break; \
+ default: \
+ sprintf(_buf, "%d", _i); var = _buf; \
+ break; \
+ } \
+ }, \
+ { ; }, \
+ { MC_GOTO(out); })