yield yield_from nodes

This commit is contained in:
z7zmey
2017-12-18 20:45:18 +02:00
parent 92b9453de7
commit 3ec45dc334
4 changed files with 73 additions and 8 deletions

View File

@@ -4221,25 +4221,25 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
//line parser/parser.y:894
{
yyVAL.node = node.NewSimpleNode("Yield")
yyVAL.node = expr.NewYield(nil, nil)
}
case 364:
yyDollar = yyS[yypt-2 : yypt+1]
//line parser/parser.y:895
{
yyVAL.node = node.NewSimpleNode("Yield").Append(yyDollar[2].node)
yyVAL.node = expr.NewYield(nil, yyDollar[2].node)
}
case 365:
yyDollar = yyS[yypt-4 : yypt+1]
//line parser/parser.y:896
{
yyVAL.node = node.NewSimpleNode("Yield").Append(yyDollar[2].node).Append(yyDollar[4].node)
yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node)
}
case 366:
yyDollar = yyS[yypt-2 : yypt+1]
//line parser/parser.y:897
{
yyVAL.node = node.NewSimpleNode("YieldFrom").Append(yyDollar[2].node)
yyVAL.node = expr.NewYieldFrom(yyDollar[2].node)
}
case 367:
yyDollar = yyS[yypt-10 : yypt+1]

View File

@@ -891,10 +891,10 @@ expr_without_variable:
| scalar { $$ = $1; }
| '`' backticks_expr '`' { $$ = expr.NewShellExec($2) }
| T_PRINT expr { $$ = expr.NewPrint($2) }
| T_YIELD { $$ = node.NewSimpleNode("Yield"); }
| T_YIELD expr { $$ = node.NewSimpleNode("Yield").Append($2); }
| T_YIELD expr T_DOUBLE_ARROW expr { $$ = node.NewSimpleNode("Yield").Append($2).Append($4); }
| T_YIELD_FROM expr { $$ = node.NewSimpleNode("YieldFrom").Append($2); }
| T_YIELD { $$ = expr.NewYield(nil, nil) }
| T_YIELD expr { $$ = expr.NewYield(nil, $2) }
| T_YIELD expr T_DOUBLE_ARROW expr { $$ = expr.NewYield($2, $4) }
| T_YIELD_FROM expr { $$ = expr.NewYieldFrom($2) }
| T_FUNCTION returns_ref '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}'
{
$$ = expr.NewClosure($4.(node.SimpleNode).Children, $6, $7, $9.(node.SimpleNode).Children, false, $2 == "true")