From 626e9f92b5cf666556718f256fdb023a5ee9f601 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Sat, 6 Oct 2012 16:15:28 +0200 Subject: [PATCH] Factor SCM_IDENTIFIER out from embedded_scm_arg* SCM_IDENTIFIER indicates "active Scheme" introduced with $ that is subject to copying and reinterpretation. While the parser had its own *_IDENTIFIER category for everything interpreted specially, the fallback SCM_IDENTIFIER itself never needed special or different treatment from material generated with # (SCM_TOKEN). As the various *_IDENTIFIER types are faded out, this is changing. As a consequence, SCM_IDENTIFIER no longer shares the non-terminals with other Scheme-type definitions. --- lily/parser.yy | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/lily/parser.yy b/lily/parser.yy index 3fda84232f..de47a599a2 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -492,8 +492,11 @@ embedded_scm_active: ; embedded_scm_bare_arg: - embedded_scm_bare - | STRING + STRING + | SCM_TOKEN + { + $$ = parser->lexer_->eval_scm_token ($1); + } | full_markup | full_markup_list | context_modification @@ -1221,6 +1224,10 @@ function_arglist_closed_nonbackup: { $$ = check_scheme_arg (parser, @4, $4, $3, $2); } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist SCM_IDENTIFIER + { + $$ = 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); @@ -1233,6 +1240,10 @@ function_arglist_nonbackup: { $$ = check_scheme_arg (parser, @4, $4, $3, $2); } + | EXPECT_OPTIONAL EXPECT_SCM function_arglist SCM_IDENTIFIER + { + $$ = 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); @@ -1260,6 +1271,16 @@ function_arglist_backup: MYBACKUP (SCM_IDENTIFIER, $4, @4); } } + EXPECT_OPTIONAL EXPECT_SCM function_arglist_keep SCM_IDENTIFIER + { + if (scm_is_true (scm_call_1 ($2, $4))) + { + $$ = scm_cons ($4, $3); + } else { + $$ = scm_cons (loc_on_music (@3, $1), $3); + MYBACKUP (SCM_IDENTIFIER, $4, @4); + } + } | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_keep post_event_nofinger { if (scm_is_true (scm_call_1 ($2, $4))) @@ -1386,6 +1407,11 @@ function_arglist_backup: $$ = check_scheme_arg (parser, @3, $3, $1, $2); } + | function_arglist_backup REPARSE SCM_IDENTIFIER + { + $$ = check_scheme_arg (parser, @3, + $3, $1, $2); + } | function_arglist_backup REPARSE bare_number { $$ = check_scheme_arg (parser, @3, @@ -1405,6 +1431,11 @@ function_arglist_common: $$ = check_scheme_arg (parser, @3, $3, $2, $1); } + | EXPECT_SCM function_arglist_optional SCM_IDENTIFIER + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } | EXPECT_SCM function_arglist_closed_optional bare_number { $$ = check_scheme_arg (parser, @3, @@ -1511,6 +1542,11 @@ function_arglist_closed_common: $$ = check_scheme_arg (parser, @3, $3, $2, $1); } + | EXPECT_SCM function_arglist_optional SCM_IDENTIFIER + { + $$ = check_scheme_arg (parser, @3, + $3, $2, $1); + } | EXPECT_SCM function_arglist_closed_optional bare_number { $$ = check_scheme_arg (parser, @3, @@ -1945,6 +1981,7 @@ simple_string: STRING { scalar: embedded_scm_arg + | SCM_IDENTIFIER | bare_number | FRACTION | lyric_element @@ -1952,6 +1989,7 @@ scalar: scalar_closed: embedded_scm_arg_closed + | SCM_IDENTIFIER | bare_number | FRACTION | lyric_element -- 2.39.5