Skip to content

Commit 04d6a55

Browse files
authored
Merge pull request #3145 from ekaf/hotfix-3072
Set reachable depth for generate
2 parents 4fb225b + 73f63d8 commit 04d6a55

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

nltk/parse/generate.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Copyright (C) 2001-2024 NLTK Project
44
# Author: Steven Bird <stevenbird1@gmail.com>
55
# Peter Ljunglöf <peter.ljunglof@heatherleaf.se>
6+
# Eric Kafe <kafe.eric@gmail.com>
67
# URL: <https://www.nltk.org/>
78
# For license information, see LICENSE.TXT
89
#
@@ -26,7 +27,8 @@ def generate(grammar, start=None, depth=None, n=None):
2627
if not start:
2728
start = grammar.start()
2829
if depth is None:
29-
depth = sys.maxsize
30+
# Safe default, assuming the grammar may be recursive:
31+
depth = (sys.getrecursionlimit() // 3) - 3
3032

3133
iter = _generate_all(grammar, [start], depth)
3234

@@ -45,7 +47,8 @@ def _generate_all(grammar, items, depth):
4547
except RecursionError as error:
4648
# Helpful error message while still showing the recursion stack.
4749
raise RuntimeError(
48-
"The grammar has rule(s) that yield infinite recursion!"
50+
"The grammar has rule(s) that yield infinite recursion!\n\
51+
Eventually use a lower 'depth', or a higher 'sys.setrecursionlimit()'."
4952
) from error
5053
else:
5154
yield []

0 commit comments

Comments
 (0)