]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/parser.yy
Doc: elaborate explanation of accidentals within cadenzas (3078)
[lilypond.git] / lily / parser.yy
index 62c97b7fdf284280f6e4d3cd43f02cca38cbd115..cda631865443a1fe04b820d56b223f4658604094 100644 (file)
@@ -1046,20 +1046,34 @@ music_embedded:
                        $$ = SCM_UNSPECIFIED;
                }
        }
-       | embedded_scm
+       | music_embedded_backup BACKUP SCM_ARG
+       {
+               $$ = $3;
+       }
+       | music_embedded_backup BACKUP lyric_element_music
+       {
+               $$ = $3;
+       }
+       ;
+
+music_embedded_backup:
+       embedded_scm_closed
        {
                if (scm_is_eq ($1, SCM_UNSPECIFIED))
-                       $$ = $1;
+                       MYBACKUP (SCM_ARG, $1, @1);
                else if (Music *m = unsmob_music ($1)) {
                        if (m->is_mus_type ("post-event")) {
                                parser->parser_error
                                        (@1, _ ("unexpected post-event"));
-                               $$ = SCM_UNSPECIFIED;
+                               MYBACKUP (SCM_ARG, SCM_UNSPECIFIED, @1);
                        } else
-                               $$ = $1;
-               } else {
+                               MYBACKUP (SCM_ARG, $1, @1);
+               } else if (parser->lexer_->is_lyric_state ()
+                          && Text_interface::is_markup ($1))
+                       MYBACKUP (LYRIC_ELEMENT, $1, @1);
+               else {
                        @$.warning (_ ("Ignoring non-music expression"));
-                       $$ = SCM_UNSPECIFIED;
+                       MYBACKUP (SCM_ARG, SCM_UNSPECIFIED, @1);
                }
        }
        ;
@@ -2066,6 +2080,13 @@ property_operation:
 // \revert Accidental.color
 
 revert_arg:
+       revert_arg_backup BACKUP symbol_list_arg
+       {
+               $$ = $3;
+       }
+       ;
+
+revert_arg_backup:
        revert_arg_part
        {
                if (scm_is_null ($1)
@@ -2074,20 +2095,16 @@ revert_arg:
                else
                        MYBACKUP (SYMBOL_LIST, scm_reverse_x ($1, SCM_EOL), @1);
        }
-       | revert_arg BACKUP symbol_list_arg
-       {
-               $$ = $3;
-       }
        ;
 
 // revert_arg_part delivers results in reverse
 revert_arg_part:
        symbol_list_part
-       | revert_arg BACKUP SCM_ARG '.' symbol_list_part
+       | revert_arg_backup BACKUP SCM_ARG '.' symbol_list_part
        {
                $$ = scm_append_x (scm_list_2 ($5, $3));
        }
-       | revert_arg BACKUP SCM_ARG symbol_list_part
+       | revert_arg_backup BACKUP SCM_ARG symbol_list_part
        {
                $$ = scm_append_x (scm_list_2 ($4, $3));
        }