// % can be repeated any number of times and is 
// converted into an integer with one 0 per % char
% can be repeated any number of times and is
converted into an integer with one 0 per % char
% can be repeated any number of times and is converted into an integer with one 0 per % char
fn tokenize_percent(tokens: &mut Vec<Token>, iter: &mut std::str::Chars, cnt: u32) {
    let curr = iter.next();
    match curr {
        Some(c) => match c {
            '%' => return tokenize_percent(tokens, iter, cnt + 1),
            _ => {
                tokens.push(Token::Num((10 as i64).pow(cnt as u32)));
                let curr = iter.next();
                return tokenize(tokens, iter, &curr);
            }
        },
        None => {
            tokens.push(Token::Num((10 as i64).pow(cnt as u32)));
            return tokenize(tokens, iter, &curr);
        }
    }
}
fn tokenize_percent ( tokens : & mut Vec < Token > , iter : & mut std :: str :: Chars , cnt : u32 ) { let curr = iter . next ( ) ; match curr { Some ( c ) => match c { '%' => return tokenize_percent ( tokens , iter , cnt + 1 ) , _ => { tokens . push ( Token :: Num ( ( 10 as i64 ) . pow ( cnt as u32 ) ) ) ; let curr = iter . next ( ) ; return tokenize ( tokens , iter , & curr ) ; } } , None => { tokens . push ( Token :: Num ( ( 10 as i64 ) . pow ( cnt as u32 ) ) ) ; return tokenize ( tokens , iter , & curr ) ; } } }
% can be repeated any number of times and is
converted into an integer with one 0 per % char
% can be repeated any number of times and is converted into an integer with one 0 per % char
tokens
&mut Vec<Token>
iter
&mut std::str::Chars
cnt
u32