From 2a9bcb103d9fbe58c998c8c81761985da8bded2a Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Tue, 8 Mar 2016 11:47:28 +0100 Subject: [PATCH] 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''' } --- lily/parser.yy | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) 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; -- 2.39.2