comparison pygments_lexer_pseudocode2/algpseudocode.py @ 64:05c53e431c88

Simplify case-handling for "BLOCK" and "REMARK"
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 28 Apr 2026 12:40:02 +0200
parents 7153e945a3d6
children 3f4223a79d2b
comparison
equal deleted inserted replaced
63:414bf3cbb152 64:05c53e431c88
74 # SYMBOL_BLOCK = "┃" # U+2503: Unicode 1.0 (Bow Drawing) 74 # SYMBOL_BLOCK = "┃" # U+2503: Unicode 1.0 (Bow Drawing)
75 # SYMBOL_BLOCK = "●" # U+25CF: Unicode 1.0 (Geometric Shapes) 75 # SYMBOL_BLOCK = "●" # U+25CF: Unicode 1.0 (Geometric Shapes)
76 SYMBOL_TEXTSTATEMENT = "■" # U+25A0: Unicode 1.0 (Geometric Shapes) 76 SYMBOL_TEXTSTATEMENT = "■" # U+25A0: Unicode 1.0 (Geometric Shapes)
77 SYMBOLS = { 77 SYMBOLS = {
78 "REMARK": SYMBOL_REMARK, 78 "REMARK": SYMBOL_REMARK,
79 "Remark": SYMBOL_REMARK,
80 "remark": SYMBOL_REMARK,
81 "REM": SYMBOL_REMARK, 79 "REM": SYMBOL_REMARK,
82 "Rem": SYMBOL_REMARK,
83 "rem": SYMBOL_REMARK,
84 "R": SYMBOL_REMARK,
85 "r": SYMBOL_REMARK,
86 "BLOCK": SYMBOL_BLOCK, 80 "BLOCK": SYMBOL_BLOCK,
87 "Block": SYMBOL_BLOCK,
88 "block": SYMBOL_BLOCK,
89 "TEXTSTATEMENT": SYMBOL_TEXTSTATEMENT, 81 "TEXTSTATEMENT": SYMBOL_TEXTSTATEMENT,
90 "TextStatement": SYMBOL_TEXTSTATEMENT,
91 "textstatement": SYMBOL_TEXTSTATEMENT,
92 "TSTATEMENT": SYMBOL_TEXTSTATEMENT, 82 "TSTATEMENT": SYMBOL_TEXTSTATEMENT,
93 "TStatement": SYMBOL_TEXTSTATEMENT,
94 "tstatement": SYMBOL_TEXTSTATEMENT,
95 "TSTATE": SYMBOL_TEXTSTATEMENT, 83 "TSTATE": SYMBOL_TEXTSTATEMENT,
96 "TState": SYMBOL_TEXTSTATEMENT,
97 "tstate": SYMBOL_TEXTSTATEMENT,
98 "TEXT": SYMBOL_TEXTSTATEMENT, 84 "TEXT": SYMBOL_TEXTSTATEMENT,
99 "Text": SYMBOL_TEXTSTATEMENT,
100 "text": SYMBOL_TEXTSTATEMENT,
101 } 85 }
102 86
103 def op_translate(toktype): 87 def op_translate(toktype):
104 88
105 def _op_translate(lexer, match, ctx=None): 89 def _op_translate(lexer, match, ctx=None):
130 return _op_opt_ignore 114 return _op_opt_ignore
131 115
132 def op_symbol(toktype): 116 def op_symbol(toktype):
133 117
134 def _op_symbol(lexer, match, ctx=None): 118 def _op_symbol(lexer, match, ctx=None):
135 kw = match.group() 119 kw = match.group().upper()
136 yield match.start(), toktype, lexer.SYMBOLS.get(kw, kw) 120 yield match.start(), toktype, lexer.SYMBOLS.get(kw, kw)
137 121
138 return _op_symbol 122 return _op_symbol
139 123
140 tokens = { 124 tokens = {
141 "root": [ 125 "root": [
142 (r"\n", Whitespace), 126 (r"\n", Whitespace),
143 (r"/\*", Comment.Multiline, "multiline-nested-comment"), 127 (r"/\*", Comment.Multiline, "multiline-nested-comment"),
144 (r"//.*$", Comment.Single), 128 (r"//.*$", Comment.Single),
145 (r"(?:\\)(REMARK|Remark|remark|REM|Rem|rem|R|r)\b(.*)$", 129 (r"(?i)\\(remark|rem)\b(.*)$",
146 bygroups(op_symbol(Comment.Single), Comment.Single)), 130 bygroups(op_symbol(Comment.Single), Comment.Single)),
147 (r"(?:\\)(BLOCK|Block|block)\b(.*)$", 131 (r"(?i)\\(block)\b(.*)$",
148 bygroups(op_symbol(Text), Text)), 132 bygroups(op_symbol(Text), Text)),
149 (r"\\\n", Text), 133 (r"\\\n", Text),
150 (r"(?i)\\(" 134 (r"(?i)\\("
151 r"(?:prog(?:ram)?)" 135 r"(?:prog(?:ram)?)"
152 r"|(?:algo(?:rithm)?)" 136 r"|(?:algo(?:rithm)?)"