public Token scanIdentifier() {
        if ('`' == charAt(offset)) {
            int length = getLengthUntilTerminatedChar('`');
            return new Token(Literals.IDENTIFIER, input.substring(offset, offset + length), offset + length);
        }
        if ('"' == charAt(offset)) {
            int length = getLengthUntilTerminatedChar('"');
            return new Token(Literals.IDENTIFIER, input.substring(offset, offset + length), offset + length);
        }
        if ('[' == charAt(offset)) {
            int length = getLengthUntilTerminatedChar(']');
            return new Token(Literals.IDENTIFIER, input.substring(offset, offset + length), offset + length);
        }
        int length = 0;
        while (isIdentifierChar(charAt(offset + length))) {
            length++;
        }
        String literals = input.substring(offset, offset + length);
        if (isAmbiguousIdentifier(literals)) {
            return new Token(processAmbiguousIdentifier(offset + length, literals), literals, offset + length);
        }
        return new Token(dictionary.findTokenType(literals, Literals.IDENTIFIER), literals, offset + length);
    }
public Token scanIdentifier ( ) { if ( '`' == charAt ( offset ) ) { int length = getLengthUntilTerminatedChar ( '`' ) ; return new Token ( Literals . IDENTIFIER , input . substring ( offset , offset + length ) , offset + length ) ; } if ( '"' == charAt ( offset ) ) { int length = getLengthUntilTerminatedChar ( '"' ) ; return new Token ( Literals . IDENTIFIER , input . substring ( offset , offset + length ) , offset + length ) ; } if ( '[' == charAt ( offset ) ) { int length = getLengthUntilTerminatedChar ( ']' ) ; return new Token ( Literals . IDENTIFIER , input . substring ( offset , offset + length ) , offset + length ) ; } int length = 0 ; while ( isIdentifierChar ( charAt ( offset + length ) ) ) { length ++ ; } String literals = input . substring ( offset , offset + length ) ; if ( isAmbiguousIdentifier ( literals ) ) { return new Token ( processAmbiguousIdentifier ( offset + length , literals ) , literals , offset + length ) ; } return new Token ( dictionary . findTokenType ( literals , Literals . IDENTIFIER ) , literals , offset + length ) ; }
scan identifier.

@return identifier token