From: David Kastrup Date: Tue, 8 Mar 2016 10:47:28 +0000 (+0100) Subject: Issue 4790: Let ',' separate symbol lists like '.' does X-Git-Tag: release/2.19.39-1~5^2~31 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2a9bcb103d9fbe58c998c8c81761985da8bded2a;p=lilypond.git Issue 4790: Let ',' separate symbol lists like '.' does While the dotted list syntax is natural for hierarchical paths like for \override and \revert, it is less natural in cases that may now be written as \keepWithTag violin,flute,oboe { c''' } --- diff --git a/lily/parser.yy b/lily/parser.yy index 3e7625f45f..29ecf1c322 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -654,6 +654,11 @@ assignment: parser->lexer_->set_identifier (path, $5); $$ = SCM_UNSPECIFIED; } + | assignment_id ',' property_path '=' identifier_init { + SCM path = scm_cons (scm_string_to_symbol ($1), $3); + parser->lexer_->set_identifier (path, $5); + $$ = SCM_UNSPECIFIED; + } ; @@ -1673,6 +1678,10 @@ symbol_list_arg: { $$ = scm_append (scm_list_2 ($1, scm_reverse_x ($3, SCM_EOL))); } + | SYMBOL_LIST ',' symbol_list_rev + { + $$ = scm_append (scm_list_2 ($1, scm_reverse_x ($3, SCM_EOL))); + } ; symbol_list_rev: @@ -1681,6 +1690,10 @@ symbol_list_rev: { $$ = scm_append_x (scm_list_2 ($3, $1)); } + | symbol_list_rev ',' symbol_list_part + { + $$ = scm_append_x (scm_list_2 ($3, $1)); + } ; // symbol_list_part delivers elements in reverse copy. @@ -2621,6 +2634,10 @@ revert_arg_part: { $$ = scm_append_x (scm_list_2 ($5, $3)); } + | revert_arg_backup BACKUP SCM_ARG ',' symbol_list_part + { + $$ = scm_append_x (scm_list_2 ($5, $3)); + } | revert_arg_backup BACKUP SCM_ARG symbol_list_part { $$ = scm_append_x (scm_list_2 ($4, $3)); @@ -4102,6 +4119,10 @@ try_string_variants (SCM pred, SCM str) return SCM_UNDEFINED; str = scm_string_split (str, SCM_MAKE_CHAR ('.')); + for (SCM p = str; scm_is_pair (p); p = scm_cdr (p)) + scm_set_car_x (p, scm_string_split (scm_car (p), + SCM_MAKE_CHAR (','))); + str = scm_append_x (str); for (SCM p = str; scm_is_pair (p); p = scm_cdr (p)) scm_set_car_x (p, scm_string_to_symbol (scm_car (p))); @@ -4140,7 +4161,8 @@ is_regular_identifier (SCM id, bool multiple) || (c >= 'A' && c <= 'Z') || c > 0x7f) middle = true; - else if (middle && (c == '-' || c == '_' || (multiple && c == '.'))) + else if (middle && (c == '-' || c == '_' || (multiple && + (c == '.' || c == ',')))) middle = false; else return false;