Merge pull request #7458 from Icinga/feature/config-parser-cleanup

Config parser: introduce optional_newlines
This commit is contained in:
Michael Friedrich 2019-10-22 17:29:59 +02:00 committed by GitHub
commit e0ef5fe9de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -294,11 +294,10 @@ script: statements
} }
; ;
statements: newlines lterm_items statements: optional_newlines lterm_items
{ {
$$ = $2; $$ = $2;
} }
| lterm_items
; ;
lterm_items: /* empty */ lterm_items: /* empty */
@ -683,8 +682,7 @@ rterm_items: /* empty */
$$ = new std::vector<std::unique_ptr<Expression> >(); $$ = new std::vector<std::unique_ptr<Expression> >();
} }
| rterm_items_inner | rterm_items_inner
| rterm_items_inner ',' | rterm_items_inner ',' optional_newlines
| rterm_items_inner ',' newlines
| rterm_items_inner newlines | rterm_items_inner newlines
; ;
@ -693,10 +691,10 @@ rterm_items_inner: rterm
$$ = new std::vector<std::unique_ptr<Expression> >(); $$ = new std::vector<std::unique_ptr<Expression> >();
$$->emplace_back($1); $$->emplace_back($1);
} }
| rterm_items_inner arraysep rterm | rterm_items_inner ',' optional_newlines rterm
{ {
$$ = $1; $$ = $1;
$$->emplace_back($3); $$->emplace_back($4);
} }
; ;
@ -704,22 +702,12 @@ rterm_array: '['
{ {
context->m_OpenBraces++; context->m_OpenBraces++;
} }
newlines rterm_items ']' optional_newlines rterm_items ']'
{ {
context->m_OpenBraces--; context->m_OpenBraces--;
$$ = new ArrayExpression(std::move(*$4), @$); $$ = new ArrayExpression(std::move(*$4), @$);
delete $4; delete $4;
} }
| '['
{
context->m_OpenBraces++;
}
rterm_items ']'
{
context->m_OpenBraces--;
$$ = new ArrayExpression(std::move(*$3), @$);
delete $3;
}
; ;
rterm_dict: '{' rterm_dict: '{'
@ -1234,16 +1222,14 @@ newlines: T_NEWLINE
| T_NEWLINE newlines | T_NEWLINE newlines
; ;
/* required separator */ optional_newlines: /* empty */
sep: ',' newlines
| ','
| ';' newlines
| ';'
| newlines | newlines
; ;
arraysep: ',' newlines /* required separator */
| ',' sep: ',' optional_newlines
| ';' optional_newlines
| newlines
; ;
%% %%