Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
comparison pygments_lexer_pseudocode2/algpseudocode.py @ 62:7153e945a3d6
Implement ignoring of \ENDxxx including its optional name parts
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 28 Apr 2026 10:09:17 +0200 |
| parents | 392745b66969 |
| children | 05c53e431c88 |
comparison
equal
deleted
inserted
replaced
| 61:392745b66969 | 62:7153e945a3d6 |
|---|---|
| 119 kw, | 119 kw, |
| 120 lexer.DEFAULT_END_PREFIX + kw)) | 120 lexer.DEFAULT_END_PREFIX + kw)) |
| 121 | 121 |
| 122 return _op_end_translate | 122 return _op_end_translate |
| 123 | 123 |
| 124 def op_opt_ignore(toktype): | |
| 125 | |
| 126 def _op_opt_ignore(lexer, match, ctx=None): | |
| 127 if not lexer.no_end: | |
| 128 yield match.start(), toktype, match.group() | |
| 129 | |
| 130 return _op_opt_ignore | |
| 131 | |
| 124 def op_symbol(toktype): | 132 def op_symbol(toktype): |
| 125 | 133 |
| 126 def _op_symbol(lexer, match, ctx=None): | 134 def _op_symbol(lexer, match, ctx=None): |
| 127 kw = match.group() | 135 kw = match.group() |
| 128 yield match.start(), toktype, lexer.SYMBOLS.get(kw, kw) | 136 yield match.start(), toktype, lexer.SYMBOLS.get(kw, kw) |
| 144 r"|(?:algo(?:rithm)?)" | 152 r"|(?:algo(?:rithm)?)" |
| 145 r"|(?:proc(?:edure)?)" | 153 r"|(?:proc(?:edure)?)" |
| 146 r"|(?:func(?:tion)?|(?:fn))" | 154 r"|(?:func(?:tion)?|(?:fn))" |
| 147 r"|(?:class)" | 155 r"|(?:class)" |
| 148 r")(\s*)(\{)", | 156 r")(\s*)(\{)", |
| 149 bygroups(op_translate(Keyword), Whitespace, Name.Entity), | 157 bygroups(op_translate(Keyword), Whitespace, LexBase.op_ignore), |
| 150 "entity-name"), | 158 "entity-name"), |
| 151 # ENDxxx keywords with optional entity name | 159 # ENDxxx keywords with optional entity name |
| 152 # with name | 160 # with name |
| 153 (r"(?i)\\end(?:_|-)?(" | 161 (r"(?i)\\end(?:_|-)?(" |
| 154 r"(?:prog(?:ram)?)" | 162 r"(?:prog(?:ram)?)" |
| 155 r"|(?:algo(?:rithm)?)" | 163 r"|(?:algo(?:rithm)?)" |
| 156 r"|(?:proc(?:edure)?)" | 164 r"|(?:proc(?:edure)?)" |
| 157 r"|(?:func(?:tion)?)" | 165 r"|(?:func(?:tion)?)" |
| 158 r"|(?:class)" | 166 r"|(?:class)" |
| 159 r")(\s*)(\{)", | 167 r")(\s*)(\{)", |
| 160 bygroups(op_opt_end_translate(Keyword), Whitespace, Name.Entity), | 168 bygroups(op_opt_end_translate(Keyword), |
| 161 "entity-name"), | 169 op_opt_ignore(Whitespace), |
| 170 LexBase.op_ignore), | |
| 171 "entity-name-end"), | |
| 162 # without name | 172 # without name |
| 163 (r"(?i)\\end(?:_|-)?(" | 173 (r"(?i)\\end(?:_|-)?(" |
| 164 r"(?:prog(?:ram)?)" | 174 r"(?:prog(?:ram)?)" |
| 165 r"|(?:algo(?:rithm)?)" | 175 r"|(?:algo(?:rithm)?)" |
| 166 r"|(?:proc(?:edure)?)" | 176 r"|(?:proc(?:edure)?)" |
| 167 r"|(?:func(?:tion)?)" | 177 r"|(?:func(?:tion)?)" |
| 168 r"|(?:class)" | 178 r"|(?:class)" |
| 169 r")((\s*)(\{))?", | 179 r")\b", |
| 170 bygroups(op_opt_end_translate(Keyword))), | 180 bygroups(op_opt_end_translate(Keyword))), |
| 171 # Keywords | 181 # Keywords |
| 172 (r"(?i)\\(" | 182 (r"(?i)\\(" |
| 173 r"(?:is)" | 183 r"(?:is)" |
| 174 r")\b", | 184 r")\b", |
| 175 bygroups(op_translate(Keyword))), | 185 bygroups(op_translate(Keyword))), |
| 176 include("expr"), | 186 include("expr"), |
| 177 (r"\s+", Text), | 187 (r"\s+", Text), |
| 178 ], | 188 ], |
| 179 "entity-name": [ # may be multiline | 189 "entity-name": [ # may be multiline |
| 180 (r"[^\\}]+", Name.Entity), | 190 (r"[^\\}]+", Name.Entity), |
| 181 (r"\\\}", Name.Entity), | 191 (r"\\\}", Name.Entity), |
| 182 (r"\\", Name.Entity), | 192 (r"\\", Name.Entity), |
| 183 (r"\}", Name.Entity, "#pop"), | 193 (r"\}", LexBase.op_ignore, "#pop"), |
| 194 ], | |
| 195 "entity-name-end": [ # may be multiline -- suppressed if no_end | |
| 196 (r"[^\\}]+", op_opt_ignore(Name.Entity)), | |
| 197 (r"\\\}", op_opt_ignore(Name.Entity)), | |
| 198 (r"\\", op_opt_ignore(Name.Entity)), | |
| 199 (r"\}", LexBase.op_ignore, "#pop"), | |
| 184 ], | 200 ], |
| 185 "expr": [ | 201 "expr": [ |
| 186 include("py-strings"), | 202 include("py-strings"), |
| 187 include("py-numbers"), | 203 include("py-numbers"), |
| 188 include("py-name"), | 204 include("py-name"), |
