def test_basic(self): parse1 = peg("Hello World") with require: parse1.parse_string("Hello World").output == 'Hello World' parse1.parse_string("Hello, World").index == 0 parse2 = peg(("Hello World", (".").r)) with require: parse2.parse_string("Hello World").index == 11 parse2.parse_string("Hello World1").output == ['Hello World', '1'] parse2.parse_string("Hello World ").output == ['Hello World', ' ']
def test_conversion(self): parse1 = peg((("Hello World", "!".rep1) // f(_[1]))) with require: parse1.parse_string("Hello World!!!").output == ['!', '!', '!'] parse1.parse_string("Hello World").index == 11 parse2 = parse1 // len with require: parse2.parse_string("Hello World!!!").output == 3
def test_operators(self): parse1 = peg("Hello World") parse2 = peg((parse1, "!".rep1)) with require: parse2.parse_string("Hello World!!!").output == [ 'Hello World', ['!', '!', '!'] ] parse2.parse_string("Hello World!").output == [ 'Hello World', ['!'] ] parse2.parse_string("Hello World").index == 11 parse3 = peg((parse1, ("!" | "?"))) with require: parse3.parse_string("Hello World!").output == ['Hello World', '!'] parse3.parse_string("Hello World?").output == ['Hello World', '?'] parse3.parse_string("Hello World%").index == 11 parse4 = peg((parse1, "!".rep & "!!!")) with require: parse4.parse_string("Hello World!!!").output == [ 'Hello World', ['!', '!', '!'] ] parse4.parse_string("Hello World!!").index == 11 parse4 = peg((parse1, "!".rep & "!!!")) with require: parse4.parse_string("Hello World!!!").output == [ "Hello World", ["!", "!", "!"] ] parse5 = peg((parse1, "!".rep & - "!!!")) with require: parse5.parse_string("Hello World!!").output == [ "Hello World", ['!', '!'] ] parse5.parse_string("Hello World!!!").index == 11 parse6 = peg((parse1, "!" * 3)) with require: parse6.parse_string("Hello World!").index == 12 parse6.parse_string("Hello World!!").index == 13 parse6.parse_string("Hello World!!!").output == [ "Hello World", ['!', '!', '!'] ] parse6.parse_string("Hello World!!!!").index == 14
def test_operators(self): parse1 = peg("Hello World") parse2 = peg((parse1, "!".rep1)) with require: parse2.parse_string("Hello World!!!").output == ['Hello World', ['!', '!', '!']] parse2.parse_string("Hello World!").output == ['Hello World', ['!']] parse2.parse_string("Hello World").index == 11 parse3 = peg((parse1, ("!" | "?"))) with require: parse3.parse_string("Hello World!").output == ['Hello World', '!'] parse3.parse_string("Hello World?").output == ['Hello World', '?'] parse3.parse_string("Hello World%").index == 11 parse4 = peg((parse1, "!".rep & "!!!")) with require: parse4.parse_string("Hello World!!!").output == ['Hello World', ['!', '!', '!']] parse4.parse_string("Hello World!!").index == 11 parse4 = peg((parse1, "!".rep & "!!!")) with require: parse4.parse_string("Hello World!!!").output == ["Hello World", ["!", "!", "!"]] parse5 = peg((parse1, "!".rep & -"!!!")) with require: parse5.parse_string("Hello World!!").output == ["Hello World", ['!', '!']] parse5.parse_string("Hello World!!!").index == 11 parse6 = peg((parse1, "!" * 3)) with require: parse6.parse_string("Hello World!").index == 12 parse6.parse_string("Hello World!!").index == 13 parse6.parse_string("Hello World!!!").output == ["Hello World", ['!', '!', '!']] parse6.parse_string("Hello World!!!!").index == 14