diff --git a/src/macro/Parser.yy b/src/macro/Parser.yy index e1d7f6d7f67370227325a138d8372753b76ffa33..8629cf7a798f8bcc7a1fd9e339f20ddf3cc62593 100644 --- a/src/macro/Parser.yy +++ b/src/macro/Parser.yy @@ -152,10 +152,19 @@ directive_multiline : for { $$ = $1; } ; -for : FOR { driver.pushContext(); } comma_name IN expr EOL statements ENDFOR +for : FOR { driver.pushContext(); } NAME IN expr EOL statements ENDFOR + { + vector<VariablePtr> vvnp = {make_shared<Variable>($3, driver.env, @3)}; + auto vdp = driver.popContext(); + vdp.emplace_back(make_shared<TextNode>("\n", driver.env, @8)); + $$ = make_shared<For>(vvnp, $5, vdp, driver.env, @$); + } + ; + +for : FOR { driver.pushContext(); } LPAREN comma_name RPAREN IN expr EOL statements ENDFOR { vector<VariablePtr> vvnp; - for (auto & it : $3) + for (auto & it : $4) { auto vnp = dynamic_pointer_cast<Variable>(it); if (!vnp) @@ -163,8 +172,8 @@ for : FOR { driver.pushContext(); } comma_name IN expr EOL statements ENDFOR vvnp.push_back(vnp); } auto vdp = driver.popContext(); - vdp.emplace_back(make_shared<TextNode>("\n", driver.env, @8)); - $$ = make_shared<For>(vvnp, $5, vdp, driver.env, @$); + vdp.emplace_back(make_shared<TextNode>("\n", driver.env, @10)); + $$ = make_shared<For>(vvnp, $7, vdp, driver.env, @$); } ;