Improved AST parser
This commit is contained in:
@ -114,16 +114,16 @@ func (expr *Expression) LastChild() *Expression {
|
||||
}
|
||||
|
||||
// String generates a textual representation of the expression.
|
||||
func (expr *Expression) String(data []byte) string {
|
||||
func (expr *Expression) String(source []byte) string {
|
||||
builder := strings.Builder{}
|
||||
expr.write(&builder, data)
|
||||
expr.write(&builder, source)
|
||||
return builder.String()
|
||||
}
|
||||
|
||||
// write generates a textual representation of the expression.
|
||||
func (expr *Expression) write(builder *strings.Builder, data []byte) {
|
||||
func (expr *Expression) write(builder *strings.Builder, source []byte) {
|
||||
if expr.IsLeaf() {
|
||||
builder.WriteString(expr.Token.Text(data))
|
||||
builder.WriteString(expr.Token.Text(source))
|
||||
return
|
||||
}
|
||||
|
||||
@ -135,12 +135,12 @@ func (expr *Expression) write(builder *strings.Builder, data []byte) {
|
||||
case token.Array:
|
||||
builder.WriteString("@")
|
||||
default:
|
||||
builder.WriteString(expr.Token.Text(data))
|
||||
builder.WriteString(expr.Token.Text(source))
|
||||
}
|
||||
|
||||
for _, child := range expr.Children {
|
||||
builder.WriteByte(' ')
|
||||
child.write(builder, data)
|
||||
child.write(builder, source)
|
||||
}
|
||||
|
||||
builder.WriteByte(')')
|
||||
|
Reference in New Issue
Block a user