gpt4 book ai didi

macros - 调用rust宏时 `error: expected open delimiter`是什么意思?

转载 作者:行者123 更新时间:2023-11-29 08:01:23 26 4
gpt4 key购买 nike

我有这样一个宏:

macro_rules! expect_token (
([$($token:matchers, $result:expr)|+] <= $tokens:ident, $parsed_tokens:ident, $error:expr) => (
match $tokens.pop() {
$(
Some($token) => {
$parsed_tokens.push($token);
$result
},
)+
None => {
$parsed_tokens.reverse();
$tokens.extend($parsed_tokens.into_iter());
return NotComplete;
},
_ => return error(expr)
}
);
)

当我用 expect_token!([Ident(name), name] <= tokens, parsed_tokens, "expected function name in prototype"); 调用它时我收到错误“错误:预期的开放定界符”。

这个错误是什么意思,我做错了什么?

附言如果您想知道像 NotComplete 这样的标识符的定义是什么,你可以看看https://github.com/jauhien/iron-kaleidoscope/blob/master/src/parser.rs ,但据我所知,它与这个问题无关,因为问题不在于宏体,而在于它的调用。

最佳答案

好的,我找到了响应:matchers in macros invocation should be enclosed in the parenthesis。问题在于我将匹配器误解为匹配规则的左侧,而它们是宏规则中 => 的左手边,这在文档中有明确说明。

附言我作为示例给出的整个宏呢,无论如何都是错误的。 )

关于macros - 调用rust宏时 `error: expected open delimiter`是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109277/

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