diff pygments_lexer_pseudocode2/algpseudocode.py @ 78:abb2e8c65d0f

Implement "TEXTSTATEMENT"
author Franz Glasner <fzglas.hg@dom66.de>
date Thu, 30 Apr 2026 09:28:39 +0200
parents 1a5e192aa950
children f487f0d322a5
line wrap: on
line diff
--- a/pygments_lexer_pseudocode2/algpseudocode.py	Thu Apr 30 09:24:46 2026 +0200
+++ b/pygments_lexer_pseudocode2/algpseudocode.py	Thu Apr 30 09:28:39 2026 +0200
@@ -86,6 +86,7 @@
         "BLOCK": SYMBOL_BLOCK,
         # Group TEXTSTATEMENT
         "TEXTSTATEMENT": SYMBOL_TEXTSTATEMENT,
+        "TEXTSTATE": SYMBOL_TEXTSTATEMENT,
         "TSTATEMENT": SYMBOL_TEXTSTATEMENT,
         "TSTATE": SYMBOL_TEXTSTATEMENT,
         "TEXTBLOCK": SYMBOL_TEXTSTATEMENT,
@@ -150,6 +151,14 @@
             (r"(?i)\\(block|state(?:ment)?)\s*(\{)",
              bygroups(op_symbol(Text), LexBase.op_fixed(Whitespace, " ")),
              "block-expr"),
+            (r"(?i)\\("
+             r"(?:textstate(?:ment)?)"
+             r"|(?:tstate(?:ment)?)"
+             r"|(?:textblock)"
+             r"|(?:tblock)"
+             r")\s*(\{)",
+             bygroups(op_symbol(Text), LexBase.op_fixed(Whitespace, " ")),
+             "text-statement"),
             (r"\\\n", Text),
             (r"(?i)\\("
              r"(?:prog(?:ram)?)"
@@ -226,6 +235,18 @@
             (r"\\", LexBase.op_fixed(Text, "\\")),
             (r"\s+", Text),
         ],
+        "text-statement": [  # like block but default to text-mode
+            (r"[^\\}\n]+", Text),
+            (r"\}", LexBase.op_ignore, "#pop"),
+            (r"\n", Whitespace),
+            (r"\\\}", LexBase.op_fixed(Text, "}")),
+            (r"(?i)\\expr(?:ession)?\s*\{",
+             LexBase.op_ignore,
+             "block-expr"),
+            include("remark"),
+            (r"\\\\", LexBase.op_fixed(Text, "\\")),
+            (r"\\", LexBase.op_fixed(Text, "\\")),
+        ],
         "expr-in-braces": [
             include("punctuation-in-braces"),
             include("py-strings"),
@@ -241,6 +262,10 @@
             (r"\}", LexBase.op_ignore, "#pop"),
             (r"\n", Whitespace),
             (r"\\\}", LexBase.op_fixed(Text, "}")),
+            (r"(?:i)\\(expr(?:ession)?)\s*(\{)",
+             bygroups(LexBase.op_ignore, LexBase.op_ignore),
+             "expr-in-braces"),
+            (r"\\\\", LexBase.op_fixed(Text, "\\")),
             (r"\\", LexBase.op_fixed(Text, "\\")),
         ],
         "math-builtins": [