gpt4 book ai didi

macros - 我可以通过宏中的多个规则重复匹配吗?

转载 作者:行者123 更新时间:2023-11-29 08:05:54 27 4
gpt4 key购买 nike

我可以在 Rust 宏中重复匹配吗?我希望能够做类似的事情:

my_dsl! {
foo <other tokens>;
bar <other tokens>;
foo <other tokens>;
...
}

基本上,任意数量的分号分隔语句,每个语句由不同的规则处理。

我知道我可以有几个foo!() , bar!()宏 - 每个语句,但理想情况下我想避免这种情况。

我在想我是否可以捕获像 $($t:tt)*, 这样的东西但不包括分号,然后委托(delegate)给其他宏?

最佳答案

你应该阅读 The Little Book of Rust Macros专门针对您的问题 section 4.2: Incremental TT munchers .

例如:

macro_rules! my_dsl {
() => {};
(foo $name:ident; $($tail:tt)*) => {
{
println!(concat!("foo ", stringify!($name));
my_dsl!($($tail)*);
}
};
(bar $name:ident; $($tail:tt)*) => {
{
println!(concat!("bar ", stringify!($name));
my_dsl!($($tail)*);
}
};
}

关于macros - 我可以通过宏中的多个规则重复匹配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53736801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com