Sequence trait

This commit is contained in:
Greg Shuflin
2024-01-26 09:39:46 -08:00
parent 477fc50b65
commit e697b8ed21
2 changed files with 30 additions and 10 deletions

View File

@@ -39,7 +39,7 @@ mod tests {
#[test]
fn test_sequence() {
let parser = sequence(literal("bongo"), sequence(literal(" "), literal("jonzzz")));
let parser = seq2(literal("bongo"), seq2(literal(" "), literal("jonzzz")));
let output = parser.parse("bongo jonzzz").unwrap();
assert_eq!(output.0 .0, "bongo");
assert_eq!(output.0 .1, (" ", "jonzzz"));
@@ -61,7 +61,7 @@ mod tests {
#[test]
fn test_map() {
let parser = map(
sequence(literal("a"), literal("b")),
seq2(literal("a"), literal("b")),
|(_a, _b): (&str, &str)| 59,
);
let output = parser.parse("abcd").unwrap();
@@ -70,16 +70,16 @@ mod tests {
#[test]
fn test_combinators() {
let parser = sequence(map(repeated(literal_char('a')), |_| 10), literal_char('b'));
let parser = seq2(map(repeated(literal_char('a')), |_| 10), literal_char('b'));
let output = parser.parse("aaaaaaaabcd").unwrap();
assert_eq! {((10, 'b'), "cd"), output};
}
#[test]
fn test_optional() {
let parser = sequence(
let parser = seq2(
optional(literal("alpha")),
sequence(repeated(literal(" ")), literal("beta")),
seq2(repeated(literal(" ")), literal("beta")),
);
let output1 = parser.parse(" beta").unwrap();