From 2d276c8cd9a64800587172b40b8cb74e273a4f88 Mon Sep 17 00:00:00 2001 From: yhirose Date: Tue, 9 Jul 2019 21:49:15 -0400 Subject: [PATCH] Fix #63 --- peglib.h | 3 +++ test/test.cc | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/peglib.h b/peglib.h index 27f4574..1bc1217 100644 --- a/peglib.h +++ b/peglib.h @@ -2374,6 +2374,9 @@ inline void DetectLeftRecursion::visit(Reference& ope) { refs_.insert(ope.name_); if (ope.rule_) { ope.rule_->accept(*this); + if (done_ == false) { + return; + } } } done_ = true; diff --git a/test/test.cc b/test/test.cc index 6f381c0..ac2c7af 100644 --- a/test/test.cc +++ b/test/test.cc @@ -1032,6 +1032,17 @@ TEST_CASE("Left recursive with zom test", "[left recursive]") REQUIRE(!parser); } +TEST_CASE("Left recursive with a ZOM content rule", "[left recursive]") +{ + parser parser(R"( + A <- B + B <- _ A + _ <- ' '* # Zero or more + )"); + + REQUIRE(!parser); +} + TEST_CASE("Left recursive with empty string test", "[left recursive]") { parser parser(