fn read_atom<Chars: Iterator<Item=char>>(buffer: &mut TokenReadBuffer<Chars>, location: FileLocation) -> (Token, String, FileLocation) {
    loop {
        let next_char = buffer.read_next();

        match next_char {
            Some(chr)       => {
                if !chr.is_alphanumeric() && chr != '_' {
                    buffer.push_back();
                    break;
                }
            }
            None            => break,
        }
    }

    (Token::Atom, buffer.read_characters(), buffer.update_location(location))
}
///
/// After reading an alphabetic character, reads the rest of the atom value
///
After reading an alphabetic character, reads the rest of the atom value
After reading an alphabetic character reads the rest of the atom value
fn read_atom<Chars: Iterator<Item=char>>(buffer: &mut TokenReadBuffer<Chars>, location: FileLocation) -> (Token, String, FileLocation) {
    loop {
        let next_char = buffer.read_next();
        match next_char {
            Some(chr)       => {
                if !chr.is_alphanumeric() && chr != '_' {
                    buffer.push_back();
                    break;
                }
            }
            None            => break,
        }
    }
    (Token::Atom, buffer.read_characters(), buffer.update_location(location))
}
fn read_atom < Chars : Iterator < Item = char > > ( buffer : & mut TokenReadBuffer < Chars > , location : FileLocation ) -> ( Token , String , FileLocation ) { loop { let next_char = buffer . read_next ( ) ; match next_char { Some ( chr ) => { if ! chr . is_alphanumeric ( ) && chr != '_' { buffer . push_back ( ) ; break ; } } None => break , } } ( Token :: Atom , buffer . read_characters ( ) , buffer . update_location ( location ) ) }
After reading an alphabetic character, reads the rest of the atom value
After reading an alphabetic character reads the rest of the atom value
buffer
&mut TokenReadBuffer<Chars>
location
FileLocation
buffer
&mut TokenReadBuffer<Chars>
location
FileLocation