2015-05-05 01:04:17 +08:00
|
|
|
// Package parse provides facilities for parsing configuration files.
|
|
|
|
package parse
|
|
|
|
|
|
|
|
import "io"
|
|
|
|
|
|
|
|
// ServerBlocks parses the input just enough to organize tokens,
|
|
|
|
// in order, by server block. No further parsing is performed.
|
|
|
|
// Server blocks are returned in the order in which they appear.
|
2015-08-02 03:08:31 +08:00
|
|
|
func ServerBlocks(filename string, input io.Reader) ([]ServerBlock, error) {
|
2015-05-05 01:04:17 +08:00
|
|
|
p := parser{Dispenser: NewDispenser(filename, input)}
|
|
|
|
blocks, err := p.parseAll()
|
|
|
|
return blocks, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// allTokens lexes the entire input, but does not parse it.
|
|
|
|
// It returns all the tokens from the input, unstructured
|
|
|
|
// and in order.
|
|
|
|
func allTokens(input io.Reader) (tokens []token) {
|
|
|
|
l := new(lexer)
|
|
|
|
l.load(input)
|
|
|
|
for l.next() {
|
|
|
|
tokens = append(tokens, l.token)
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2015-05-22 05:42:49 +08:00
|
|
|
// Set of directives that are valid (unordered). Populated
|
|
|
|
// by config package's init function.
|
2015-05-05 01:04:17 +08:00
|
|
|
var ValidDirectives = make(map[string]struct{})
|