}
;
-statements: newlines lterm_items
+statements: optional_newlines lterm_items
{
$$ = $2;
}
- | lterm_items
;
lterm_items: /* empty */
$$ = new std::vector<std::unique_ptr<Expression> >();
}
| rterm_items_inner
- | rterm_items_inner ','
- | rterm_items_inner ',' newlines
+ | rterm_items_inner ',' optional_newlines
| rterm_items_inner newlines
;
{
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: '{'
| T_NEWLINE newlines
;
+optional_newlines: /* empty */
+ | newlines
+ ;
+
/* required separator */
-sep: ',' newlines
- | ','
- | ';' newlines
- | ';'
+sep: ',' optional_newlines
+ | ';' optional_newlines
| newlines
;
-arraysep: ',' newlines
- | ','
+arraysep: ',' optional_newlines
;
%%