]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/parser.yy
Doc-es: update Notation/World.
[lilypond.git] / lily / parser.yy
index 6e8b1435fa9e79c050e435223aeb4ab53b77bb66..b8849e8f4acaa79447fe0a81daa4d6e0d8a218d3 100644 (file)
@@ -674,6 +674,14 @@ assignment:
 identifier_init:
        identifier_init_nonumber
        | number_expression
+       | symbol_list_part_bare '.' property_path
+       {
+               $$ = scm_reverse_x ($1, $3);
+       }
+       | symbol_list_part_bare ',' property_path
+       {
+               $$ = scm_reverse_x ($1, $3);
+       }
        | post_event_nofinger post_events
        {
                $$ = scm_reverse_x ($2, SCM_EOL);
@@ -1726,6 +1734,21 @@ symbol_list_element:
        | UNSIGNED
        ;
 
+symbol_list_part_bare:
+       STRING
+       {
+               $$ = try_string_variants (Lily::key_list_p, $1);
+               if (SCM_UNBNDP ($$)) {
+                       parser->parser_error (@1, _("not a key"));
+                       $$ = SCM_EOL;
+               } else
+                       $$ = scm_reverse ($$);
+       }
+       | UNSIGNED
+       {
+               $$ = scm_list_1 ($1);
+       }
+       ;
 
 function_arglist_nonbackup:
        function_arglist_common
@@ -2883,6 +2906,14 @@ scalar:
                $$ = scm_difference ($2, SCM_UNDEFINED);
        }
        | string
+       | symbol_list_part_bare '.' property_path
+       {
+               $$ = scm_reverse_x ($1, $3);
+       }
+       | symbol_list_part_bare ',' property_path
+       {
+               $$ = scm_reverse_x ($1, $3);
+       }
        ;
 
 event_chord:
@@ -4048,7 +4079,8 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid)
                *destination = unsmob<Score> (sid)->clone ()->unprotect ();
                return SCM_IDENTIFIER;
        } else if (scm_is_pair (sid)
-                  && scm_is_true (Lily::key_list_p (sid))) {
+                  && scm_is_pair (scm_car (sid))
+                  && scm_is_true (Lily::key_p (scm_caar (sid)))) {
                *destination = sid;
                return LOOKUP_IDENTIFIER;
        }