Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
changeset 115:e1663ac707b0
An alternate multiline comment syntax using "(* ... *)".
Can be nested.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 06 May 2026 01:31:41 +0200 |
| parents | be50fe0687d6 |
| children | 9bfd87544902 |
| files | pygments_lexer_pseudocode2/algpseudocode.py pygments_lexer_pseudocode2/bases.py tests/test_algpseudo.py |
| diffstat | 3 files changed, 42 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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]*(\{)",
--- 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), ] }
--- 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):
