@@ -174,9 +174,10 @@ TEST_CASE("Token check test", "[general]")
174
174
175
175
TEST_CASE (" Lambda action test" , " [general]" )
176
176
{
177
- parser parser (
178
- " START <- (CHAR)* "
179
- " CHAR <- . " );
177
+ parser parser (R"(
178
+ START <- (CHAR)*
179
+ CHAR <- .
180
+ )" );
180
181
181
182
string ss;
182
183
parser[" CHAR" ] = [&](const SemanticValues& sv) {
@@ -370,12 +371,12 @@ TEST_CASE("Skip token test2", "[general]")
370
371
371
372
TEST_CASE (" Backtracking test" , " [general]" )
372
373
{
373
- parser parser (
374
- " START <- PAT1 / PAT2 "
375
- " PAT1 <- HELLO ' One' "
376
- " PAT2 <- HELLO ' Two' "
377
- " HELLO <- 'Hello' "
378
- );
374
+ peg:: parser parser ( R" (
375
+ START <- PAT1 / PAT2
376
+ PAT1 <- HELLO ' One'
377
+ PAT2 <- HELLO ' Two'
378
+ HELLO <- 'Hello'
379
+ )" ) ;
379
380
380
381
size_t count = 0 ;
381
382
parser[" HELLO" ] = [&](const SemanticValues& /* sv*/ ) {
@@ -429,11 +430,12 @@ TEST_CASE("mutable lambda test", "[general]")
429
430
430
431
TEST_CASE (" Simple calculator test" , " [general]" )
431
432
{
432
- auto syntax =
433
- " Additive <- Multitive '+' Additive / Multitive "
434
- " Multitive <- Primary '*' Multitive / Primary "
435
- " Primary <- '(' Additive ')' / Number "
436
- " Number <- [0-9]+ " ;
433
+ auto syntax = R"(
434
+ Additive <- Multitive '+' Additive / Multitive
435
+ Multitive <- Primary '*' Multitive / Primary
436
+ Primary <- '(' Additive ')' / Number
437
+ Number <- [0-9]+
438
+ )" ;
437
439
438
440
parser parser (syntax);
439
441
@@ -509,15 +511,15 @@ TEST_CASE("Calculator test", "[general]")
509
511
TEST_CASE (" Calculator test2" , " [general]" )
510
512
{
511
513
// Parse syntax
512
- auto syntax =
513
- " # Grammar for Calculator...\n "
514
- " EXPRESSION <- TERM (TERM_OPERATOR TERM)* "
515
- " TERM <- FACTOR (FACTOR_OPERATOR FACTOR)* "
516
- " FACTOR <- NUMBER / '(' EXPRESSION ')' "
517
- " TERM_OPERATOR <- [-+] "
518
- " FACTOR_OPERATOR <- [/*] "
519
- " NUMBER <- [0-9]+ "
520
- ;
514
+ auto syntax = R"(
515
+ # Grammar for Calculator...
516
+ EXPRESSION <- TERM (TERM_OPERATOR TERM)*
517
+ TERM <- FACTOR (FACTOR_OPERATOR FACTOR)*
518
+ FACTOR <- NUMBER / '(' EXPRESSION ')'
519
+ TERM_OPERATOR <- [-+]
520
+ FACTOR_OPERATOR <- [/*]
521
+ NUMBER <- [0-9]+
522
+ )" ;
521
523
522
524
string start;
523
525
auto grammar = ParserGenerator::parse (syntax, strlen (syntax), start, nullptr );
@@ -555,15 +557,15 @@ TEST_CASE("Calculator test2", "[general]")
555
557
TEST_CASE (" Calculator test3" , " [general]" )
556
558
{
557
559
// Parse syntax
558
- parser parser (
559
- " # Grammar for Calculator...\n "
560
- " EXPRESSION <- TERM (TERM_OPERATOR TERM)* "
561
- " TERM <- FACTOR (FACTOR_OPERATOR FACTOR)* "
562
- " FACTOR <- NUMBER / '(' EXPRESSION ')' "
563
- " TERM_OPERATOR <- [-+] "
564
- " FACTOR_OPERATOR <- [/*] "
565
- " NUMBER <- [0-9]+ "
566
- );
560
+ parser parser (R"(
561
+ # Grammar for Calculator...
562
+ EXPRESSION <- TERM (TERM_OPERATOR TERM)*
563
+ TERM <- FACTOR (FACTOR_OPERATOR FACTOR)*
564
+ FACTOR <- NUMBER / '(' EXPRESSION ')'
565
+ TERM_OPERATOR <- [-+]
566
+ FACTOR_OPERATOR <- [/*]
567
+ NUMBER <- [0-9]+
568
+ )" );
567
569
568
570
auto reduce = [](const SemanticValues& sv) -> long {
569
571
long ret = sv[0 ].get <long >();
@@ -596,15 +598,15 @@ TEST_CASE("Calculator test3", "[general]")
596
598
597
599
TEST_CASE (" Calculator test with AST" , " [general]" )
598
600
{
599
- parser parser (
600
- " EXPRESSION <- _ TERM (TERM_OPERATOR TERM)* "
601
- " TERM <- FACTOR (FACTOR_OPERATOR FACTOR)* "
602
- " FACTOR <- NUMBER / '(' _ EXPRESSION ')' _ "
603
- " TERM_OPERATOR <- < [-+] > _ "
604
- " FACTOR_OPERATOR <- < [/*] > _ "
605
- " NUMBER <- < [0-9]+ > _ "
606
- " ~_ <- [ \t\r\n ]* "
607
- );
601
+ parser parser (R"(
602
+ EXPRESSION <- _ TERM (TERM_OPERATOR TERM)*
603
+ TERM <- FACTOR (FACTOR_OPERATOR FACTOR)*
604
+ FACTOR <- NUMBER / '(' _ EXPRESSION ')' _
605
+ TERM_OPERATOR <- < [-+] > _
606
+ FACTOR_OPERATOR <- < [/*] > _
607
+ NUMBER <- < [0-9]+ > _
608
+ ~_ <- [ \t\r\n]*
609
+ )" );
608
610
609
611
parser.enable_ast ();
610
612
@@ -639,12 +641,12 @@ TEST_CASE("Calculator test with AST", "[general]")
639
641
640
642
TEST_CASE (" Ignore semantic value test" , " [general]" )
641
643
{
642
- parser parser (
643
- " START <- ~HELLO WORLD "
644
- " HELLO <- 'Hello' _ "
645
- " WORLD <- 'World' _ "
646
- " _ <- [ \t\r\n ]* "
647
- );
644
+ parser parser (R"(
645
+ START <- ~HELLO WORLD
646
+ HELLO <- 'Hello' _
647
+ WORLD <- 'World' _
648
+ _ <- [ \t\r\n]*
649
+ )" ) ;
648
650
649
651
parser.enable_ast ();
650
652
@@ -658,13 +660,13 @@ TEST_CASE("Ignore semantic value test", "[general]")
658
660
659
661
TEST_CASE (" Ignore semantic value of 'or' predicate test" , " [general]" )
660
662
{
661
- parser parser (
662
- " START <- _ !DUMMY HELLO_WORLD '.' "
663
- " HELLO_WORLD <- HELLO 'World' _ "
664
- " HELLO <- 'Hello' _ "
665
- " DUMMY <- 'dummy' _ "
666
- " ~_ <- [ \t\r\n ]* "
667
- );
663
+ parser parser (R"(
664
+ START <- _ !DUMMY HELLO_WORLD '.'
665
+ HELLO_WORLD <- HELLO 'World' _
666
+ HELLO <- 'Hello' _
667
+ DUMMY <- 'dummy' _
668
+ ~_ <- [ \t\r\n]*
669
+ )" );
668
670
669
671
parser.enable_ast ();
670
672
@@ -678,12 +680,12 @@ TEST_CASE("Ignore semantic value of 'or' predicate test", "[general]")
678
680
679
681
TEST_CASE (" Ignore semantic value of 'and' predicate test" , " [general]" )
680
682
{
681
- parser parser (
682
- " START <- _ &HELLO HELLO_WORLD '.' "
683
- " HELLO_WORLD <- HELLO 'World' _ "
684
- " HELLO <- 'Hello' _ "
685
- " ~_ <- [ \t\r\n ]* "
686
- );
683
+ parser parser (R"(
684
+ START <- _ &HELLO HELLO_WORLD '.'
685
+ HELLO_WORLD <- HELLO 'World' _
686
+ HELLO <- 'Hello' _
687
+ ~_ <- [ \t\r\n]*
688
+ )" ) ;
687
689
688
690
parser.enable_ast ();
689
691
@@ -749,19 +751,19 @@ TEST_CASE("Literal token on AST test3", "[general]")
749
751
750
752
TEST_CASE (" Missing missing definitions test" , " [general]" )
751
753
{
752
- parser parser (
753
- " A <- B C "
754
- );
754
+ parser parser (R"(
755
+ A <- B C
756
+ )" ) ;
755
757
756
758
REQUIRE (!parser);
757
759
}
758
760
759
761
TEST_CASE (" Definition duplicates test" , " [general]" )
760
762
{
761
- parser parser (
762
- " A <- ''"
763
- " A <- ''"
764
- );
763
+ parser parser (R"(
764
+ A <- ''
765
+ A <- ''
766
+ )" ) ;
765
767
766
768
REQUIRE (!parser);
767
769
}
@@ -1030,29 +1032,29 @@ TEST_CASE("Backreference with Option test", "[backreference]")
1030
1032
1031
1033
TEST_CASE (" Left recursive test" , " [left recursive]" )
1032
1034
{
1033
- parser parser (
1034
- " A <- A 'a'"
1035
- " B <- A 'a'"
1036
- );
1035
+ parser parser (R"(
1036
+ A <- A 'a'
1037
+ B <- A 'a'
1038
+ )" ) ;
1037
1039
1038
1040
REQUIRE (!parser);
1039
1041
}
1040
1042
1041
1043
TEST_CASE (" Left recursive with option test" , " [left recursive]" )
1042
1044
{
1043
- parser parser (
1044
- " A <- 'a' / 'b'? B 'c' "
1045
- " B <- A "
1046
- );
1045
+ parser parser (R"(
1046
+ A <- 'a' / 'b'? B 'c'
1047
+ B <- A
1048
+ )" ) ;
1047
1049
1048
1050
REQUIRE (!parser);
1049
1051
}
1050
1052
1051
1053
TEST_CASE (" Left recursive with zom test" , " [left recursive]" )
1052
1054
{
1053
- parser parser (
1054
- " A <- 'a'* A* "
1055
- );
1055
+ parser parser (R"(
1056
+ A <- 'a'* A*
1057
+ )" ) ;
1056
1058
1057
1059
REQUIRE (!parser);
1058
1060
}
0 commit comments