+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup PITCH_IDENTIFIER
+ {
+ SCM m = make_music_from_simple (parser, @4, $4);
+ if (unsmob_music (m) && scm_is_true (scm_call_1 ($2, m)))
+ {
+ MYREPARSE (@4, $2, PITCH_IDENTIFIER, $4);
+ $$ = $3;
+ } else if (scm_is_true (scm_call_1 ($2, $4)))
+ {
+ MYREPARSE (@4, $2, PITCH_ARG, $4);
+ $$ = $3;
+ } else {
+ $$ = scm_cons (loc_on_music (@3, $1), $3);
+ MYBACKUP (PITCH_IDENTIFIER, $4, @4);
+ }
+ }
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup NOTENAME_PITCH
+ {
+ SCM m = make_music_from_simple (parser, @4, $4);
+ if (unsmob_music (m) && scm_is_true (scm_call_1 ($2, m)))
+ {
+ MYREPARSE (@4, $2, NOTENAME_PITCH, $4);
+ $$ = $3;
+ } else if (scm_is_true (scm_call_1 ($2, $4)))
+ {
+ MYREPARSE (@4, $2, PITCH_ARG, $4);
+ $$ = $3;
+ } else {
+ $$ = scm_cons (loc_on_music (@3, $1), $3);
+ MYBACKUP (NOTENAME_PITCH, $4, @4);
+ }
+ }
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup TONICNAME_PITCH