From fd88ac2f83ae5d5ab63beb881848806b72c2f598 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 28 Aug 2019 11:38:24 +0200 Subject: [PATCH 1/2] Config parser: introduce optional_newlines --- lib/config/config_parser.yy | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/lib/config/config_parser.yy b/lib/config/config_parser.yy index f1fcf4f7f..c8e3b5d3a 100644 --- a/lib/config/config_parser.yy +++ b/lib/config/config_parser.yy @@ -294,11 +294,10 @@ script: statements } ; -statements: newlines lterm_items +statements: optional_newlines lterm_items { $$ = $2; } - | lterm_items ; lterm_items: /* empty */ @@ -683,8 +682,7 @@ rterm_items: /* empty */ $$ = new std::vector >(); } | rterm_items_inner - | rterm_items_inner ',' - | rterm_items_inner ',' newlines + | rterm_items_inner ',' optional_newlines | rterm_items_inner newlines ; @@ -704,22 +702,12 @@ rterm_array: '[' { context->m_OpenBraces++; } - newlines rterm_items ']' + optional_newlines rterm_items ']' { context->m_OpenBraces--; $$ = new ArrayExpression(std::move(*$4), @$); delete $4; } - | '[' - { - context->m_OpenBraces++; - } - rterm_items ']' - { - context->m_OpenBraces--; - $$ = new ArrayExpression(std::move(*$3), @$); - delete $3; - } ; rterm_dict: '{' @@ -1234,16 +1222,17 @@ newlines: T_NEWLINE | T_NEWLINE newlines ; -/* required separator */ -sep: ',' newlines - | ',' - | ';' newlines - | ';' +optional_newlines: /* empty */ | newlines ; -arraysep: ',' newlines - | ',' +/* required separator */ +sep: ',' optional_newlines + | ';' optional_newlines + | newlines + ; + +arraysep: ',' optional_newlines ; %% From 360cb50c9e9420da4cd591e37c82747976e1a987 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 28 Aug 2019 11:44:55 +0200 Subject: [PATCH 2/2] Config parser: inline arraysep --- lib/config/config_parser.yy | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/config/config_parser.yy b/lib/config/config_parser.yy index c8e3b5d3a..353c072f3 100644 --- a/lib/config/config_parser.yy +++ b/lib/config/config_parser.yy @@ -691,10 +691,10 @@ rterm_items_inner: rterm $$ = new std::vector >(); $$->emplace_back($1); } - | rterm_items_inner arraysep rterm + | rterm_items_inner ',' optional_newlines rterm { $$ = $1; - $$->emplace_back($3); + $$->emplace_back($4); } ; @@ -1232,7 +1232,4 @@ sep: ',' optional_newlines | newlines ; -arraysep: ',' optional_newlines - ; - %%