That looks good. Some minor comments: The usual style is to give local variables lower-case names. The patch uses upper-caes names for local vars, which looks a bit strange.
> +]b4_locations_if([status = yypushparse (ctx, ch, &yylval, &yylloc);], > + [status = yypushparse (ctx, ch, &yylval);])[ This won't be indented well, and has duplicate code. The usual style is: status = yypushparse (ctx, ch, &yylval]b4_locations_if([, &yylloc])[);
