Skip to content

Commit 2d276c8

Browse files
committed
1 parent ac8c93f commit 2d276c8

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

peglib.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2374,6 +2374,9 @@ inline void DetectLeftRecursion::visit(Reference& ope) {
23742374
refs_.insert(ope.name_);
23752375
if (ope.rule_) {
23762376
ope.rule_->accept(*this);
2377+
if (done_ == false) {
2378+
return;
2379+
}
23772380
}
23782381
}
23792382
done_ = true;

test/test.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,6 +1032,17 @@ TEST_CASE("Left recursive with zom test", "[left recursive]")
10321032
REQUIRE(!parser);
10331033
}
10341034

1035+
TEST_CASE("Left recursive with a ZOM content rule", "[left recursive]")
1036+
{
1037+
parser parser(R"(
1038+
A <- B
1039+
B <- _ A
1040+
_ <- ' '* # Zero or more
1041+
)");
1042+
1043+
REQUIRE(!parser);
1044+
}
1045+
10351046
TEST_CASE("Left recursive with empty string test", "[left recursive]")
10361047
{
10371048
parser parser(

0 commit comments

Comments
 (0)