From e3ad9747f472a8b67d879926f0877d52c61182be Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Fri, 20 Nov 2020 23:08:30 +0200 Subject: [PATCH] [refactoring] update ast structure of "Lnumber" and "Dnumber" nodes --- internal/php5/php5.go | Bin 288783 -> 288752 bytes internal/php5/php5.y | 36 ++++++++++++++++++------------- internal/php7/php7.go | Bin 239825 -> 239733 bytes internal/php7/php7.y | 49 ++++++++++++++++++++++++------------------ pkg/ast/node.go | 6 ++++-- 5 files changed, 53 insertions(+), 38 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 1e89fea02c196214cf799a1f33cd76dc8a4b1093..51b160f699860b239e55ba78bcf2e11522c8aba3 100644 GIT binary patch delta 389 zcmZ|JKP*FW5C`zwy^BB9MBh@hQcW@V6Mr79G!bf$wuYxdM714M%G5-}pRgez7KWzz zE+V>%*nS%^8!$-(L2MSIjrY<-EQU+IclXKV4sZ3(8~uFEQxS4FRyLLj!`!e_^z0Qq zWEHETN82C7dn;$eT+L@u3Q8NU1JnqAlAUOo(U$++s-vV9{(u-1$7dDSB5hFh?-?I1 z1Jn-PC3VU*DtW?0jvp{o&mC|PJJmr{+6h-~_99WwqV8kjV+yOYDd{G)IWErx&6Mch zQ7hwhS8Gxi6S6?qKGK?C#Y#0cDf3i@lUkYhXKZ3?Sg}%_CS{JeuLpOX+>CEG>oC{3 z24+g)6v9X|bs^Fr)p+@$0Dd Ue}?R4mJ!KGtW2gDPm5yw0KGtZZ2$lO delta 355 zcmYk0&nv@m7{_~_&x2XiMloMyQ6yFyD_SWcnS-{q6~04@{3zvDQcgly4jQrEN1T*{ z+&(TOH#yi}faIpM$(`?7;qW}YU(fS8yt9waRK|I^W)%DE_SN;J!)~tGP8-RzLDsNN z8)~-;Tl?%nxK}=q8CENQsJ}*3;Qg1&5%IHuizX^X##BX^7*!ta?H4a0_e~4P+ISwf zUh%*|T&5QXq=itq$8LQUlsYEAPQ@%)$3yZ&cpH*||EER<9a-*iL}m!DXY7U*OLS{g zrl=rBRY9SVywdPYwFtXd^v))m~$K{mSAIOI|V`I`P>dS-4sGpW#L5VSLW~KcH DW#e+F diff --git a/internal/php5/php5.y b/internal/php5/php5.y index f905e1d..e529812 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -4493,23 +4493,23 @@ ctor_arguments: common_scalar: T_LNUMBER { - $$ = &ast.ScalarLnumber{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarLnumber{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + NumberTkn: $1, + Value: $1.Value, + } } | T_DNUMBER { - $$ = &ast.ScalarDnumber{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarDnumber{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + NumberTkn: $1, + Value: $1.Value, + } } | T_CONSTANT_ENCAPSED_STRING { @@ -6146,7 +6146,13 @@ encaps_var_offset: { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string($1.Value)); err == nil { - $$ = &ast.ScalarLnumber{ast.Node{}, $1.Value} + $$ = &ast.ScalarLnumber{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + NumberTkn: $1, + Value: $1.Value, + } } else { $$ = &ast.ScalarString{ast.Node{}, $1.Value} } diff --git a/internal/php7/php7.go b/internal/php7/php7.go index a66ce9259d8c3eaa4ac90001eed929d29f88aa41..1ee2e1fbb86abfa51cd51c2e6b3bee21fb1ab3bd 100644 GIT binary patch delta 464 zcma)1%PWL&6z$$?@Oj1542?%DOc;;B45erykvy}c^m!FA@{B|y#d5sQLYk38R zYhhud_ya6#WI?19vhWS%v9mmnd(OF+mkG}o386$AmlrRZZOdjGDYK1DZ#d22I(TZx z8qqvC+>NYw&V}7WNeE_0BtkyX;H}|kb~&+IK(*+#h~vLUYSSvQGw61Z{+*ryXA8&u ztuT>>m0n3fOQ#`?7{%(|FCAnmi_x@M1Xjgssi@4f>*EuJ?LGRCKGx_p#`cXtcTfW! z^C=pMA&Nr!9chu_KMd)*jnnYrr#MW$a~f-NxbRCde5V|N)+0{F^qQQ(cg@8Josb&fTjsI8A$3%$7GC*@aK0t=SgDds<%V1_m8+?s6p^almTX3wi&8%$)zXgi(=Qww zkU{!#x62QY;eClx4|~$}+iZ{n#BL`>o45+r1F2`XD-0|M-qJDh4h^Qvg{&KPAaE!p EAJ>AElK=n! delta 404 zcmex*f$!o)z6}CWOlBs{LQ?HQQjFV$q?lNLO)pAkl9>Kpf%*OPQzFcT2ri?+^ukJJ zm+i)4%ttHW!o1UiJ~9bSzYxJBIQ@b+GwXDL$;>j-Kgco*Ot+cL>^J>^8L+#k%CrYafx1Va$-(mkq<;@dUzkR$#kQM%vsZ! zM3_aV8=VEZNq;iX(5?N0sL13yeZypCuIWNL zKnLAdVZJimd>F1U+doY?#SL9&UneM!T*$4pB CiHFw! diff --git a/internal/php7/php7.y b/internal/php7/php7.y index b246064..d171ae7 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -3940,23 +3940,23 @@ dereferencable_scalar: scalar: T_LNUMBER { - $$ = &ast.ScalarLnumber{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarLnumber{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + NumberTkn: $1, + Value: $1.Value, + } } | T_DNUMBER { - $$ = &ast.ScalarDnumber{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarDnumber{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + NumberTkn: $1, + Value: $1.Value, + } } | T_LINE { @@ -4785,7 +4785,13 @@ encaps_var_offset: { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string($1.Value)); err == nil { - $$ = &ast.ScalarLnumber{ast.Node{}, $1.Value} + $$ = &ast.ScalarLnumber{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + NumberTkn: $1, + Value: $1.Value, + } } else { $$ = &ast.ScalarString{ast.Node{}, $1.Value} } @@ -4798,13 +4804,17 @@ encaps_var_offset: } | '-' T_NUM_STRING { - var lnumber *ast.ScalarLnumber - // TODO: add option to handle 64 bit integer _, err := strconv.Atoi(string($2.Value)); isInt := err == nil if isInt { - lnumber = &ast.ScalarLnumber{ast.Node{}, $2.Value} + lnumber := &ast.ScalarLnumber{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + NumberTkn: $2, + Value: $2.Value, + } $$ = &ast.ExprUnaryMinus{ast.Node{}, lnumber} } else { $2.Value = append([]byte("-"), $2.Value...) @@ -4812,9 +4822,6 @@ encaps_var_offset: } // save position - if isInt { - lnumber.GetNode().Position = position.NewTokensPosition($1, $2) - } $$.GetNode().Position = position.NewTokensPosition($1, $2) // save comments diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 9cc59f4..5e6e373 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -115,7 +115,8 @@ func (n *Argument) Accept(v NodeVisitor) { // ScalarDnumber node type ScalarDnumber struct { Node - Value []byte + NumberTkn *token.Token + Value []byte } func (n *ScalarDnumber) Accept(v NodeVisitor) { @@ -156,7 +157,8 @@ func (n *ScalarHeredoc) Accept(v NodeVisitor) { // ScalarLnumber node type ScalarLnumber struct { Node - Value []byte + NumberTkn *token.Token + Value []byte } func (n *ScalarLnumber) Accept(v NodeVisitor) {