Thu, 14 Jan 2021 18:14:15 +0100
Third Party packages
- updated Pygments to 2.7.4
7983
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
2 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
3 | pygments.lexers.elm |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
4 | ~~~~~~~~~~~~~~~~~~~ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
5 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
6 | Lexer for the Elm programming language. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
7 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
8 | :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
9 | :license: BSD, see LICENSE for details. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
10 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
11 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
12 | from pygments.lexer import RegexLexer, words, include |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
13 | from pygments.token import Comment, Keyword, Name, Number, Punctuation, String, Text |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
14 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
15 | __all__ = ['ElmLexer'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
16 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
17 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
18 | class ElmLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
19 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
20 | For `Elm <http://elm-lang.org/>`_ source code. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
21 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
22 | .. versionadded:: 2.1 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
23 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
24 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
25 | name = 'Elm' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
26 | aliases = ['elm'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
27 | filenames = ['*.elm'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
28 | mimetypes = ['text/x-elm'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
29 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
30 | validName = r'[a-z_][a-zA-Z0-9_\']*' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
31 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
32 | specialName = r'^main ' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
33 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
34 | builtinOps = ( |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
35 | '~', '||', '|>', '|', '`', '^', '\\', '\'', '>>', '>=', '>', '==', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
36 | '=', '<~', '<|', '<=', '<<', '<-', '<', '::', ':', '/=', '//', '/', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
37 | '..', '.', '->', '-', '++', '+', '*', '&&', '%', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
38 | ) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
39 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
40 | reservedWords = words(( |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
41 | 'alias', 'as', 'case', 'else', 'if', 'import', 'in', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
42 | 'let', 'module', 'of', 'port', 'then', 'type', 'where', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
43 | ), suffix=r'\b') |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
44 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
45 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
46 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
47 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
48 | # Comments |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
49 | (r'\{-', Comment.Multiline, 'comment'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
50 | (r'--.*', Comment.Single), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
51 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
52 | # Whitespace |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
53 | (r'\s+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
54 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
55 | # Strings |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
56 | (r'"', String, 'doublequote'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
57 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
58 | # Modules |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
59 | (r'^\s*module\s*', Keyword.Namespace, 'imports'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
60 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
61 | # Imports |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
62 | (r'^\s*import\s*', Keyword.Namespace, 'imports'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
63 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
64 | # Shaders |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
65 | (r'\[glsl\|.*', Name.Entity, 'shader'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
66 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
67 | # Keywords |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
68 | (reservedWords, Keyword.Reserved), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
69 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
70 | # Types |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
71 | (r'[A-Z][a-zA-Z0-9_]*', Keyword.Type), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
72 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
73 | # Main |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
74 | (specialName, Keyword.Reserved), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
75 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
76 | # Prefix Operators |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
77 | (words((builtinOps), prefix=r'\(', suffix=r'\)'), Name.Function), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
78 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
79 | # Infix Operators |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
80 | (words(builtinOps), Name.Function), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
81 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
82 | # Numbers |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
83 | include('numbers'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
84 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
85 | # Variable Names |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
86 | (validName, Name.Variable), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
87 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
88 | # Parens |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
89 | (r'[,()\[\]{}]', Punctuation), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
90 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
91 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
92 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
93 | 'comment': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
94 | (r'-(?!\})', Comment.Multiline), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
95 | (r'\{-', Comment.Multiline, 'comment'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
96 | (r'[^-}]', Comment.Multiline), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
97 | (r'-\}', Comment.Multiline, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
98 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
99 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
100 | 'doublequote': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
101 | (r'\\u[0-9a-fA-F]{4}', String.Escape), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
102 | (r'\\[nrfvb\\"]', String.Escape), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
103 | (r'[^"]', String), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
104 | (r'"', String, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
105 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
106 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
107 | 'imports': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
108 | (r'\w+(\.\w+)*', Name.Class, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
109 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
110 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
111 | 'numbers': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
112 | (r'_?\d+\.(?=\d+)', Number.Float), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
113 | (r'_?\d+', Number.Integer), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
114 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
115 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
116 | 'shader': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
117 | (r'\|(?!\])', Name.Entity), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
118 | (r'\|\]', Name.Entity, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
119 | (r'.*\n', Name.Entity), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
120 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
121 | } |