refactoring: create "ScalarEncapsedStringBrackets" node
This commit is contained in:
parent
38141ce97f
commit
2990f0cc2d
@ -3975,14 +3975,14 @@ func TestScalarEncapsed_StringVarCurveOpen(t *testing.T) {
|
|||||||
Value: []byte("$a"),
|
Value: []byte("$a"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&ast.ParserBrackets{
|
&ast.ScalarEncapsedStringBrackets{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 7,
|
StartPos: 7,
|
||||||
EndPos: 11,
|
EndPos: 11,
|
||||||
},
|
},
|
||||||
OpenBracketTkn: &token.Token{
|
OpenCurlyBracketTkn: &token.Token{
|
||||||
ID: token.T_CURLY_OPEN,
|
ID: token.T_CURLY_OPEN,
|
||||||
Value: []byte("{"),
|
Value: []byte("{"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -3992,7 +3992,7 @@ func TestScalarEncapsed_StringVarCurveOpen(t *testing.T) {
|
|||||||
EndPos: 8,
|
EndPos: 8,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Child: &ast.ExprVariable{
|
Var: &ast.ExprVariable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
@ -4019,7 +4019,7 @@ func TestScalarEncapsed_StringVarCurveOpen(t *testing.T) {
|
|||||||
Value: []byte("$b"),
|
Value: []byte("$b"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
CloseBracketTkn: &token.Token{
|
CloseCurlyBracketTkn: &token.Token{
|
||||||
ID: token.ID(125),
|
ID: token.ID(125),
|
||||||
Value: []byte("}"),
|
Value: []byte("}"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -4690,14 +4690,14 @@ func TestScalarEncapsed_CurlyOpenMethodCall(t *testing.T) {
|
|||||||
},
|
},
|
||||||
Value: []byte("test "),
|
Value: []byte("test "),
|
||||||
},
|
},
|
||||||
&ast.ParserBrackets{
|
&ast.ScalarEncapsedStringBrackets{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 9,
|
StartPos: 9,
|
||||||
EndPos: 22,
|
EndPos: 22,
|
||||||
},
|
},
|
||||||
OpenBracketTkn: &token.Token{
|
OpenCurlyBracketTkn: &token.Token{
|
||||||
ID: token.T_CURLY_OPEN,
|
ID: token.T_CURLY_OPEN,
|
||||||
Value: []byte("{"),
|
Value: []byte("{"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -4707,7 +4707,7 @@ func TestScalarEncapsed_CurlyOpenMethodCall(t *testing.T) {
|
|||||||
EndPos: 10,
|
EndPos: 10,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Child: &ast.ExprMethodCall{
|
Var: &ast.ExprMethodCall{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
@ -4791,7 +4791,7 @@ func TestScalarEncapsed_CurlyOpenMethodCall(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
CloseBracketTkn: &token.Token{
|
CloseCurlyBracketTkn: &token.Token{
|
||||||
ID: token.ID(125),
|
ID: token.ID(125),
|
||||||
Value: []byte("}"),
|
Value: []byte("}"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
|
BIN
internal/php5/php5.go
generated
BIN
internal/php5/php5.go
generated
Binary file not shown.
@ -5450,11 +5450,11 @@ encaps_var:
|
|||||||
}
|
}
|
||||||
| T_CURLY_OPEN variable '}'
|
| T_CURLY_OPEN variable '}'
|
||||||
{
|
{
|
||||||
$$ = &ast.ParserBrackets{
|
$$ = &ast.ScalarEncapsedStringBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($1, $3),
|
Position: yylex.(*Parser).builder.NewTokensPosition($1, $3),
|
||||||
OpenBracketTkn: $1,
|
OpenCurlyBracketTkn: $1,
|
||||||
Child: $2,
|
Var: $2,
|
||||||
CloseBracketTkn: $3,
|
CloseCurlyBracketTkn: $3,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -4332,14 +4332,14 @@ func TestScalarEncapsed_StringVarCurveOpen(t *testing.T) {
|
|||||||
Value: []byte("$a"),
|
Value: []byte("$a"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&ast.ParserBrackets{
|
&ast.ScalarEncapsedStringBrackets{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 7,
|
StartPos: 7,
|
||||||
EndPos: 11,
|
EndPos: 11,
|
||||||
},
|
},
|
||||||
OpenBracketTkn: &token.Token{
|
OpenCurlyBracketTkn: &token.Token{
|
||||||
ID: token.T_CURLY_OPEN,
|
ID: token.T_CURLY_OPEN,
|
||||||
Value: []byte("{"),
|
Value: []byte("{"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -4349,7 +4349,7 @@ func TestScalarEncapsed_StringVarCurveOpen(t *testing.T) {
|
|||||||
EndPos: 8,
|
EndPos: 8,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Child: &ast.ExprVariable{
|
Var: &ast.ExprVariable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
@ -4376,7 +4376,7 @@ func TestScalarEncapsed_StringVarCurveOpen(t *testing.T) {
|
|||||||
Value: []byte("$b"),
|
Value: []byte("$b"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
CloseBracketTkn: &token.Token{
|
CloseCurlyBracketTkn: &token.Token{
|
||||||
ID: token.ID(125),
|
ID: token.ID(125),
|
||||||
Value: []byte("}"),
|
Value: []byte("}"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -5047,14 +5047,14 @@ func TestScalarEncapsed_CurlyOpenMethodCall(t *testing.T) {
|
|||||||
},
|
},
|
||||||
Value: []byte("test "),
|
Value: []byte("test "),
|
||||||
},
|
},
|
||||||
&ast.ParserBrackets{
|
&ast.ScalarEncapsedStringBrackets{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 9,
|
StartPos: 9,
|
||||||
EndPos: 22,
|
EndPos: 22,
|
||||||
},
|
},
|
||||||
OpenBracketTkn: &token.Token{
|
OpenCurlyBracketTkn: &token.Token{
|
||||||
ID: token.T_CURLY_OPEN,
|
ID: token.T_CURLY_OPEN,
|
||||||
Value: []byte("{"),
|
Value: []byte("{"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -5064,7 +5064,7 @@ func TestScalarEncapsed_CurlyOpenMethodCall(t *testing.T) {
|
|||||||
EndPos: 10,
|
EndPos: 10,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Child: &ast.ExprMethodCall{
|
Var: &ast.ExprMethodCall{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
@ -5148,7 +5148,7 @@ func TestScalarEncapsed_CurlyOpenMethodCall(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
CloseBracketTkn: &token.Token{
|
CloseCurlyBracketTkn: &token.Token{
|
||||||
ID: token.ID(125),
|
ID: token.ID(125),
|
||||||
Value: []byte("}"),
|
Value: []byte("}"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
|
BIN
internal/php7/php7.go
generated
BIN
internal/php7/php7.go
generated
Binary file not shown.
@ -4208,11 +4208,11 @@ encaps_var:
|
|||||||
}
|
}
|
||||||
| T_CURLY_OPEN variable '}'
|
| T_CURLY_OPEN variable '}'
|
||||||
{
|
{
|
||||||
$$ = &ast.ParserBrackets{
|
$$ = &ast.ScalarEncapsedStringBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($1, $3),
|
Position: yylex.(*Parser).builder.NewTokensPosition($1, $3),
|
||||||
OpenBracketTkn: $1,
|
OpenCurlyBracketTkn: $1,
|
||||||
Child: $2,
|
Var: $2,
|
||||||
CloseBracketTkn: $3,
|
CloseCurlyBracketTkn: $3,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -176,6 +176,7 @@ type NodeVisitor interface {
|
|||||||
ScalarEncapsed(n *ScalarEncapsed)
|
ScalarEncapsed(n *ScalarEncapsed)
|
||||||
ScalarEncapsedStringPart(n *ScalarEncapsedStringPart)
|
ScalarEncapsedStringPart(n *ScalarEncapsedStringPart)
|
||||||
ScalarEncapsedStringVar(n *ScalarEncapsedStringVar)
|
ScalarEncapsedStringVar(n *ScalarEncapsedStringVar)
|
||||||
|
ScalarEncapsedStringBrackets(n *ScalarEncapsedStringBrackets)
|
||||||
ScalarHeredoc(n *ScalarHeredoc)
|
ScalarHeredoc(n *ScalarHeredoc)
|
||||||
ScalarLnumber(n *ScalarLnumber)
|
ScalarLnumber(n *ScalarLnumber)
|
||||||
ScalarMagicConstant(n *ScalarMagicConstant)
|
ScalarMagicConstant(n *ScalarMagicConstant)
|
||||||
@ -185,6 +186,4 @@ type NodeVisitor interface {
|
|||||||
NameFullyQualified(n *NameFullyQualified)
|
NameFullyQualified(n *NameFullyQualified)
|
||||||
NameRelative(n *NameRelative)
|
NameRelative(n *NameRelative)
|
||||||
NameNamePart(n *NameNamePart)
|
NameNamePart(n *NameNamePart)
|
||||||
|
|
||||||
ParserBrackets(n *ParserBrackets)
|
|
||||||
}
|
}
|
||||||
|
@ -150,6 +150,22 @@ func (n *ScalarEncapsedStringVar) GetPosition() *position.Position {
|
|||||||
return n.Position
|
return n.Position
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ScalarEncapsedStringVar node
|
||||||
|
type ScalarEncapsedStringBrackets struct {
|
||||||
|
Position *position.Position
|
||||||
|
OpenCurlyBracketTkn *token.Token
|
||||||
|
Var Vertex
|
||||||
|
CloseCurlyBracketTkn *token.Token
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *ScalarEncapsedStringBrackets) Accept(v NodeVisitor) {
|
||||||
|
v.ScalarEncapsedStringBrackets(n)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *ScalarEncapsedStringBrackets) GetPosition() *position.Position {
|
||||||
|
return n.Position
|
||||||
|
}
|
||||||
|
|
||||||
// ScalarHeredoc node
|
// ScalarHeredoc node
|
||||||
type ScalarHeredoc struct {
|
type ScalarHeredoc struct {
|
||||||
Position *position.Position
|
Position *position.Position
|
||||||
@ -2695,7 +2711,7 @@ type ParserBrackets struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (n *ParserBrackets) Accept(v NodeVisitor) {
|
func (n *ParserBrackets) Accept(v NodeVisitor) {
|
||||||
v.ParserBrackets(n)
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *ParserBrackets) GetPosition() *position.Position {
|
func (n *ParserBrackets) GetPosition() *position.Position {
|
||||||
|
@ -2472,6 +2472,18 @@ func (t *DFS) Traverse(n ast.Vertex) {
|
|||||||
t.Traverse(nn.Dim)
|
t.Traverse(nn.Dim)
|
||||||
t.visitor.Leave("Dim", true)
|
t.visitor.Leave("Dim", true)
|
||||||
}
|
}
|
||||||
|
case *ast.ScalarEncapsedStringBrackets:
|
||||||
|
if nn == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !t.visitor.EnterNode(nn) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if nn.Var != nil {
|
||||||
|
t.visitor.Enter("Var", true)
|
||||||
|
t.Traverse(nn.Var)
|
||||||
|
t.visitor.Leave("Var", true)
|
||||||
|
}
|
||||||
case *ast.ScalarHeredoc:
|
case *ast.ScalarHeredoc:
|
||||||
if nn == nil {
|
if nn == nil {
|
||||||
return
|
return
|
||||||
@ -2556,18 +2568,6 @@ func (t *DFS) Traverse(n ast.Vertex) {
|
|||||||
if !t.visitor.EnterNode(nn) {
|
if !t.visitor.EnterNode(nn) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case *ast.ParserBrackets:
|
|
||||||
if nn == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !t.visitor.EnterNode(nn) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if nn.Child != nil {
|
|
||||||
t.visitor.Enter("Child", true)
|
|
||||||
t.Traverse(nn.Child)
|
|
||||||
t.visitor.Leave("Child", true)
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
panic("unexpected type of node")
|
panic("unexpected type of node")
|
||||||
}
|
}
|
||||||
|
@ -2274,6 +2274,19 @@ func (v *Dumper) ScalarEncapsedStringVar(n *ast.ScalarEncapsedStringVar) {
|
|||||||
v.print(v.indent, "},\n")
|
v.print(v.indent, "},\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v *Dumper) ScalarEncapsedStringBrackets(n *ast.ScalarEncapsedStringBrackets) {
|
||||||
|
v.print(0, "&ast.ScalarEncapsedStringBrackets{\n")
|
||||||
|
v.indent++
|
||||||
|
|
||||||
|
v.dumpPosition(n.Position)
|
||||||
|
v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn)
|
||||||
|
v.dumpVertex("Var", n.Var)
|
||||||
|
v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn)
|
||||||
|
|
||||||
|
v.indent--
|
||||||
|
v.print(v.indent, "},\n")
|
||||||
|
}
|
||||||
|
|
||||||
func (v *Dumper) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
func (v *Dumper) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
||||||
v.print(0, "&ast.ScalarHeredoc{\n")
|
v.print(0, "&ast.ScalarHeredoc{\n")
|
||||||
v.indent++
|
v.indent++
|
||||||
@ -2374,16 +2387,3 @@ func (v *Dumper) NameNamePart(n *ast.NameNamePart) {
|
|||||||
v.indent--
|
v.indent--
|
||||||
v.print(v.indent, "},\n")
|
v.print(v.indent, "},\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Dumper) ParserBrackets(n *ast.ParserBrackets) {
|
|
||||||
v.print(0, "&ast.ParserBrackets{\n")
|
|
||||||
v.indent++
|
|
||||||
|
|
||||||
v.dumpPosition(n.Position)
|
|
||||||
v.dumpToken("OpenBracketTkn", n.OpenBracketTkn)
|
|
||||||
v.dumpVertex("Child", n.Child)
|
|
||||||
v.dumpToken("CloseBracketTkn", n.CloseBracketTkn)
|
|
||||||
|
|
||||||
v.indent--
|
|
||||||
v.print(v.indent, "},\n")
|
|
||||||
}
|
|
||||||
|
@ -1985,6 +1985,12 @@ func (f *formatter) ScalarEncapsedStringVar(n *ast.ScalarEncapsedStringVar) {
|
|||||||
n.CloseCurlyBracketTkn = f.newToken('}', []byte("}"))
|
n.CloseCurlyBracketTkn = f.newToken('}', []byte("}"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *formatter) ScalarEncapsedStringBrackets(n *ast.ScalarEncapsedStringBrackets) {
|
||||||
|
n.OpenCurlyBracketTkn = f.newToken('{', []byte("{"))
|
||||||
|
n.Var.Accept(f)
|
||||||
|
n.CloseCurlyBracketTkn = f.newToken('}', []byte("}"))
|
||||||
|
}
|
||||||
|
|
||||||
func (f *formatter) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
func (f *formatter) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
||||||
n.OpenHeredocTkn = f.newToken(token.T_START_HEREDOC, []byte("<<<EOT\n"))
|
n.OpenHeredocTkn = f.newToken(token.T_START_HEREDOC, []byte("<<<EOT\n"))
|
||||||
for _, p := range n.Parts {
|
for _, p := range n.Parts {
|
||||||
@ -2062,7 +2068,3 @@ func (f *formatter) NameNamePart(n *ast.NameNamePart) {
|
|||||||
n.StringTkn.FreeFloating = f.getFreeFloating()
|
n.StringTkn.FreeFloating = f.getFreeFloating()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *formatter) ParserBrackets(n *ast.ParserBrackets) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
@ -6694,6 +6694,31 @@ func TestFormatter_ScalarEncapsedStringVar_Dim(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFormatter_ScalarEncapsedStringBrackets(t *testing.T) {
|
||||||
|
o := bytes.NewBufferString("")
|
||||||
|
|
||||||
|
n := &ast.ScalarEncapsedStringBrackets{
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
VarName: &ast.Identifier{
|
||||||
|
Value: []byte("$foo"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||||
|
n.Accept(f)
|
||||||
|
|
||||||
|
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||||
|
n.Accept(p)
|
||||||
|
|
||||||
|
expected := `{$foo}`
|
||||||
|
actual := o.String()
|
||||||
|
|
||||||
|
if expected != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFormatter_ScalarHeredoc(t *testing.T) {
|
func TestFormatter_ScalarHeredoc(t *testing.T) {
|
||||||
o := bytes.NewBufferString("")
|
o := bytes.NewBufferString("")
|
||||||
|
|
||||||
|
@ -618,6 +618,10 @@ func (v *Null) ScalarEncapsedStringPart(_ *ast.ScalarEncapsedStringPart) {
|
|||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v *Null) ScalarEncapsedStringBrackets(_ *ast.ScalarEncapsedStringBrackets) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
func (v *Null) ScalarEncapsedStringVar(_ *ast.ScalarEncapsedStringVar) {
|
func (v *Null) ScalarEncapsedStringVar(_ *ast.ScalarEncapsedStringVar) {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
@ -653,7 +657,3 @@ func (v *Null) NameRelative(_ *ast.NameRelative) {
|
|||||||
func (v *Null) NameNamePart(_ *ast.NameNamePart) {
|
func (v *Null) NameNamePart(_ *ast.NameNamePart) {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Null) ParserBrackets(_ *ast.ParserBrackets) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
|
@ -1208,6 +1208,12 @@ func (p *printer) ScalarEncapsedStringVar(n *ast.ScalarEncapsedStringVar) {
|
|||||||
p.printToken(n.CloseCurlyBracketTkn, []byte("}"))
|
p.printToken(n.CloseCurlyBracketTkn, []byte("}"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *printer) ScalarEncapsedStringBrackets(n *ast.ScalarEncapsedStringBrackets) {
|
||||||
|
p.printToken(n.OpenCurlyBracketTkn, []byte("{"))
|
||||||
|
p.printNode(n.Var)
|
||||||
|
p.printToken(n.CloseCurlyBracketTkn, []byte("}"))
|
||||||
|
}
|
||||||
|
|
||||||
func (p *printer) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
func (p *printer) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
||||||
p.printToken(n.OpenHeredocTkn, []byte("<<<EOT\n"))
|
p.printToken(n.OpenHeredocTkn, []byte("<<<EOT\n"))
|
||||||
p.printList(n.Parts)
|
p.printList(n.Parts)
|
||||||
@ -1245,9 +1251,3 @@ func (p *printer) NameRelative(n *ast.NameRelative) {
|
|||||||
func (p *printer) NameNamePart(n *ast.NameNamePart) {
|
func (p *printer) NameNamePart(n *ast.NameNamePart) {
|
||||||
p.printToken(n.StringTkn, n.Value)
|
p.printToken(n.StringTkn, n.Value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *printer) ParserBrackets(n *ast.ParserBrackets) {
|
|
||||||
p.printToken(n.OpenBracketTkn, nil)
|
|
||||||
p.printNode(n.Child)
|
|
||||||
p.printToken(n.CloseBracketTkn, nil)
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user