From 254f7a21674675b2f0aea9ef9ec4290b2b4c4558 Mon Sep 17 00:00:00 2001 From: z7zmey Date: Wed, 26 Dec 2018 12:09:54 +0200 Subject: [PATCH] #70: [php7] inherit meta.Data at node.Argument, stmt.PropertyList, stmt.ClassConstList, stmt.ClassMethod, stmt.TraitUsePrecedence, stmt.TraitUseAlias, stmt.TraitMethodRef --- php5/php5.go | 1 + php7/php7.go | 545 +++++++++++++++-------------- php7/php7.y | 27 +- visitor/dumper_test.go | 3 +- visitor/go_dumper_test.go | 24 +- visitor/json_dumper_test.go | 2 +- visitor/pretty_json_dumper_test.go | 12 +- 7 files changed, 328 insertions(+), 286 deletions(-) diff --git a/php5/php5.go b/php5/php5.go index f704ada..87a32d0 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -349,6 +349,7 @@ const yyErrCode = 2 const yyInitialStackSize = 16 //line php5/php5.y:6988 + type simpleIndirectReference struct { all []*expr.Variable last *expr.Variable diff --git a/php7/php7.go b/php7/php7.go index 57dea94..b4d962d 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -1,3 +1,5 @@ +// Code generated by goyacc -o php7/php7.go php7/php7.y. DO NOT EDIT. + //line php7/php7.y:2 package php7 @@ -346,7 +348,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5495 +//line php7/php7.y:5518 //line yacctab:1 var yyExca = [...]int{ @@ -4739,11 +4741,14 @@ yydefault: // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2358 + //line php7/php7.y:2361 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4751,13 +4756,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2373 + //line php7/php7.y:2376 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4768,7 +4773,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2382 + //line php7/php7.y:2385 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4776,7 +4781,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2391 + //line php7/php7.y:2394 { yyVAL.node = yyDollar[1].node @@ -4784,7 +4789,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2400 + //line php7/php7.y:2403 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4795,7 +4800,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2409 + //line php7/php7.y:2412 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4803,7 +4808,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2418 + //line php7/php7.y:2421 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4822,7 +4827,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2435 + //line php7/php7.y:2438 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4842,7 +4847,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2456 + //line php7/php7.y:2459 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4850,7 +4855,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2462 + //line php7/php7.y:2465 { yyVAL.list = []node.Node{} @@ -4858,7 +4863,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2471 + //line php7/php7.y:2474 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4869,11 +4874,13 @@ yydefault: yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yyDollar[1].list[0].GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2484 + //line php7/php7.y:2489 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4889,7 +4896,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2498 + //line php7/php7.y:2505 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4903,7 +4910,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:2510 + //line php7/php7.y:2517 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4925,11 +4932,15 @@ yydefault: yyDollar[6].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[8].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + if len(yyDollar[1].list) > 0 { + yyDollar[1].list[0].GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + } + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2537 + //line php7/php7.y:2548 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4937,7 +4948,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2543 + //line php7/php7.y:2554 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4948,7 +4959,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2555 + //line php7/php7.y:2566 { yyVAL.node = stmt.NewNop() @@ -4962,7 +4973,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2568 + //line php7/php7.y:2579 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4976,7 +4987,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2580 + //line php7/php7.y:2591 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4990,7 +5001,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2595 + //line php7/php7.y:2606 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4998,7 +5009,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2601 + //line php7/php7.y:2612 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5006,7 +5017,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2610 + //line php7/php7.y:2621 { yyVAL.node = yyDollar[1].node @@ -5018,7 +5029,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2620 + //line php7/php7.y:2631 { yyVAL.node = yyDollar[1].node @@ -5030,7 +5041,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2633 + //line php7/php7.y:2644 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5040,11 +5051,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.InsteadofToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2648 + //line php7/php7.y:2661 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5057,11 +5070,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2663 + //line php7/php7.y:2678 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5074,11 +5089,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2678 + //line php7/php7.y:2695 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5091,11 +5108,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2693 + //line php7/php7.y:2712 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5105,11 +5124,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2708 + //line php7/php7.y:2729 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5119,13 +5140,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2722 + //line php7/php7.y:2743 { yyVAL.node = yyDollar[1].node @@ -5133,7 +5154,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2731 + //line php7/php7.y:2752 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5146,11 +5167,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2749 + //line php7/php7.y:2772 { yyVAL.node = stmt.NewNop() @@ -5165,7 +5188,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2762 + //line php7/php7.y:2785 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5180,7 +5203,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2778 + //line php7/php7.y:2801 { yyVAL.list = yyDollar[1].list @@ -5188,7 +5211,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2784 + //line php7/php7.y:2807 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5203,7 +5226,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2800 + //line php7/php7.y:2823 { yyVAL.list = nil @@ -5211,7 +5234,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2806 + //line php7/php7.y:2829 { yyVAL.list = yyDollar[1].list @@ -5219,7 +5242,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2815 + //line php7/php7.y:2838 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5227,7 +5250,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2821 + //line php7/php7.y:2844 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5235,7 +5258,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2830 + //line php7/php7.y:2853 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5249,7 +5272,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2842 + //line php7/php7.y:2865 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5263,7 +5286,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2854 + //line php7/php7.y:2877 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5277,7 +5300,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2866 + //line php7/php7.y:2889 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5291,7 +5314,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2878 + //line php7/php7.y:2901 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5305,7 +5328,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2890 + //line php7/php7.y:2913 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5319,7 +5342,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2905 + //line php7/php7.y:2928 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5330,7 +5353,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2914 + //line php7/php7.y:2937 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5338,7 +5361,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2923 + //line php7/php7.y:2946 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5357,7 +5380,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2940 + //line php7/php7.y:2963 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5377,7 +5400,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2961 + //line php7/php7.y:2984 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5388,7 +5411,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2970 + //line php7/php7.y:2993 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5396,7 +5419,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2979 + //line php7/php7.y:3002 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5413,7 +5436,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2997 + //line php7/php7.y:3020 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5430,7 +5453,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3015 + //line php7/php7.y:3038 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5441,7 +5464,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3024 + //line php7/php7.y:3047 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5449,7 +5472,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3033 + //line php7/php7.y:3056 { yyVAL.node = yyDollar[1].node @@ -5457,7 +5480,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3042 + //line php7/php7.y:3065 { yyVAL.list = nil @@ -5465,7 +5488,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3048 + //line php7/php7.y:3071 { yyVAL.list = yyDollar[1].list @@ -5473,7 +5496,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3057 + //line php7/php7.y:3080 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5484,7 +5507,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3066 + //line php7/php7.y:3089 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5492,7 +5515,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:3075 + //line php7/php7.y:3098 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -5512,7 +5535,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3096 + //line php7/php7.y:3119 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5529,7 +5552,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3111 + //line php7/php7.y:3134 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5543,7 +5566,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3126 + //line php7/php7.y:3149 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5562,7 +5585,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3143 + //line php7/php7.y:3166 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5580,7 +5603,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3159 + //line php7/php7.y:3182 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5594,7 +5617,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3171 + //line php7/php7.y:3194 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5609,7 +5632,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3184 + //line php7/php7.y:3207 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5623,7 +5646,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3196 + //line php7/php7.y:3219 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5637,7 +5660,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3208 + //line php7/php7.y:3231 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5651,7 +5674,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3220 + //line php7/php7.y:3243 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5665,7 +5688,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3232 + //line php7/php7.y:3255 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5679,7 +5702,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3244 + //line php7/php7.y:3267 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5693,7 +5716,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3256 + //line php7/php7.y:3279 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5707,7 +5730,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3268 + //line php7/php7.y:3291 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5721,7 +5744,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3280 + //line php7/php7.y:3303 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5735,7 +5758,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3292 + //line php7/php7.y:3315 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5749,7 +5772,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3304 + //line php7/php7.y:3327 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5763,7 +5786,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3316 + //line php7/php7.y:3339 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5777,7 +5800,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3328 + //line php7/php7.y:3351 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5791,7 +5814,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3340 + //line php7/php7.y:3363 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5805,7 +5828,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3352 + //line php7/php7.y:3375 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5819,7 +5842,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3364 + //line php7/php7.y:3387 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5833,7 +5856,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3376 + //line php7/php7.y:3399 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5847,7 +5870,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3388 + //line php7/php7.y:3411 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5861,7 +5884,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3400 + //line php7/php7.y:3423 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5875,7 +5898,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3412 + //line php7/php7.y:3435 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5889,7 +5912,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3424 + //line php7/php7.y:3447 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5903,7 +5926,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3436 + //line php7/php7.y:3459 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5917,7 +5940,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3448 + //line php7/php7.y:3471 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5931,7 +5954,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3460 + //line php7/php7.y:3483 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5945,7 +5968,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3472 + //line php7/php7.y:3495 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5959,7 +5982,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3484 + //line php7/php7.y:3507 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5973,7 +5996,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3496 + //line php7/php7.y:3519 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5987,7 +6010,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3508 + //line php7/php7.y:3531 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6001,7 +6024,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3520 + //line php7/php7.y:3543 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6015,7 +6038,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3532 + //line php7/php7.y:3555 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6029,7 +6052,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3544 + //line php7/php7.y:3567 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6043,7 +6066,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3556 + //line php7/php7.y:3579 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6057,7 +6080,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3568 + //line php7/php7.y:3591 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6071,7 +6094,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3580 + //line php7/php7.y:3603 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6085,7 +6108,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3592 + //line php7/php7.y:3615 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6099,7 +6122,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3604 + //line php7/php7.y:3627 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6113,7 +6136,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3616 + //line php7/php7.y:3639 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6127,7 +6150,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3628 + //line php7/php7.y:3651 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6141,7 +6164,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3640 + //line php7/php7.y:3663 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6155,7 +6178,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3652 + //line php7/php7.y:3675 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6169,7 +6192,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3664 + //line php7/php7.y:3687 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6183,7 +6206,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3676 + //line php7/php7.y:3699 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6198,7 +6221,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3689 + //line php7/php7.y:3712 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6212,7 +6235,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3701 + //line php7/php7.y:3724 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6226,7 +6249,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3713 + //line php7/php7.y:3736 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6240,7 +6263,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3725 + //line php7/php7.y:3748 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6254,7 +6277,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3737 + //line php7/php7.y:3760 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6268,7 +6291,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3749 + //line php7/php7.y:3772 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6282,7 +6305,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3761 + //line php7/php7.y:3784 { yyVAL.node = yyDollar[2].node @@ -6296,7 +6319,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3773 + //line php7/php7.y:3796 { yyVAL.node = yyDollar[1].node @@ -6304,7 +6327,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3779 + //line php7/php7.y:3802 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6319,7 +6342,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3792 + //line php7/php7.y:3815 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6334,7 +6357,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3805 + //line php7/php7.y:3828 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6348,7 +6371,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3817 + //line php7/php7.y:3840 { yyVAL.node = yyDollar[1].node @@ -6356,7 +6379,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3823 + //line php7/php7.y:3846 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6371,7 +6394,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3836 + //line php7/php7.y:3859 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6386,7 +6409,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3849 + //line php7/php7.y:3872 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6401,7 +6424,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3862 + //line php7/php7.y:3885 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6416,7 +6439,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3875 + //line php7/php7.y:3898 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6431,7 +6454,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3888 + //line php7/php7.y:3911 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6446,7 +6469,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3901 + //line php7/php7.y:3924 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6461,7 +6484,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3914 + //line php7/php7.y:3937 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6490,7 +6513,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3941 + //line php7/php7.y:3964 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6504,7 +6527,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3953 + //line php7/php7.y:3976 { yyVAL.node = yyDollar[1].node @@ -6512,7 +6535,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3959 + //line php7/php7.y:3982 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6526,7 +6549,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3971 + //line php7/php7.y:3994 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6540,7 +6563,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3983 + //line php7/php7.y:4006 { yyVAL.node = expr.NewYield(nil, nil) @@ -6554,7 +6577,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3995 + //line php7/php7.y:4018 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6568,7 +6591,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4007 + //line php7/php7.y:4030 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6583,7 +6606,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4020 + //line php7/php7.y:4043 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6597,7 +6620,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:4032 + //line php7/php7.y:4055 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6618,7 +6641,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4051 + //line php7/php7.y:4074 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6640,7 +6663,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4074 + //line php7/php7.y:4097 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6649,19 +6672,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4084 + //line php7/php7.y:4107 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4088 + //line php7/php7.y:4111 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4095 + //line php7/php7.y:4118 { yyVAL.ClosureUse = nil @@ -6669,7 +6692,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4101 + //line php7/php7.y:4124 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6685,7 +6708,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4118 + //line php7/php7.y:4141 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6696,7 +6719,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4127 + //line php7/php7.y:4150 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6704,7 +6727,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4136 + //line php7/php7.y:4159 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6721,7 +6744,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4151 + //line php7/php7.y:4174 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6741,7 +6764,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4172 + //line php7/php7.y:4195 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6752,7 +6775,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4181 + //line php7/php7.y:4204 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6766,7 +6789,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4193 + //line php7/php7.y:4216 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6780,7 +6803,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4205 + //line php7/php7.y:4228 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6791,7 +6814,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4217 + //line php7/php7.y:4240 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6805,7 +6828,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4229 + //line php7/php7.y:4252 { yyVAL.node = yyDollar[1].node @@ -6813,7 +6836,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4238 + //line php7/php7.y:4261 { yyVAL.node = yyDollar[1].node @@ -6821,7 +6844,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4244 + //line php7/php7.y:4267 { yyVAL.node = yyDollar[1].node @@ -6829,7 +6852,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4253 + //line php7/php7.y:4276 { yyVAL.node = nil @@ -6837,7 +6860,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4259 + //line php7/php7.y:4282 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6854,7 +6877,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4277 + //line php7/php7.y:4300 { yyVAL.list = []node.Node{} @@ -6862,7 +6885,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4283 + //line php7/php7.y:4306 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6870,7 +6893,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4289 + //line php7/php7.y:4312 { yyVAL.list = yyDollar[1].list @@ -6878,7 +6901,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4298 + //line php7/php7.y:4321 { yyVAL.node = nil @@ -6886,7 +6909,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4304 + //line php7/php7.y:4327 { yyVAL.node = yyDollar[1].node @@ -6894,7 +6917,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4313 + //line php7/php7.y:4336 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6910,7 +6933,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4327 + //line php7/php7.y:4350 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6925,7 +6948,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4340 + //line php7/php7.y:4363 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6939,7 +6962,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4355 + //line php7/php7.y:4378 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6953,7 +6976,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4367 + //line php7/php7.y:4390 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6967,7 +6990,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4379 + //line php7/php7.y:4402 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6981,7 +7004,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4391 + //line php7/php7.y:4414 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6995,7 +7018,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4403 + //line php7/php7.y:4426 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7009,7 +7032,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4415 + //line php7/php7.y:4438 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7023,7 +7046,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4427 + //line php7/php7.y:4450 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7037,7 +7060,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4439 + //line php7/php7.y:4462 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7051,7 +7074,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4451 + //line php7/php7.y:4474 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7065,7 +7088,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4463 + //line php7/php7.y:4486 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7079,7 +7102,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4475 + //line php7/php7.y:4498 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7095,7 +7118,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4489 + //line php7/php7.y:4512 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7109,7 +7132,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4501 + //line php7/php7.y:4524 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7123,7 +7146,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4513 + //line php7/php7.y:4536 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7137,7 +7160,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4525 + //line php7/php7.y:4548 { yyVAL.node = yyDollar[1].node @@ -7145,7 +7168,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4531 + //line php7/php7.y:4554 { yyVAL.node = yyDollar[1].node @@ -7153,7 +7176,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4540 + //line php7/php7.y:4563 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -7164,7 +7187,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4549 + //line php7/php7.y:4572 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7181,7 +7204,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4564 + //line php7/php7.y:4587 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7198,7 +7221,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4582 + //line php7/php7.y:4605 { yyVAL.node = yyDollar[1].node @@ -7206,7 +7229,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4588 + //line php7/php7.y:4611 { yyVAL.node = yyDollar[1].node @@ -7214,7 +7237,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4597 + //line php7/php7.y:4620 { yyVAL.node = nil @@ -7222,7 +7245,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4603 + //line php7/php7.y:4626 { yyVAL.node = yyDollar[1].node @@ -7230,7 +7253,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4612 + //line php7/php7.y:4635 { yyVAL.node = yyDollar[1].node @@ -7238,7 +7261,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4621 + //line php7/php7.y:4644 { yyVAL.node = yyDollar[1].node @@ -7246,7 +7269,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4627 + //line php7/php7.y:4650 { yyVAL.node = yyDollar[2].node @@ -7260,7 +7283,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4639 + //line php7/php7.y:4662 { yyVAL.node = yyDollar[1].node @@ -7268,7 +7291,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4648 + //line php7/php7.y:4671 { yyVAL.node = yyDollar[1].node @@ -7276,7 +7299,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4654 + //line php7/php7.y:4677 { yyVAL.node = yyDollar[2].node @@ -7290,7 +7313,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4666 + //line php7/php7.y:4689 { yyVAL.node = yyDollar[1].node @@ -7298,7 +7321,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4675 + //line php7/php7.y:4698 { yyVAL.node = yyDollar[1].node @@ -7306,7 +7329,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4681 + //line php7/php7.y:4704 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7323,7 +7346,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4696 + //line php7/php7.y:4719 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7340,7 +7363,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4711 + //line php7/php7.y:4734 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7357,7 +7380,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4726 + //line php7/php7.y:4749 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7371,7 +7394,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4738 + //line php7/php7.y:4761 { yyVAL.node = yyDollar[1].node @@ -7379,7 +7402,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4747 + //line php7/php7.y:4770 { yyVAL.node = yyDollar[1].node @@ -7387,7 +7410,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4753 + //line php7/php7.y:4776 { yyVAL.node = yyDollar[1].node @@ -7395,7 +7418,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4759 + //line php7/php7.y:4782 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7409,7 +7432,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4774 + //line php7/php7.y:4797 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7426,7 +7449,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4789 + //line php7/php7.y:4812 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7445,7 +7468,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4806 + //line php7/php7.y:4829 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7460,7 +7483,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4822 + //line php7/php7.y:4845 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7474,7 +7497,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4834 + //line php7/php7.y:4857 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7488,7 +7511,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4849 + //line php7/php7.y:4872 { yyVAL.node = yyDollar[1].node @@ -7496,7 +7519,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4855 + //line php7/php7.y:4878 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7513,7 +7536,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4870 + //line php7/php7.y:4893 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7530,7 +7553,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4885 + //line php7/php7.y:4908 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7544,7 +7567,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4897 + //line php7/php7.y:4920 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7558,7 +7581,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4909 + //line php7/php7.y:4932 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7572,7 +7595,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4924 + //line php7/php7.y:4947 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7586,7 +7609,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4936 + //line php7/php7.y:4959 { yyVAL.node = yyDollar[2].node @@ -7600,7 +7623,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4948 + //line php7/php7.y:4971 { yyVAL.node = yyDollar[1].node @@ -7608,7 +7631,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4957 + //line php7/php7.y:4980 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7622,7 +7645,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4969 + //line php7/php7.y:4992 { yyVAL.node = yyDollar[2].node @@ -7636,7 +7659,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4981 + //line php7/php7.y:5004 { yyVAL.node = yyDollar[1].node @@ -7644,7 +7667,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4990 + //line php7/php7.y:5013 { yyVAL.list = yyDollar[1].list @@ -7652,7 +7675,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4999 + //line php7/php7.y:5022 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7660,7 +7683,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5005 + //line php7/php7.y:5028 { yyVAL.node = yyDollar[1].node @@ -7668,7 +7691,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5014 + //line php7/php7.y:5037 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7683,7 +7706,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5027 + //line php7/php7.y:5050 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7695,7 +7718,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5040 + //line php7/php7.y:5063 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7709,7 +7732,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5052 + //line php7/php7.y:5075 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -7720,7 +7743,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5061 + //line php7/php7.y:5084 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7737,7 +7760,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5076 + //line php7/php7.y:5099 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7753,7 +7776,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5090 + //line php7/php7.y:5113 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7773,7 +7796,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5108 + //line php7/php7.y:5131 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7792,7 +7815,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5128 + //line php7/php7.y:5151 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7800,7 +7823,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5134 + //line php7/php7.y:5157 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7815,7 +7838,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5147 + //line php7/php7.y:5170 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7823,7 +7846,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5153 + //line php7/php7.y:5176 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7838,7 +7861,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5169 + //line php7/php7.y:5192 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7855,7 +7878,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5184 + //line php7/php7.y:5207 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7878,7 +7901,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5205 + //line php7/php7.y:5228 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7901,7 +7924,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5226 + //line php7/php7.y:5249 { variable := expr.NewVariable(yyDollar[2].node) @@ -7920,7 +7943,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5243 + //line php7/php7.y:5266 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -7942,7 +7965,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5263 + //line php7/php7.y:5286 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7967,7 +7990,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5286 + //line php7/php7.y:5309 { yyVAL.node = yyDollar[2].node @@ -7981,7 +8004,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5301 + //line php7/php7.y:5324 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7995,7 +8018,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5313 + //line php7/php7.y:5336 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -8011,7 +8034,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5327 + //line php7/php7.y:5350 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8039,7 +8062,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5353 + //line php7/php7.y:5376 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8056,7 +8079,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5371 + //line php7/php7.y:5394 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8076,7 +8099,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5389 + //line php7/php7.y:5412 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8092,7 +8115,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5403 + //line php7/php7.y:5426 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8106,7 +8129,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5415 + //line php7/php7.y:5438 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8120,7 +8143,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5427 + //line php7/php7.y:5450 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8136,7 +8159,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5441 + //line php7/php7.y:5464 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8150,7 +8173,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5453 + //line php7/php7.y:5476 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8164,7 +8187,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5468 + //line php7/php7.y:5491 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8172,7 +8195,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5474 + //line php7/php7.y:5497 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8183,7 +8206,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5486 + //line php7/php7.y:5509 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index 62e396d..8ac9435 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -2352,6 +2352,9 @@ argument: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + // save comments + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ELLIPSIS expr @@ -2362,7 +2365,7 @@ argument: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2478,6 +2481,8 @@ class_statement: $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | method_modifiers T_CONST class_const_list ';' @@ -2492,6 +2497,8 @@ class_statement: $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_USE name_list trait_adaptations @@ -2528,6 +2535,10 @@ class_statement: $6.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) $8.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + if len($1) > 0 { + $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + } + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -2639,6 +2650,8 @@ trait_precedence: // save comments $2.Meta.SetTokenName(meta.InsteadofToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -2657,6 +2670,8 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference T_AS reserved_non_modifiers @@ -2672,6 +2687,8 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference T_AS member_modifier identifier @@ -2687,6 +2704,8 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference T_AS member_modifier @@ -2699,6 +2718,8 @@ trait_alias: // save comments $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -2714,7 +2735,7 @@ trait_method_reference: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2740,6 +2761,8 @@ absolute_trait_method_reference: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; diff --git a/visitor/dumper_test.go b/visitor/dumper_test.go index 214f1d9..8944b64 100644 --- a/visitor/dumper_test.go +++ b/visitor/dumper_test.go @@ -75,6 +75,7 @@ func ExampleDumper() { // | [*stmt.ClassMethod] // | "Position": Pos{Line: 5-9 Pos: 45-134} // | "Meta": + // | "\n\t\t\t\t" before "NodeStart" // | " " before "FunctionToken" // | "ReturnsRef": false // | "PhpDocComment": "" @@ -87,8 +88,6 @@ func ExampleDumper() { // | "Modifiers": // | [*node.Identifier] // | "Position": Pos{Line: 5-5 Pos: 45-50} - // | "Meta": - // | "\n\t\t\t\t" before "NodeStart" // | "Value": "public" // | "Params": // | [*node.Parameter] diff --git a/visitor/go_dumper_test.go b/visitor/go_dumper_test.go index 1765cee..a3c13c6 100644 --- a/visitor/go_dumper_test.go +++ b/visitor/go_dumper_test.go @@ -206,6 +206,17 @@ func ExampleGoDumper() { // &meta.Data{ // Type: meta.WhiteSpaceType, // Position: &position.Position{ + // StartLine: 4, + // EndLine: 5, + // StartPos: 40, + // EndPos: 44, + // }, + // Value: "\n\t\t\t\t", + // TokenName: meta.NodeStart, + // }, + // &meta.Data{ + // Type: meta.WhiteSpaceType, + // Position: &position.Position{ // StartLine: 5, // EndLine: 5, // StartPos: 51, @@ -247,19 +258,6 @@ func ExampleGoDumper() { // StartPos: 45, // EndPos: 50, // }, - // Meta: meta.Collection{ - // &meta.Data{ - // Type: meta.WhiteSpaceType, - // Position: &position.Position{ - // StartLine: 4, - // EndLine: 5, - // StartPos: 40, - // EndPos: 44, - // }, - // Value: "\n\t\t\t\t", - // TokenName: meta.NodeStart, - // }, - // }, // Value: "public", // }, // }, diff --git a/visitor/json_dumper_test.go b/visitor/json_dumper_test.go index 4b6328a..81af330 100644 --- a/visitor/json_dumper_test.go +++ b/visitor/json_dumper_test.go @@ -37,5 +37,5 @@ func ExampleJsonDumper() { nodes.Walk(dumper) // Output: - // {"type":"*node.Root","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"Stmts":[{"type":"*stmt.Namespace","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"meta":[{"type":"*meta.TokenType","value":"