Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
view pygments_lexer_pseudocode2/fr_pseudocode.py @ 42:193ee1eb5013
Document where "multiline-nested-comment" is taken from
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 24 Apr 2026 18:22:23 +0200 |
| parents | c02d59f04133 |
| children | 10212741b98f |
line wrap: on
line source
# -*- coding: utf-8 -*- # :- # SPDX-FileCopyrightText: © 2015 Simon Wachter # SPDX-FileCopyrightText: © 2026 Franz Glasner # SPDX-License-Identifier: MIT # :- r""" :Author: Simon Wachter :Author: Franz Glasner :Copyright: © 2015 Simon Wachter :Copyright: © 2026 Franz Glasner :License: MIT License. See :file:`MIT.txt` for details. If you cannot find MIT.txt see <http://opensource.org/licenses/MIT>. """ __all__ = ["FrPseudocodeLexer"] import re from pygments.lexer import RegexLexer, include from pygments.token import Punctuation, Whitespace, Comment, Operator, Keyword, Name, String, Number class FrPseudocodeLexer(RegexLexer): ''' A Pseudo code (fr) lexer ''' name = 'FrPseudocode' aliases = ['fr-pseudocode', 'fr-pseudo', 'fr-algorithm', 'fr-algo'] filenames = ['*.fr-algo', '*.fr-pseudocode'] mimetypes = [] flags = re.MULTILINE REPLACEMENTS = { '<=': '≤', '>=': '≥', '<>': '≠', '!=': '≠', '<-': '←', '->': '→', '=>': '⇒', '<->': '↔', '<=>': '⇔', '^': '↑', } def op_replace(lexer, match): op = match.group(0) yield match.start(), Operator, lexer.REPLACEMENTS.get(op, op) def scomment(lexer, match): s = match.group(1).lower().strip() c = Comment directives = ['passage par copie', 'passage par valeur', 'passage par référence', 'passage par reference', 'passage par adresse', 've', 'vs', 've/s'] if s in directives: c = Comment.Special yield match.start(), c, match.group(0) tokens = { 'root': [ (r'\/\*.*\*\/', Comment), (r'(\/\/|#).*\n', Comment), (r'\|', Comment), (r'\{(.*)\}', scomment), include('strings'), include('core'), (r'(?i)[a-zéàùçèÉÀÙÇÈ][a-z0-9éàùçèÉÀÙÇÈ_]*', Name.Variable), include('numbers'), (r'[\s]+', Whitespace) ], 'core': [ # Statements (r'(?i)\b(debut|début|fin|si|alors|sinon|fin[_ ]si|tant[ _]que|tantque|fin[ _]tantque|faire|répéter' r'repeter|type|structure|fin[ _]structure|fonction|procédure|procedure|retourner|renvoyer|' r'pour|fin[ _]pour|à|déclarations?|juqsque|spécialise|specialise|comporte|super|public|privé|protégé|' r'classe' r')\s*\b', Keyword), # Data Types (r'(?i)\b(entiers?|chaines?|chaînes?|réels?|reels?|caractères?|caracteres?|booléens?|' r'booleens?|tableaux?|rien)\s*\b', Keyword.Type), (r'(?i)\b(vrai|faux|nil)\s*\b', Name.Constant), # Operators (r'(?i)(<->|<=>|<=|>=|<>|!=|<-|->|=>|\^|\*|\+|-|\/|<|>|=|\\\\|mod|←|↑|≤|≥|≠|÷|×|\.\.|\[|\]|\.|non|xou|et|ou)', op_replace), (r'(\(|\)|\,|\;|:)', Punctuation), #(r'\b(\[(VE|VS|VE/S)\])\s*\b', # Keyword.Declaration), # Intrinsics (r'(?i)\b(sqrt|pow|cos|sin|tan|arccos|arcsin|arctan|arctan2|lire|ecrire|écrire|' r'exp|ln|log|détruire|detruire' r')\s*\b', Name.Builtin) ], 'strings': [ (r'"([^"])*"', String.Double), (r"'([^'])*'", String.Single), ], # # This is stolen from the Pygment's Python lexer. # # SPDX-SnippetBegin # SPDX-License-Identifier: BSD-2-Clause # SPDX-SnippetCopyrightText: Copyright 2006-2023 by the Pygments team 'numbers': [ (r'(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)' r'([eE][+-]?\d(?:_?\d)*)?', Number.Float), (r'\d(?:_?\d)*[eE][+-]?\d(?:_?\d)*j?', Number.Float), (r'0[oO](?:_?[0-7])+', Number.Oct), (r'0[bB](?:_?[01])+', Number.Bin), (r'0[xX](?:_?[a-fA-F0-9])+', Number.Hex), (r'\d(?:_?\d)*', Number.Integer), ], # SPDX-SnippetEnd }
