pub fn surround<'a, I, A, B, C>(
lp: Parser<'a, I, A>,
parser: Parser<'a, I, B>,
rp: Parser<'a, I, C>,
) -> Parser<'a, I, B>
Expand description
Return a Parser that skips the previous and following Parsers.
前後のパーサーをスキップするパーサーを返す。
- lp: 左側のパーサー
- parser: 中央のパーサー
- rp: 右側のパーサー
§Example
use std::iter::FromIterator;
use oni_comb_parser_rs::prelude::*;
let text: &str = "(abc)";
let input = text.chars().collect::<Vec<_>>();
let parser: Parser<char, &str> = surround(elm('('), tag("abc"), elm(')'));
let result: ParseResult<char, &str> = parser.parse(&input);
assert!(result.is_success());
assert_eq!(result.success().unwrap(), "abc");