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 3fda842..de47a59 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
--
1.7.9.5
_______________________________________________
lilypond-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-devel