From d0e49ad7c8059ab8fb37f99ca964934c2d2b2a86 Mon Sep 17 00:00:00 2001 From: billyct Date: Tue, 27 Apr 2021 15:22:55 +0800 Subject: [PATCH] Add WithoutFreeFloating to printer visitor --- pkg/visitor/printer/printer.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/visitor/printer/printer.go b/pkg/visitor/printer/printer.go index 76e230e9..4bd8d767 100644 --- a/pkg/visitor/printer/printer.go +++ b/pkg/visitor/printer/printer.go @@ -18,6 +18,8 @@ type printer struct { output io.Writer state printerState last []byte + // it will does not print the FreeFloating tokens when it's true + withoutFreeFloating bool } func NewPrinter(output io.Writer) *printer { @@ -31,6 +33,11 @@ func (p *printer) WithState(state printerState) *printer { return p } +func (p *printer) WithoutFreeFloating() *printer { + p.withoutFreeFloating = true + return p +} + func isValidVarName(r byte) bool { return (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '_' || r >= 0x80 } @@ -88,8 +95,10 @@ func (p *printer) printToken(t *token.Token, def []byte) { return } - for _, ff := range t.FreeFloating { - p.write(ff.Value) + if !p.withoutFreeFloating { + for _, ff := range t.FreeFloating { + p.write(ff.Value) + } } p.write(t.Value) }