+
+ }
+ | EXPECT_SCM function_arglist_closed_optional '-' REAL
+ {
+ $$ = check_scheme_arg (parser, @3,
+ scm_difference ($4, SCM_UNDEFINED),
+ $2, $1);
+ }
+ | EXPECT_SCM function_arglist_closed_optional '-' NUMBER_IDENTIFIER
+ {
+ $$ = check_scheme_arg (parser, @3,
+ scm_difference ($4, SCM_UNDEFINED),
+ $2, $1);
+ }
+ | EXPECT_SCM function_arglist_closed_optional post_event_nofinger
+ {
+ $$ = check_scheme_arg (parser, @3,
+ $3, $2, $1);
+ }
+ | EXPECT_SCM function_arglist_closed_optional fraction
+ {
+ $$ = check_scheme_arg (parser, @3,
+ $3, $2, $1);
+ }
+ | EXPECT_SCM function_arglist_optional lyric_element
+ {
+ $$ = check_scheme_arg (parser, @3,
+ $3, $2, $1);
+ }
+ ;
+
+function_arglist_optional:
+ function_arglist_keep %prec FUNCTION_ARGLIST
+ | function_arglist_backup BACKUP
+ | EXPECT_OPTIONAL EXPECT_PITCH function_arglist_optional
+ {
+ $$ = scm_cons ($1, $3);
+ }
+ | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_optional
+ {
+ $$ = scm_cons ($1, $3);
+ }
+ ;
+
+function_arglist_closed_optional:
+ function_arglist_closed_keep %prec FUNCTION_ARGLIST
+ | function_arglist_backup BACKUP
+ | EXPECT_OPTIONAL EXPECT_PITCH function_arglist_closed_optional
+ {
+ $$ = scm_cons ($1, $3);
+ }
+ | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_closed_optional
+ {
+ $$ = scm_cons ($1, $3);