580c5ce75548 — Georg Brandl 1.2.2 14 years ago
Allow newlines in string patterns.
M pygments/lexers/agile.py +2 -2
@@ 1312,12 1312,12 @@ class TclLexer(RegexLexer):
         ],
         'string': [
             (r'\[', String.Double, 'string-square'),
-            (r'(\\\\|\\[0-7]+|\\.|[^"\\])', String.Double),
+            (r'(?s)(\\\\|\\[0-7]+|\\.|[^"\\])', String.Double),
             (r'"', String.Double, '#pop')
         ],
         'string-square': [
             (r'\[', String.Double, 'string-square'),
-            (r'(\\\\|\\[0-7]+|\\.|[^\]\\])', String.Double),
+            (r'(?s)(\\\\|\\[0-7]+|\\.|\\\n|[^\]\\])', String.Double),
             (r'\]', String.Double, '#pop')
         ],
         'brace': [

          
M pygments/lexers/compiled.py +2 -2
@@ 1296,8 1296,8 @@ class FortranLexer(RegexLexer):
         ],
 
         'strings': [
-            (r'"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
-            (r"'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
+            (r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
+            (r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
         ],
 
         'nums': [

          
M pygments/lexers/other.py +5 -5
@@ 359,8 359,8 @@ class BashLexer(RegexLexer):
             (r'&&|\|\|', Operator),
         ],
         'data': [
-            (r'\$?"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
-            (r"\$?'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
+            (r'(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
+            (r"(?s)\$?'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
             (r';', Text),
             (r'\s+', Text),
             (r'[^=\s\n\[\]{}()$"\'`\\<]+', Text),

          
@@ 745,8 745,8 @@ class TcshLexer(RegexLexer):
             (r'<<\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
         ],
         'data': [
-            (r'"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
-            (r"'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
+            (r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
+            (r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
             (r'\s+', Text),
             (r'[^=\s\n\[\]{}()$"\'`\\]+', Text),
             (r'\d+(?= |\Z)', Number),

          
@@ 1164,7 1164,7 @@ class PovrayLexer(RegexLexer):
         'root': [
             (r'/\*[\w\W]*?\*/', Comment.Multiline),
             (r'//.*\n', Comment.Single),
-            (r'"(?:\\.|[^"\\])+"', String.Double),
+            (r'(?s)"(?:\\.|[^"\\])+"', String.Double),
             (r'#(debug|default|else|end|error|fclose|fopen|if|ifdef|ifndef|'
              r'include|range|read|render|statistics|switch|undef|version|'
              r'warning|while|write|define|macro|local|declare)',

          
M pygments/lexers/text.py +2 -2
@@ 171,8 171,8 @@ class BaseMakefileLexer(RegexLexer):
             (r'([a-zA-Z0-9_${}.-]+)(\s*)([!?:+]?=)([ \t]*)((?:.*\\\n|.*\n)+)',
              bygroups(Name.Variable, Text, Operator, Text, using(BashLexer))),
             # strings
-            (r'"(\\\\|\\.|[^"\\])*"', String.Double),
-            (r"'(\\\\|\\.|[^'\\])*'", String.Single),
+            (r'(?s)"(\\\\|\\.|[^"\\])*"', String.Double),
+            (r"(?s)'(\\\\|\\.|[^'\\])*'", String.Single),
             # targets
             (r'([^\n:]+)(:+)([ \t]*)', bygroups(Name.Function, Operator, Text),
              'block-header'),