Config parser: introduce optional_newlines

This commit is contained in:
Alexander A. Klimov 2019-08-28 11:38:24 +02:00
parent 203482a675
commit fd88ac2f83

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
; ;
@ -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,17 @@ 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
;
arraysep: ',' optional_newlines
; ;
%% %%