Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
clean.py181 linesDownload Raw Back to lexers
1"""2    pygments.lexers.clean3    ~~~~~~~~~~~~~~~~~~~~~4 5    Lexer for the Clean language.6 7    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11from pygments.lexer import ExtendedRegexLexer, words, default, include, bygroups12from pygments.token import Comment, Error, Keyword, Literal, Name, Number, \13    Operator, Punctuation, String, Whitespace14 15__all__ = ['CleanLexer']16 17 18class CleanLexer(ExtendedRegexLexer):19    """20    Lexer for the general purpose, state-of-the-art, pure and lazy functional21    programming language Clean.22 23    .. versionadded: 2.224    """25    name = 'Clean'26    url = 'http://clean.cs.ru.nl/Clean'27    aliases = ['clean']28    filenames = ['*.icl', '*.dcl']29    version_added = ''30 31    keywords = (32        'case', 'ccall', 'class', 'code', 'code inline', 'derive', 'export',33        'foreign', 'generic', 'if', 'in', 'infix', 'infixl', 'infixr',34        'instance', 'let', 'of', 'otherwise', 'special', 'stdcall', 'where',35        'with')36 37    modulewords = ('implementation', 'definition', 'system')38 39    lowerId = r'[a-z`][\w`]*'40    upperId = r'[A-Z`][\w`]*'41    funnyId = r'[~@#$%\^?!+\-*<>\\/|&=:]+'42    scoreUpperId = r'_' + upperId43    scoreLowerId = r'_' + lowerId44    moduleId = r'[a-zA-Z_][a-zA-Z0-9_.`]+'45    classId = '|'.join([lowerId, upperId, funnyId])46 47    tokens = {48        'root': [49            include('comments'),50            include('keywords'),51            include('module'),52            include('import'),53            include('whitespace'),54            include('literals'),55            include('operators'),56            include('delimiters'),57            include('names'),58        ],59        'whitespace': [60            (r'\s+', Whitespace),61        ],62        'comments': [63            (r'//.*\n', Comment.Single),64            (r'/\*', Comment.Multiline, 'comments.in'),65            (r'/\*\*', Comment.Special, 'comments.in'),66        ],67        'comments.in': [68            (r'\*\/', Comment.Multiline, '#pop'),69            (r'/\*', Comment.Multiline, '#push'),70            (r'[^*/]+', Comment.Multiline),71            (r'\*(?!/)', Comment.Multiline),72            (r'/', Comment.Multiline),73        ],74        'keywords': [75            (words(keywords, prefix=r'\b', suffix=r'\b'), Keyword),76        ],77        'module': [78            (words(modulewords, prefix=r'\b', suffix=r'\b'), Keyword.Namespace),79            (r'\bmodule\b', Keyword.Namespace, 'module.name'),80        ],81        'module.name': [82            include('whitespace'),83            (moduleId, Name.Class, '#pop'),84        ],85        'import': [86            (r'\b(import)\b(\s*)', bygroups(Keyword, Whitespace), 'import.module'),87            (r'\b(from)\b(\s*)\b(' + moduleId + r')\b(\s*)\b(import)\b',88                bygroups(Keyword, Whitespace, Name.Class, Whitespace, Keyword),89                'import.what'),90        ],91        'import.module': [92            (r'\b(qualified)\b(\s*)', bygroups(Keyword, Whitespace)),93            (r'(\s*)\b(as)\b', bygroups(Whitespace, Keyword), ('#pop', 'import.module.as')),94            (moduleId, Name.Class),95            (r'(\s*)(,)(\s*)', bygroups(Whitespace, Punctuation, Whitespace)),96            (r'\s+', Whitespace),97            default('#pop'),98        ],99        'import.module.as': [100            include('whitespace'),101            (lowerId, Name.Class, '#pop'),102            (upperId, Name.Class, '#pop'),103        ],104        'import.what': [105            (r'\b(class)\b(\s+)(' + classId + r')',106                bygroups(Keyword, Whitespace, Name.Class), 'import.what.class'),107            (r'\b(instance)(\s+)(' + classId + r')(\s+)',108                bygroups(Keyword, Whitespace, Name.Class, Whitespace), 'import.what.instance'),109            (r'(::)(\s*)\b(' + upperId + r')\b',110                bygroups(Punctuation, Whitespace, Name.Class), 'import.what.type'),111            (r'\b(generic)\b(\s+)\b(' + lowerId + '|' + upperId + r')\b',112                bygroups(Keyword, Whitespace, Name)),113            include('names'),114            (r'(,)(\s+)', bygroups(Punctuation, Whitespace)),115            (r'$', Whitespace, '#pop'),116            include('whitespace'),117        ],118        'import.what.class': [119            (r',', Punctuation, '#pop'),120            (r'\(', Punctuation, 'import.what.class.members'),121            (r'$', Whitespace, '#pop:2'),122            include('whitespace'),123        ],124        'import.what.class.members': [125            (r',', Punctuation),126            (r'\.\.', Punctuation),127            (r'\)', Punctuation, '#pop'),128            include('names'),129        ],130        'import.what.instance': [131            (r'[,)]', Punctuation, '#pop'),132            (r'\(', Punctuation, 'import.what.instance'),133            (r'$', Whitespace, '#pop:2'),134            include('whitespace'),135            include('names'),136        ],137        'import.what.type': [138            (r',', Punctuation, '#pop'),139            (r'[({]', Punctuation, 'import.what.type.consesandfields'),140            (r'$', Whitespace, '#pop:2'),141            include('whitespace'),142        ],143        'import.what.type.consesandfields': [144            (r',', Punctuation),145            (r'\.\.', Punctuation),146            (r'[)}]', Punctuation, '#pop'),147            include('names'),148        ],149        'literals': [150            (r'\'([^\'\\]|\\(x[\da-fA-F]+|\d+|.))\'', Literal.Char),151            (r'[+~-]?0[0-7]+\b', Number.Oct),152            (r'[+~-]?\d+\.\d+(E[+-]?\d+)?', Number.Float),153            (r'[+~-]?\d+\b', Number.Integer),154            (r'[+~-]?0x[\da-fA-F]+\b', Number.Hex),155            (r'True|False', Literal),156            (r'"', String.Double, 'literals.stringd'),157        ],158        'literals.stringd': [159            (r'[^\\"\n]+', String.Double),160            (r'"', String.Double, '#pop'),161            (r'\\.', String.Double),162            (r'[$\n]', Error, '#pop'),163        ],164        'operators': [165            (r'[-~@#$%\^?!+*<>\\/|&=:.]+', Operator),166            (r'\b_+\b', Operator),167        ],168        'delimiters': [169            (r'[,;(){}\[\]]', Punctuation),170            (r'(\')([\w`.]+)(\')',171                bygroups(Punctuation, Name.Class, Punctuation)),172        ],173        'names': [174            (lowerId, Name),175            (scoreLowerId, Name),176            (funnyId, Name.Function),177            (upperId, Name.Class),178            (scoreUpperId, Name.Class),179        ]180    }181 
codekingpro/portable-devtools · Team Ai