]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/parser.yy
Merge branch 'translation' into 'master'
[lilypond.git] / lily / parser.yy
index e8fec3de2aa988551577d2289c2e797ca3559a43..79a4b1114f214c70cd8942e8bd6273e1e417a880 100644 (file)
@@ -2208,8 +2208,8 @@ re_rhythmed_music:
        ;
 
 context_change:
-       CHANGE STRING '=' STRING  {
-               $$ = MAKE_SYNTAX ("context-change", @$, scm_string_to_symbol ($2), $4);
+       CHANGE symbol '=' simple_string  {
+               $$ = MAKE_SYNTAX ("context-change", @$, $2, $4);
        }
        ;
 
@@ -2814,11 +2814,18 @@ direction_reqd_event:
        }
        | script_abbreviation {
                SCM s = parser->lexer_->lookup_identifier ("dash" + ly_scm2string ($1));
-               Music *a = MY_MAKE_MUSIC ("ArticulationEvent", @$);
-               if (scm_is_string (s))
+               if (scm_is_string (s)) {
+                       Music *a = MY_MAKE_MUSIC ("ArticulationEvent", @$);
                        a->set_property ("articulation-type", s);
-               else parser->parser_error (@1, _ ("expecting string as script definition"));
-               $$ = a->unprotect ();
+                       $$ = a->unprotect ();
+               } else if (ly_prob_type_p (s, ly_symbol2scm ("ArticulationEvent"))) {
+                       $$ = s;
+                       if (Music *original = unsmob_music (s)) {
+                               Music *a = original->clone ();
+                               a->set_spot (parser->lexer_->override_input (@$));
+                               $$ = a->unprotect ();
+                       }
+               } else parser->parser_error (@1, _ ("expecting string or ArticulationEvent as script definition"));
        }
        ;