oni_comb_parser_rs::prelude

Function surround

Source
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>
where A: Clone + Debug + 'a, B: Clone + Debug + 'a, C: Clone + Debug + 'a,
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");