]> git.donarmstrong.com Git - lilypond.git/commitdiff
Factor SCM_IDENTIFIER out from embedded_scm_arg*
authorDavid Kastrup <dak@gnu.org>
Sat, 6 Oct 2012 14:15:28 +0000 (16:15 +0200)
committerDavid Kastrup <dak@gnu.org>
Thu, 25 Oct 2012 18:29:26 +0000 (20:29 +0200)
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

index 3fda84232f7c9b928f56cf44bc3063462f5ab33f..de47a599a2faef9b7cbabb8344087ce8b26b84a3 100644 (file)
@@ -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