comparison pygments_lexer_pseudocode2/algpseudocode.py @ 97:dd4eb937485c

A couple of new keywords
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 03 May 2026 15:18:35 +0200
parents 98cd0787f62f
children c1f93e109798
comparison
equal deleted inserted replaced
96:98cd0787f62f 97:dd4eb937485c
62 "FUNCTION": "FUNCTION", 62 "FUNCTION": "FUNCTION",
63 "FN": "FUNCTION", 63 "FN": "FUNCTION",
64 "CLASS": "CLASS", 64 "CLASS": "CLASS",
65 "IS": "IS", 65 "IS": "IS",
66 "WITH": "WITH", 66 "WITH": "WITH",
67 "IF": "IF",
68 "THEN": "THEN",
69 "ELSE": "ELSE",
70 "ELSEIF": "ELSE IF",
71 "ELSIF": "ELSE IF",
72 "ELIF": "ELSE IF",
73 "DO": "DO",
74 "WHILE": "WHILE",
75 "FOR": "FOR",
76 "FORALL": "FOR ALL",
77 "STEP": "STEP",
78 "LOOP": "LOOP",
79 "REPEAT": "REPEAT",
80 "UNTIL": "UNTIL",
81 "BEGIN": "BEGIN",
82 "END": "END", # not in END_TRANSLATIONS
67 } 83 }
68 END_TRANSLATIONS = { 84 END_TRANSLATIONS = {
69 "PROG": "END OF PROGRAM", 85 "PROG": "END OF PROGRAM",
70 "PROGRAM": "END OF PROGRAM", 86 "PROGRAM": "END OF PROGRAM",
71 "ALGO": "END OF ALGORITHM", 87 "ALGO": "END OF ALGORITHM",
74 "PROCEDURE": "END OF PROCEDURE", 90 "PROCEDURE": "END OF PROCEDURE",
75 "FUNC": "END OF FUNCTION", 91 "FUNC": "END OF FUNCTION",
76 "FUNCTION": "END OF FUNCTION", 92 "FUNCTION": "END OF FUNCTION",
77 "FN": "END OF FUNCTION", 93 "FN": "END OF FUNCTION",
78 "CLASS": "END OF CLASS", 94 "CLASS": "END OF CLASS",
95 "IF": "END IF",
96 "WHILE": "END WHILE",
97 "FOR": "END FOR",
98 "FORALL": "END FOR ALL",
99 "LOOP": "END LOOP",
79 } 100 }
80 DEFAULT_END_PREFIX = "END OF " 101 DEFAULT_END_PREFIX = "END OF "
81 SYMBOL_REMARK = "▷" # U+25B7: Unicode 1.0 (Geometric Shapes) 102 SYMBOL_REMARK = "▷" # U+25B7: Unicode 1.0 (Geometric Shapes)
82 # SYMBOL_REMARK = "▻" # U+25BB: Unicode 1.0 (Geometric Shapes) 103 # SYMBOL_REMARK = "▻" # U+25BB: Unicode 1.0 (Geometric Shapes)
83 SYMBOL_BLOCK = "◆" # U+25C6: Unicode 1.0 (Geometric Shapes) 104 SYMBOL_BLOCK = "◆" # U+25C6: Unicode 1.0 (Geometric Shapes)
190 r"|(?:textblock)" 211 r"|(?:textblock)"
191 r"|(?:tblock)" 212 r"|(?:tblock)"
192 r")[ \t]*(\{)", 213 r")[ \t]*(\{)",
193 bygroups(op_symbol(Text), LexBase.op_fixed(Whitespace, " ")), 214 bygroups(op_symbol(Text), LexBase.op_fixed(Whitespace, " ")),
194 "text-statement"), 215 "text-statement"),
216 (r"(?i)\\("
217 r"(?:if)"
218 r"|(?:then)"
219 r"|(?:else)"
220 r"|(?:el(?:s(?:e)?)?if)"
221 r"|(?:do)"
222 r"|(?:while)"
223 r"|(?:forall)"
224 r"|(?:for)"
225 r"|(?:step)"
226 r"|(?:loop)"
227 r"|(?:repeat)"
228 r"|(?:until)"
229 r")\b",
230 bygroups(op_translate(Keyword))),
195 (r"\\\n", Text), 231 (r"\\\n", Text),
196 (r"(?i)\\(" 232 (r"(?i)\\("
197 r"(?:prog(?:ram)?)" 233 r"(?:prog(?:ram)?)"
198 r"|(?:algo(?:rithm)?)" 234 r"|(?:algo(?:rithm)?)"
199 r"|(?:proc(?:edure)?)" 235 r"|(?:proc(?:edure)?)"
223 r"|(?:algo(?:rithm)?)" 259 r"|(?:algo(?:rithm)?)"
224 r"|(?:proc(?:edure)?)" 260 r"|(?:proc(?:edure)?)"
225 r"|(?:func(?:tion)?)" 261 r"|(?:func(?:tion)?)"
226 r"|(?:fn)" 262 r"|(?:fn)"
227 r"|(?:class)" 263 r"|(?:class)"
264 r"|(?:if)"
265 r"|(?:while)"
266 r"|(?:for)"
267 r"|(?:forall)"
268 r"|(?:loop)"
228 r")\b", 269 r")\b",
229 bygroups(op_opt_end_translate(Keyword))), 270 bygroups(op_opt_end_translate(Keyword))),
271 #
272 # A single begin or end that is never suppressed because
273 # it is supposed to be paired with begin
274 #
275 (r"(?i)\\(begin|end)\b",
276 bygroups(op_translate(Keyword))),
230 # Keywords 277 # Keywords
231 (r"(?i)\\(" 278 (r"(?i)\\("
232 r"(?:is)" 279 r"(?:is)"
233 r"|(?:with)" 280 r"|(?:with)"
234 r")\b", 281 r")\b",