# HG changeset patch # User Franz Glasner # Date 1778023901 -7200 # Node ID e1663ac707b00a508a582f44edc1ea1686856f15 # Parent be50fe0687d60a4cf21b914cc81da933c43c0f5f An alternate multiline comment syntax using "(* ... *)". Can be nested. diff -r be50fe0687d6 -r e1663ac707b0 pygments_lexer_pseudocode2/algpseudocode.py --- a/pygments_lexer_pseudocode2/algpseudocode.py Wed May 06 01:10:11 2026 +0200 +++ b/pygments_lexer_pseudocode2/algpseudocode.py Wed May 06 01:31:41 2026 +0200 @@ -225,6 +225,7 @@ "root": [ (r"\n", Whitespace), (r"/\*", Comment.Multiline, "multiline-nested-comment"), + (r"\(\*", Comment.Multiline, "multiline-nested-comment-alt"), (r"(//|#).*$", Comment.Single), include("remark"), (r"(?i)\\(block|state(?:ment)?)[ \t]*(\{)", diff -r be50fe0687d6 -r e1663ac707b0 pygments_lexer_pseudocode2/bases.py --- a/pygments_lexer_pseudocode2/bases.py Wed May 06 01:10:11 2026 +0200 +++ b/pygments_lexer_pseudocode2/bases.py Wed May 06 01:31:41 2026 +0200 @@ -178,5 +178,11 @@ (r'/\*', Comment.Multiline, '#push'), (r'\*/', Comment.Multiline, '#pop'), (r'[*/]', Comment.Multiline), + ], + 'multiline-nested-comment-alt': [ + (r'[^*()]+', Comment.Multiline), + (r'\(\*', Comment.Multiline, '#push'), + (r'\*\)', Comment.Multiline, '#pop'), + (r'[*()]', Comment.Multiline), ] } diff -r be50fe0687d6 -r e1663ac707b0 tests/test_algpseudo.py --- a/tests/test_algpseudo.py Wed May 06 01:10:11 2026 +0200 +++ b/tests/test_algpseudo.py Wed May 06 01:31:41 2026 +0200 @@ -929,6 +929,41 @@ pygments.lex(r"\TEXT{\EXPR{\CALL{a procedure}(arg1, arg2, arg3)}}", self.lexer)) + def test_comment_multi(self): + self.assertTokenStreamEqualComplete( + [("Comment.Multiline", "/*"), + ("Comment.Multiline", " word1 "), + ("Comment.Multiline", "*"), + ("Comment.Multiline", " word2 "), + ("Comment.Multiline", "/"), + ("Comment.Multiline", " word3 "), + ("Comment.Multiline", "/"), + ("Comment.Multiline", "/"), + ("Comment.Multiline", " word4 "), + ("Comment.Multiline", "*/"), + ("Text.Whitespace", "\n"), + ], + pygments.lex(r"/* word1 * word2 / word3 // word4 */", self.lexer)) + + def test_comment_multi_alt(self): + self.assertTokenStreamEqualComplete( + [("Comment.Multiline", "(*"), + ("Comment.Multiline", " word1 "), + ("Comment.Multiline", "*"), + ("Comment.Multiline", " word2 "), + ("Comment.Multiline", "("), + ("Comment.Multiline", " word3 "), + ("Comment.Multiline", ")"), + ("Comment.Multiline", " word4 "), + ("Comment.Multiline", "("), + ("Comment.Multiline", ")"), + ("Comment.Multiline", " word5 "), + ("Comment.Multiline", "*)"), + ("Text.Whitespace", "\n"), + ], + pygments.lex(r"(* word1 * word2 ( word3 ) word4 () word5 *)", + self.lexer)) + class PygmentizeCompletely(unittest.TestCase):