package ssh_config import "fmt" type token struct { Position typ tokenType val string } func (t token) String() string { switch t.typ { case tokenEOF: return "EOF" } return fmt.Sprintf("%q", t.val) } type tokenType int const ( eof = -(iota + 1) ) const ( tokenError tokenType = iota tokenEOF tokenEmptyLine tokenComment tokenKey tokenEquals tokenString ) func isSpace(r rune) bool { return r == ' ' || r == '\t' } func isKeyStartChar(r rune) bool { return !(isSpace(r) || r == '\r' || r == '\n' || r == eof) } // I'm not sure that this is correct func isKeyChar(r rune) bool { // Keys start with the first character that isn't whitespace or [ and end // with the last non-whitespace character before the equals sign. Keys // cannot contain a # character." return !(r == '\r' || r == '\n' || r == eof || r == '=') }