comparison pygments_lexer_pseudocode2/pseudocode.py @ 40:df08226a6984

Names for some entities (program, algorithm, function, procedure, class). Also test for "class".
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 24 Apr 2026 10:48:00 +0200
parents a3151d837258
children 4ccf9a8d0bf2
comparison
equal deleted inserted replaced
39:a3151d837258 40:df08226a6984
12 12
13 13
14 import re 14 import re
15 15
16 from pygments.lexer import include, bygroups 16 from pygments.lexer import include, bygroups
17 from pygments.token import (Comment, Keyword, Text, Whitespace) 17 from pygments.token import (Comment, Keyword, Name, Text, Whitespace)
18 18
19 # 19 #
20 # Relative imports do not work with pygments.lexers.load_lexer_from_file() 20 # Relative imports do not work with pygments.lexers.load_lexer_from_file()
21 # in all of our supported Python releases. 21 # in all of our supported Python releases.
22 # 22 #
65 "block": "┃", 65 "block": "┃",
66 } 66 }
67 67
68 def op_translate(toktype): 68 def op_translate(toktype):
69 69
70 def _op_translate(lexer, match): 70 def _op_translate(lexer, match, ctx=None):
71 kw = match.group(1).upper() 71 kw = match.group().upper()
72 yield match.start(), toktype, lexer.TRANSLATIONS.get(kw, kw) 72 yield match.start(), toktype, lexer.TRANSLATIONS.get(kw, kw)
73 73
74 return _op_translate 74 return _op_translate
75 75
76 def op_symbol(toktype): 76 def op_symbol(toktype):
95 r"(?:prog(?:ram)?)" 95 r"(?:prog(?:ram)?)"
96 r"|(?:algo(?:rithm)?)" 96 r"|(?:algo(?:rithm)?)"
97 r"|(?:proc(?:edure)?)" 97 r"|(?:proc(?:edure)?)"
98 r"|(?:func(?:tion)?|(?:fn))" 98 r"|(?:func(?:tion)?|(?:fn))"
99 r"|(?:class)" 99 r"|(?:class)"
100 r")\b", 100 r")(\s*)(\{)",
101 op_translate(Keyword)), 101 bygroups(op_translate(Keyword), Whitespace, Name.Entity),
102 "entity-name"),
102 include("expr"), 103 include("expr"),
104 ],
105 "entity-name": [ # may be multiline
106 (r"[^\\}]+", Name.Entity),
107 (r"\\\}", Name.Entity),
108 (r"\\", Name.Entity),
109 (r"\}", Name.Entity, "#pop"),
103 ], 110 ],
104 "expr": [ 111 "expr": [
105 include("py-strings"), 112 include("py-strings"),
106 include("py-numbers"), 113 include("py-numbers"),
107 ] 114 ]