我正在使用nom。 我想解析用括号括起来的字符串,并允许字符串中有额外嵌套的括号。
因此,(a + b)
将解析为a + b
,而((a + b))
将解析为(a + b)
这对于第一种情况有效,但不适用于嵌套的情况:
pub fn parse_expr(input: &str) -> IResult<&str, &str> {
// TODO: this will fail with nested parentheses, but `rest` doesn't seem to
// be working.
delimited(tag("("), take_until(")"), tag(")"))(input)
}
我尝试使用rest
,但是这并没有考虑最终的)
:
pub fn parse_expr(input: &str) -> IResult<&str, &str> {
delimited(tag("("), rest, tag(")"))(input)
}
感谢您!
input
在括号前面和/或后面会有其他表达式吗?例如,input
是否可能像这样:"(a + b) + (c + d)"? - Adam Comer