пытается написать действительно базовый макрос в Rust. Я пытаюсь превратить многострочное объявление (используя nom) в одну строку, так как оно копируется в огромных количествах. Вот макрос, который я пытаюсь определить:
macro_rules! tag_parser {
($name:ident, $tag:expr, $ret:expr) => {
nom::named!(
$name<&str, AnsiSequence>,
nom::do_parse!(
nom::tag!($tag) >>
($ret)
)
);
}
}
А вот пример вызова:
tag_parser!(cursor_restore, "u", AnsiSequence::CursorRestore);
Я получаю следующую ошибку:
error: no rules expected the token `cursor_restore`
--> src/parsers.rs:95:13
|
95 | tag_parser!(cursor_restore, "u", AnsiSequence::CursorRestore);
| ^^^^^^^^^^^^^^^^ no rules expected this token in macro call
Действительно, проблема сосредоточена вокруг первого параметра. По какой-то причине он не позволит мне разместить его так, как у меня внутри макроса. Я не уверен, что это из-за того, что я вызываю другой макрос (с именем!) Или что-то еще. Любая помощь будет принята с благодарностью, спасибо!