func lexIdentifier(t *Tokeniser) stateFunc {
	for r, w := t.currentRune(); isAlphaNumeric(r); r, w = t.currentRune() {
		t.advance(w)
	}
	r, _ := t.currentRune()
	if !runeIsIdentifierTerminator(r) {
		t.emitErrorf("Bad character: %#U", r)
		return nil
	}
	word := t.Input[t.start:t.pos]
	switch {
	case keywordBegin < keywords[word] && keywords[word] < keywordEnd:
		t.emit(keywords[word])
	default:
		t.emit(NAME)
	}
	return lexCode
}
// lexIdentifier scans an alphanumeric word
lexIdentifier scans an alphanumeric word
// lexIdentifier scans an alphanumeric word
func lexIdentifier(t *Tokeniser) stateFunc {
	for r, w := t.currentRune(); isAlphaNumeric(r); r, w = t.currentRune() {
		t.advance(w)
	}
	r, _ := t.currentRune()
	if !runeIsIdentifierTerminator(r) {
		t.emitErrorf("Bad character: %#U", r)
		return nil
	}
	word := t.Input[t.start:t.pos]
	switch {
	case keywordBegin < keywords[word] && keywords[word] < keywordEnd:
		t.emit(keywords[word])
	default:
		t.emit(NAME)
	}
	return lexCode
}
func lexIdentifier ( t * Tokeniser ) stateFunc { for r , w := t . currentRune ( ) ; isAlphaNumeric ( r ) ; r , w = t . currentRune ( ) { t . advance ( w ) } r , _ := t . currentRune ( ) if ! runeIsIdentifierTerminator ( r ) { t . emitErrorf ( " " , r ) return nil } word := t . Input [ t . start : t . pos ] switch { case keywordBegin < keywords [ word ] && keywords [ word ] < keywordEnd : t . emit ( keywords [ word ] ) default : t . emit ( NAME ) } return lexCode }
lexIdentifier scans an alphanumeric word
lexIdentifier scans an alphanumeric word