42 lines
		
	
	
		
			545 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			545 B
		
	
	
	
		
			Go
		
	
	
	
package wavefront
 | 
						|
 | 
						|
type Token int
 | 
						|
 | 
						|
const (
 | 
						|
	// Special tokens
 | 
						|
	ILLEGAL Token = iota
 | 
						|
	EOF
 | 
						|
	WS
 | 
						|
 | 
						|
	// Literals
 | 
						|
	literal_beg
 | 
						|
	LETTER // metric name, source/point tags
 | 
						|
	NUMBER
 | 
						|
	MINUS_SIGN
 | 
						|
	UNDERSCORE
 | 
						|
	DOT
 | 
						|
	SLASH
 | 
						|
	BACKSLASH
 | 
						|
	COMMA
 | 
						|
	literal_end
 | 
						|
 | 
						|
	// Misc characters
 | 
						|
	QUOTES
 | 
						|
	EQUALS
 | 
						|
	NEWLINE
 | 
						|
)
 | 
						|
 | 
						|
func isWhitespace(ch rune) bool {
 | 
						|
	return ch == ' ' || ch == '\t' || ch == '\n'
 | 
						|
}
 | 
						|
 | 
						|
func isLetter(ch rune) bool {
 | 
						|
	return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
 | 
						|
}
 | 
						|
 | 
						|
func isNumber(ch rune) bool {
 | 
						|
	return ch >= '0' && ch <= '9'
 | 
						|
}
 | 
						|
 | 
						|
var eof = rune(0)
 |