rust-quiz:022-macro-tokenize-number.rs

godme發表於2022-07-15
macro_rules! m {
    ($a:tt) => { print!("1") };
    ($a:tt $b:tt) => { print!("2") };
    ($a:tt $b:tt $c:tt) => { print!("3") };
    ($a:tt $b:tt $c:tt $d:tt) => { print!("4") };
    ($a:tt $b:tt $c:tt $d:tt $e:tt) => { print!("5") };
    ($a:tt $b:tt $c:tt $d:tt $e:tt $f:tt) => { print!("6") };
    ($a:tt $b:tt $c:tt $d:tt $e:tt $f:tt $g:tt) => { print!("7") };
}

fn main() {
    m!(-1);
    m!(-1.);
    m!(-1.0);
    m!(-1.0e1);
    m!(-1.0e-1);
}
  • -
    負號-是獨立進行解析的,如果不進行特殊宣告,計算的時候也會分離。

    let a = -2i32.pow(2); // -4
    let b = (-2i32).pow(2); // 4
  • integer
    數值都是整體當做一個`token``進行解析。

這裡主要檢測TokenTree的數量,按照上述的原理,其實全部匹配的都是2

22222

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章