aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Pygments/py3/pygments/lexers/pointless.py
blob: 397de3a2c64758a73281ddb667a0dc0ec6e7807f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
""" 
    pygments.lexers.pointless 
    ~~~~~~~~~~~~~~~~~~~~~~~~~ 
 
    Lexers for Pointless. 
 
    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. 
    :license: BSD, see LICENSE for details. 
""" 
 
from pygments.lexer import RegexLexer, words 
from pygments.token import Comment, Error, Keyword, Name, Number, Operator, \ 
    Punctuation, String, Text 
 
__all__ = ['PointlessLexer'] 
 
 
class PointlessLexer(RegexLexer): 
    """ 
    For `Pointless <https://ptls.dev>`_ source code. 
 
    .. versionadded:: 2.7 
    """ 
 
    name = 'Pointless' 
    aliases = ['pointless'] 
    filenames = ['*.ptls'] 
 
    ops = words([ 
        "+", "-", "*", "/", "**", "%", "+=", "-=", "*=", 
        "/=", "**=", "%=", "|>", "=", "==", "!=", "<", ">", 
        "<=", ">=", "=>", "$", "++", 
    ]) 
 
    keywords = words([ 
        "if", "then", "else", "where", "with", "cond", 
        "case", "and", "or", "not", "in", "as", "for", 
        "requires", "throw", "try", "catch", "when", 
        "yield", "upval", 
    ], suffix=r'\b') 
 
    tokens = { 
        'root': [ 
            (r'[ \n\r]+', Text), 
            (r'--.*$', Comment.Single), 
            (r'"""', String, 'multiString'), 
            (r'"', String, 'string'), 
            (r'[\[\](){}:;,.]', Punctuation), 
            (ops, Operator), 
            (keywords, Keyword), 
            (r'\d+|\d*\.\d+', Number), 
            (r'(true|false)\b', Name.Builtin), 
            (r'[A-Z][a-zA-Z0-9]*\b', String.Symbol), 
            (r'output\b', Name.Variable.Magic), 
            (r'(export|import)\b', Keyword.Namespace), 
            (r'[a-z][a-zA-Z0-9]*\b', Name.Variable) 
        ], 
        'multiString': [ 
            (r'\\.', String.Escape), 
            (r'"""', String, '#pop'), 
            (r'"', String), 
            (r'[^\\"]+', String), 
        ], 
        'string': [ 
            (r'\\.', String.Escape), 
            (r'"', String, '#pop'), 
            (r'\n', Error), 
            (r'[^\\"]+', String), 
        ], 
    }