]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/parser.yy
Issue 4507/2: Fix display for \applyOutput, adapt display regtest
[lilypond.git] / lily / parser.yy
index 581791d256badd07139b44758f2ed9fedb4e4a1a..23c024e9b7e590c42327b4ab69f972a0e76309ac 100644 (file)
@@ -510,6 +510,7 @@ embedded_scm_bare_arg:
                $$ = parser->lexer_->eval_scm_token ($1, @1);
        }
        | FRACTION
+       | partial_markup
        | full_markup_list
        | context_modification
        | score_block
@@ -692,26 +693,69 @@ identifier_init_nonumber:
        | FRACTION
        | string
         | embedded_scm
+       | partial_markup
        | full_markup_list
         | context_modification
        | partial_function ETC
+       {
+               $$ = MAKE_SYNTAX (partial_music_function, @$,
+                                 scm_reverse_x ($1, SCM_EOL));
+       }
        ;
 
+// Partial functions
 partial_function:
        MUSIC_FUNCTION function_arglist_partial
        {
-               $$ = MAKE_SYNTAX (partial_music_function, @$,
-                                 $1, $2);
+               $$ = scm_acons ($1, $2, SCM_EOL);
        }
        | EVENT_FUNCTION function_arglist_partial
        {
-               $$ = MAKE_SYNTAX (partial_music_function, @$,
-                                 $1, $2);
+               $$ = scm_acons ($1, $2, SCM_EOL);
        }
        | SCM_FUNCTION function_arglist_partial
        {
-               $$ = MAKE_SYNTAX (partial_music_function, @$,
-                                 $1, $2);
+               $$ = scm_acons ($1, $2, SCM_EOL);
+       }
+       | OVERRIDE grob_prop_path '='
+       {
+               $$ = scm_acons (Lily::property_override, scm_list_1 ($2), SCM_EOL);
+       }
+       | SET context_prop_spec '='
+       {
+               $$ = scm_acons (Lily::property_set, scm_list_1 ($2), SCM_EOL);
+       }
+       | MUSIC_FUNCTION EXPECT_SCM function_arglist_optional partial_function
+       {
+               $$ = scm_acons ($1, $3, $4);
+       }
+       | EVENT_FUNCTION EXPECT_SCM function_arglist_optional partial_function
+       {
+               $$ = scm_acons ($1, $3, $4);
+       }
+       | SCM_FUNCTION EXPECT_SCM function_arglist_optional partial_function
+       {
+               $$ = scm_acons ($1, $3, $4);
+       }
+       | OVERRIDE grob_prop_path '=' partial_function
+       {
+               $$ = scm_acons (Lily::property_override, scm_list_1 ($2), $4);
+       }
+       | SET context_prop_spec '=' partial_function
+       {
+               $$ = scm_acons (Lily::property_set, scm_list_1 ($2), $4);
+       }
+       | MUSIC_FUNCTION EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup partial_function
+       {
+               $$ = scm_acons ($1, $4, $5);
+       }
+       | EVENT_FUNCTION EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup partial_function
+       {
+               $$ = scm_acons ($1, $4, $5);
+       }
+       | SCM_FUNCTION EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup partial_function
+       {
+               $$ = scm_acons ($1, $4, $5);
        }
        ;
 
@@ -3579,11 +3623,24 @@ full_markup_list:
        }
        ;
 
-full_markup:
+markup_mode:
        MARKUP
-               { parser->lexer_->push_markup_state (); }
-       markup_top {
-               $$ = $3;
+       {
+               parser->lexer_->push_markup_state ();
+       }
+       ;
+
+full_markup:
+       markup_mode markup_top {
+               $$ = $2;
+               parser->lexer_->pop_state ();
+       }
+       ;
+
+partial_markup:
+       markup_mode markup_head_1_list ETC
+       {
+               $$ = MAKE_SYNTAX (partial_markup, @2, $2);
                parser->lexer_->pop_state ();
        }
        ;