-static SCM
-syntax_call (void *arg)
-{
- SCM sarg = reinterpret_cast <SCM> (arg);
- return scm_apply_0 (scm_car (sarg), scm_cdr (sarg));
-}
-
-#define LOWLEVEL_MAKE_SYNTAX(location, args) \
- scm_c_with_fluid \
- (Lily::f_location, \
- parser->lexer_->override_input (location).smobbed_copy (), \
- syntax_call, \
- reinterpret_cast <void*> (args))
+#define LOWLEVEL_MAKE_SYNTAX(location, proc, ...) \
+ with_location \
+ (parser->lexer_->override_input (location).smobbed_copy (), \
+ proc, \
+ ##__VA_ARGS__)