gpt4 book ai didi

macros - nom如何在宏指示符位置进行宏调用?

转载 作者:行者123 更新时间:2023-11-29 08:07:30 25 4
gpt4 key购买 nike

在以下示例中,取自 nom,参数 $submac 具有 ident!( $($args:tt)* )在指示符位置。我的印象是 ident!(...) 是一个宏调用,但据我所知 nom 没有定义一个名为 的宏身份。 Rust 关于宏的文档没有指定宏调用甚至可以出现在指示符位置。

#[macro_export]
macro_rules! exact (
($i:expr, $submac:ident!( $($args:tt)* )) => ({
terminated!($i, $submac!( $($args)*), eof!())
});
($i:expr, $f:expr) => (
exact!($i, call!($f));
);
);

ident!(...) 的形式语法是什么?

最佳答案

I'm under the impression that ident!(...) is a macro invocation

事实并非如此。不过,它故意看起来像宏调用。添加一个空格可能会使它更明显:

macro_rules! example {
($foo:ident !) => (1);
}

fn main() {
example!(hello!);
}

关于macros - nom如何在宏指示符位置进行宏调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50647598/

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