|
|
- 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 == '=')
- }
|