func lexShell(x *lexing.Lexer) *lexing.Token { r := x.Rune() if x.IsWhite(r) { panic("incorrect token start") } switch r { case '"': return lexing.LexString(x, String, '"') } if isBareRune(r) { return lexBare(x) } x.Errorf("illegal char %q", r) x.Next() return x.MakeToken(lexing.Illegal) }