【发布时间】:2016-03-30 05:25:58
【问题描述】:
我希望应用一系列 nom 解析器并返回匹配的完整 &str。我想匹配a+bc+ 形式的字符串。使用现有的chain! macro 我可以非常接近:
named!(aaabccc <&[u8], &str>,
map_res!(
chain!(
a: take_while!(is_a) ~
tag!("b") ~
take_while!(is_c) ,
|| {a}
),
from_utf8
));
在哪里
fn is_a(l: u8) -> bool {
match l {
b'a' => true,
_ => false,
}
}
fn is_c(l: u8) -> bool {
match l {
b'c' => true,
_ => false,
}
}
假设我们有“aaabccc”作为输入。上面的解析器将匹配输入,但只会返回“aaa”。我想做的是返回原始输入“aaabccc”。
chain! 不是正确的宏,但没有另一个看起来更正确的宏。最好的方法是什么?
在撰写本文时,我使用的是 nom 1.2.2 和 rustc 1.9.0-nightly (a1e29daf1 2016-03-25)。
【问题讨论】: