43 lines
1.4 KiB
Go
43 lines
1.4 KiB
Go
package lexer
|
|
|
|
import "github.com/mmakaay/toml/parser"
|
|
|
|
// Definition of the item types that are emitted by this parser.
|
|
const (
|
|
ItemComment parser.ItemType = iota // An error occurred
|
|
ItemKey // Key of a key/value pair
|
|
ItemKeyDot // Dot for a dotted key
|
|
ItemAssignment // Value assignment coming up (=)
|
|
ItemString // A value of type string
|
|
)
|
|
|
|
const (
|
|
whitespace string = " \t"
|
|
carriageReturn string = "\r"
|
|
newline string = "\n"
|
|
hash string = "#"
|
|
equal string = "="
|
|
lower string = "abcdefghijklmnopqrstuvwxyz"
|
|
upper string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
digits string = "0123456789"
|
|
hex string = digits + "abcdefABCDEF"
|
|
dot string = "."
|
|
underscore string = "_"
|
|
dash string = "-"
|
|
singleQuote string = "'"
|
|
doubleQuote string = "\""
|
|
backslash string = "\\"
|
|
quoteChars string = singleQuote + doubleQuote
|
|
bareKeyChars string = lower + upper + digits + underscore + dash
|
|
startOfKey string = bareKeyChars + quoteChars
|
|
escapeChars string = `btnfr"\`
|
|
shortUtf8Escape string = "u"
|
|
longUtf8Escape string = "U"
|
|
)
|
|
|
|
// NewParser creates a new parser, using the provided input string
|
|
// as the data to parse.
|
|
func NewParser(input string) *parser.Parser {
|
|
return parser.New(input, stateKeyValuePair)
|
|
}
|