From d06ebc90ec926e435ec00f5fb18dec838928df20 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Wed, 16 May 2012 20:32:00 +0200 Subject: [PATCH] parser.yy: split function_arglist_nonbackup rule into closed and open variants This allows more cases where optional arguments are not really optional to accept music arguments not enclosed in braces. --- lily/parser.yy | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/lily/parser.yy b/lily/parser.yy index 49acd012d5..08e3ed7adf 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -481,6 +481,8 @@ If we give names, Bison complains. %type function_arglist_optional %type function_arglist_backup %type function_arglist_nonbackup +%type function_arglist_nonbackup_common +%type function_arglist_closed_nonbackup %type function_arglist_skip %type function_arglist_bare %type function_arglist_closed @@ -1309,21 +1311,13 @@ function_arglist_skip: ; -function_arglist_nonbackup: +function_arglist_nonbackup_common: EXPECT_OPTIONAL EXPECT_PITCH function_arglist pitch_also_in_chords { $$ = scm_cons ($4, $3); } | EXPECT_OPTIONAL EXPECT_DURATION function_arglist_closed duration_length { $$ = scm_cons ($4, $3); } - | EXPECT_OPTIONAL EXPECT_SCM function_arglist embedded_scm_arg_closed - { - $$ = check_scheme_arg (parser, @4, $4, $3, $2); - } - | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed bare_number_closed - { - $$ = check_scheme_arg (parser, @4, $4, $3, $2); - } | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed FRACTION { $$ = check_scheme_arg (parser, @4, $4, $3, $2); @@ -1362,6 +1356,29 @@ function_arglist_nonbackup: } ; +function_arglist_closed_nonbackup: + function_arglist_nonbackup_common + | EXPECT_OPTIONAL EXPECT_SCM function_arglist embedded_scm_arg_closed + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed bare_number_closed + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + ; + +function_arglist_nonbackup: + function_arglist_nonbackup_common + | EXPECT_OPTIONAL EXPECT_SCM function_arglist embedded_scm_arg + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed bare_number + { + $$ = check_scheme_arg (parser, @4, $4, $3, $2); + } + ; function_arglist_keep: function_arglist_common @@ -1630,7 +1647,7 @@ function_arglist_common_minus: function_arglist_closed: function_arglist_closed_common - | function_arglist_nonbackup + | function_arglist_closed_nonbackup ; function_arglist_closed_common: -- 2.39.2