comparison pygments_lexer_pseudocode2/bases.py @ 43:bbef0ac6cfcf

FIX: Proper string parsing: explicitely error out when single-line strings contain a linefeed
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 24 Apr 2026 19:01:10 +0200
parents 193ee1eb5013
children 5bfa9113d3c4
comparison
equal deleted inserted replaced
42:193ee1eb5013 43:bbef0ac6cfcf
7 7
8 __all__ = ["LexBase"] 8 __all__ = ["LexBase"]
9 9
10 10
11 from pygments.lexer import RegexLexer, combined, bygroups, include 11 from pygments.lexer import RegexLexer, combined, bygroups, include
12 from pygments.token import Number, String, Comment 12 from pygments.token import Error, Name, Number, String, Comment
13 13
14 14
15 class LexBase(RegexLexer): 15 class LexBase(RegexLexer):
16 16
17 """A base that defines some common lexer states. 17 """A base that defines some common lexer states.
54 # Their names have been prefixed with `py-'. 54 # Their names have been prefixed with `py-'.
55 # 55 #
56 # SPDX-SnippetBegin 56 # SPDX-SnippetBegin
57 # SPDX-License-Identifier: BSD-2-Clause 57 # SPDX-License-Identifier: BSD-2-Clause
58 # SPDX-SnippetCopyrightText: Copyright 2006-2023 by the Pygments team 58 # SPDX-SnippetCopyrightText: Copyright 2006-2023 by the Pygments team
59 # SPDX-SnippetCopyrightText: Copyright 2026 by Franz Glasner
59 # 60 #
60 'py-numbers': [ 61 'py-numbers': [
61 (r'(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)' 62 (r'(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)'
62 r'([eE][+-]?\d(?:_?\d)*)?', Number.Float), 63 r'([eE][+-]?\d(?:_?\d)*)?', Number.Float),
63 (r'\d(?:_?\d)*[eE][+-]?\d(?:_?\d)*j?', Number.Float), 64 (r'\d(?:_?\d)*[eE][+-]?\d(?:_?\d)*j?', Number.Float),
95 String.Escape) 96 String.Escape)
96 ], 97 ],
97 'py-dqs': [ 98 'py-dqs': [
98 (r'"', String.Double, '#pop'), 99 (r'"', String.Double, '#pop'),
99 (r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings 100 (r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
100 include('py-strings-double') 101 include('py-strings-double'),
102 (r'\n', Error), # added by fag
101 ], 103 ],
102 'py-sqs': [ 104 'py-sqs': [
103 (r"'", String.Single, '#pop'), 105 (r"'", String.Single, '#pop'),
104 (r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings 106 (r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
105 include('py-strings-single') 107 include('py-strings-single'),
108 (r'\n', Error), # added by fag
106 ], 109 ],
107 'py-tdqs': [ 110 'py-tdqs': [
108 (r'"""', String.Double, '#pop'), 111 (r'"""', String.Double, '#pop'),
109 include('py-strings-double'), 112 include('py-strings-double'),
110 (r'\n', String.Double) 113 (r'\n', String.Double)