python-Pygments/elpi_fix_catastrophic_backtracking.patch
Dirk Mueller 7c515cfc09 Accepting request 951979 from home:benoit_monin:branches:devel:languages:python
- update to 2.11.2
- backport elpi_fix_catastrophic_backtracking.patch
- switch prep stage to autosetup
- remove commented-out shebang removal

OBS-URL: https://build.opensuse.org/request/show/951979
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Pygments?expand=0&rev=80
2022-02-07 09:27:11 +00:00

40 lines
2.1 KiB
Diff

From dbd7931f9d60966fbb80745db368ad773a8b7569 Mon Sep 17 00:00:00 2001
From: Jean Abou-Samra <jean@abou-samra.fr>
Date: Thu, 3 Feb 2022 22:27:01 +0100
Subject: [PATCH] Elpi: fix catastrophic backtracking (#2061)
---
pygments/lexers/elpi.py | 4 ++--
tests/snippets/elpi/test_catastrophic_backtracking.txt | 6 ++++++
2 files changed, 8 insertions(+), 2 deletions(-)
create mode 100644 tests/snippets/elpi/test_catastrophic_backtracking.txt
diff --git a/pygments/lexers/elpi.py b/pygments/lexers/elpi.py
index 691182a86..3ce6ed6a2 100644
--- a/pygments/lexers/elpi.py
+++ b/pygments/lexers/elpi.py
@@ -32,9 +32,9 @@ class ElpiLexer(RegexLexer):
schar2_re = r"([+*^?/<>`'@#~=&!])"
schar_re = r"({}|-|\$|_)".format(schar2_re)
idchar_re = r"({}|{}|{}|{})".format(lcase_re,ucase_re,digit_re,schar_re)
- idcharstarns_re = r"({}+|(?=\.[a-z])\.{}+)".format(idchar_re,idchar_re)
+ idcharstarns_re = r"({}*(\.({}|{}){}*)*)".format(idchar_re, lcase_re, ucase_re, idchar_re)
symbchar_re = r"({}|{}|{}|{}|:)".format(lcase_re, ucase_re, digit_re, schar_re)
- constant_re = r"({}{}*|{}{}*|{}{}*|_{}+)".format(ucase_re, idchar_re, lcase_re, idcharstarns_re,schar2_re, symbchar_re,idchar_re)
+ constant_re = r"({}{}*|{}{}|{}{}*|_{}+)".format(ucase_re, idchar_re, lcase_re, idcharstarns_re,schar2_re, symbchar_re,idchar_re)
symbol_re=r"(,|<=>|->|:-|;|\?-|->|&|=>|\bas\b|\buvar\b|<|=<|=|==|>=|>|\bi<|\bi=<|\bi>=|\bi>|\bis\b|\br<|\br=<|\br>=|\br>|\bs<|\bs=<|\bs>=|\bs>|@|::|\[\]|`->|`:|`:=|\^|-|\+|\bi-|\bi\+|r-|r\+|/|\*|\bdiv\b|\bi\*|\bmod\b|\br\*|~|\bi~|\br~)"
escape_re=r"\(({}|{})\)".format(constant_re,symbol_re)
const_sym_re = r"({}|{}|{})".format(constant_re,symbol_re,escape_re)
diff --git a/tests/snippets/elpi/test_catastrophic_backtracking.txt b/tests/snippets/elpi/test_catastrophic_backtracking.txt
new file mode 100644
index 000000000..a14a0549c
--- /dev/null
+++ b/tests/snippets/elpi/test_catastrophic_backtracking.txt
@@ -0,0 +1,6 @@
+---input---
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+---tokens---
+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' Text
+'\n' Text.Whitespace