func lexIdentifier(l *lexer) stateFn {
Loop:
	for {
		switch r := l.next(); {
		case isAlphaNumeric(r):
			// absorb.
		default:
			l.backup()
			word := l.input[l.start:l.pos]
			if !l.atTerminator() {
				return l.errorf("bad character %#U", r)
			}
			switch {
			case key[word] > itemKeyword:
				l.emit(key[word])
			case word[0] == '.':
				l.emit(itemField)
			case word == "true", word == "false":
				l.emit(itemBool)
			default:
				l.emit(itemIdentifier)
			}
			break Loop
		}
	}
	return lexInsideAction
}
// lexIdentifier scans an alphanumeric.
lexIdentifier scans an alphanumeric.
// lexIdentifier scans an alphanumeric .
func lexIdentifier(l *lexer) stateFn {
Loop:
	for {
		switch r := l.next(); {
		case isAlphaNumeric(r):
		default:
			l.backup()
			word := l.input[l.start:l.pos]
			if !l.atTerminator() {
				return l.errorf("bad character %#U", r)
			}
			switch {
			case key[word] > itemKeyword:
				l.emit(key[word])
			case word[0] == '.':
				l.emit(itemField)
			case word == "true", word == "false":
				l.emit(itemBool)
			default:
				l.emit(itemIdentifier)
			}
			break Loop
		}
	}
	return lexInsideAction
}
func lexIdentifier ( l * lexer ) stateFn { Loop : for { switch r := l . next ( ) ; { case isAlphaNumeric ( r ) : default : l . backup ( ) word := l . input [ l . start : l . pos ] if ! l . atTerminator ( ) { return l . errorf ( " " , r ) } switch { case key [ word ] > itemKeyword : l . emit ( key [ word ] ) case word [ 0 ] == '.' : l . emit ( itemField ) case word == " " , word == " " : l . emit ( itemBool ) default : l . emit ( itemIdentifier ) } break Loop } } return lexInsideAction }
lexIdentifier scans an alphanumeric.
lexIdentifier scans an alphanumeric .
// absorb.