[refactoring] update ast structure of "InlinHtml" node

This commit is contained in:
Vadym Slizov 2020-09-14 16:36:01 +03:00
parent 7678303cb9
commit 8b4d65ac4d
7 changed files with 22 additions and 22 deletions

BIN
internal/php5/php5.go generated

Binary file not shown.

View File

@ -1062,13 +1062,13 @@ unticked_statement:
}
| T_INLINE_HTML
{
$$ = &ast.StmtInlineHtml{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.StmtInlineHtml{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
InlineHtmlTkn: $1,
Value: $1.Value,
}
}
| expr ';'
{

BIN
internal/php7/php7.go generated

Binary file not shown.

View File

@ -976,13 +976,13 @@ statement:
}
| T_INLINE_HTML
{
$$ = &ast.StmtInlineHtml{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.StmtInlineHtml{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
InlineHtmlTkn: $1,
Value: $1.Value,
}
}
| expr ';'
{

View File

@ -535,7 +535,8 @@ func (n *StmtIf) Accept(v NodeVisitor) {
// StmtInlineHtml node
type StmtInlineHtml struct {
Node
Value []byte
InlineHtmlTkn *token.Token
Value []byte
}
func (n *StmtInlineHtml) Accept(v NodeVisitor) {

View File

@ -200,3 +200,7 @@ func (v *FilterTokens) StmtEcho(n *ast.StmtEcho) {
n.SeparatorTkns = nil
n.SemiColonTkn = nil
}
func (v *FilterTokens) StmtInlineHtml(n *ast.StmtInlineHtml) {
n.InlineHtmlTkn = nil
}

View File

@ -2555,18 +2555,13 @@ func (p *Printer) printStmtAltIf(n *ast.StmtIf) {
p.printToken(n.SemiColonTkn, ";")
}
func (p *Printer) printStmtInlineHTML(n ast.Vertex) {
nn := n.(*ast.StmtInlineHtml)
p.printFreeFloating(nn, token.Start)
func (p *Printer) printStmtInlineHTML(n *ast.StmtInlineHtml) {
if p.s == PhpState && !bytes.Contains(p.lastWrite, []byte("?>")) {
p.write([]byte("?>"))
}
p.SetState(HtmlState)
p.write(nn.Value)
p.printFreeFloating(nn, token.End)
p.printToken(n.InlineHtmlTkn, string(n.Value))
}
func (p *Printer) printStmtInterface(n ast.Vertex) {