func (t Token) String() string {
	result := ""
	if dumpTokenPos {
		result += fmt.Sprintf("%d:", t.Pos)
	}
	result += fmt.Sprintf("%s", t.Kind)
	if (dumpAllTokensVal || (t.Kind >= TokenContent)) && len(t.Val) > 0 {
		if len(t.Val) > 100 {
			result += fmt.Sprintf("{%.20q...}", t.Val)
		} else {
			result += fmt.Sprintf("{%q}", t.Val)
		}
	}
	return result
}
String returns the token string representation for debugging.
package lexer
import "fmt"
const (
	TokenError TokenKind = iota
	TokenEOF
	TokenOpen
	TokenClose
	TokenOpenRawBlock
	TokenCloseRawBlock
	TokenOpenEndRawBlock
	TokenOpenUnescaped
	TokenCloseUnescaped
	TokenOpenBlock
	TokenOpenEndBlock
	TokenInverse
	TokenOpenInverse
	TokenOpenInverseChain
	TokenOpenPartial
	TokenComment
	TokenOpenSexpr
	TokenCloseSexpr
	TokenEquals
	TokenData
	TokenSep
	TokenOpenBlockParams
	TokenCloseBlockParams
	TokenContent
	TokenID
	TokenString
	TokenNumber
	TokenBoolean
)
const (
	dumpTokenPos = false
	dumpAllTokensVal = true
)
type TokenKind int
type Token struct {
	Kind TokenKind  
	Val  string     
	Pos  int  
	Line int  
}
var tokenName = map[TokenKind]string{
	TokenError:            "Error",
	TokenEOF:              "EOF",
	TokenContent:          "Content",
	TokenComment:          "Comment",
	TokenOpen:             "Open",
	TokenClose:            "Close",
	TokenOpenUnescaped:    "OpenUnescaped",
	TokenCloseUnescaped:   "CloseUnescaped",
	TokenOpenBlock:        "OpenBlock",
	TokenOpenEndBlock:     "OpenEndBlock",
	TokenOpenRawBlock:     "OpenRawBlock",
	TokenCloseRawBlock:    "CloseRawBlock",
	TokenOpenEndRawBlock:  "OpenEndRawBlock",
	TokenOpenBlockParams:  "OpenBlockParams",
	TokenCloseBlockParams: "CloseBlockParams",
	TokenInverse:          "Inverse",
	TokenOpenInverse:      "OpenInverse",
	TokenOpenInverseChain: "OpenInverseChain",
	TokenOpenPartial:      "OpenPartial",
	TokenOpenSexpr:        "OpenSexpr",
	TokenCloseSexpr:       "CloseSexpr",
	TokenID:               "ID",
	TokenEquals:           "Equals",
	TokenString:           "String",
	TokenNumber:           "Number",
	TokenBoolean:          "Boolean",
	TokenData:             "Data",
	TokenSep:              "Sep",
}
func (k TokenKind) String() string {
	s := tokenName[k]
	if s == "" {
		return fmt.Sprintf("Token-%d", int(k))
	}
	return s
}