3 pygments.lexers.clean |
3 pygments.lexers.clean |
4 ~~~~~~~~~~~~~~~~~~~~~ |
4 ~~~~~~~~~~~~~~~~~~~~~ |
5 |
5 |
6 Lexer for the Clean language. |
6 Lexer for the Clean language. |
7 |
7 |
8 :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. |
8 :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS. |
9 :license: BSD, see LICENSE for details. |
9 :license: BSD, see LICENSE for details. |
10 """ |
10 """ |
11 |
11 |
12 from pygments.lexer import ExtendedRegexLexer, words, include, bygroups |
12 from pygments.lexer import ExtendedRegexLexer, words, default, include, bygroups |
13 from pygments.token import Comment, Error, Keyword, Literal, Name, Number, \ |
13 from pygments.token import Comment, Error, Keyword, Literal, Name, Number, \ |
14 Operator, Punctuation, String, Whitespace |
14 Operator, Punctuation, String, Whitespace |
15 |
15 |
16 __all__ = ['CleanLexer'] |
16 __all__ = ['CleanLexer'] |
17 |
17 |
33 'instance', 'let', 'of', 'otherwise', 'special', 'stdcall', 'where', |
33 'instance', 'let', 'of', 'otherwise', 'special', 'stdcall', 'where', |
34 'with') |
34 'with') |
35 |
35 |
36 modulewords = ('implementation', 'definition', 'system') |
36 modulewords = ('implementation', 'definition', 'system') |
37 |
37 |
38 lowerId = r'[a-z`][\w\d`]*' |
38 lowerId = r'[a-z`][\w`]*' |
39 upperId = r'[A-Z`][\w\d`]*' |
39 upperId = r'[A-Z`][\w`]*' |
40 funnyId = r'[~@#\$%\^?!+\-*<>\\/|&=:]+' |
40 funnyId = r'[~@#$%\^?!+\-*<>\\/|&=:]+' |
41 scoreUpperId = r'_' + upperId |
41 scoreUpperId = r'_' + upperId |
42 scoreLowerId = r'_' + lowerId |
42 scoreLowerId = r'_' + lowerId |
43 moduleId = r'[a-zA-Z_][a-zA-Z0-9_.`]+' |
43 moduleId = r'[a-zA-Z_][a-zA-Z0-9_.`]+' |
44 classId = '|'.join([lowerId, upperId, funnyId]) |
44 classId = '|'.join([lowerId, upperId, funnyId]) |
45 |
45 |
90 'import.module': [ |
90 'import.module': [ |
91 (r'\b(qualified)\b(\s*)', bygroups(Keyword, Whitespace)), |
91 (r'\b(qualified)\b(\s*)', bygroups(Keyword, Whitespace)), |
92 (r'(\s*)\b(as)\b', bygroups(Whitespace, Keyword), ('#pop', 'import.module.as')), |
92 (r'(\s*)\b(as)\b', bygroups(Whitespace, Keyword), ('#pop', 'import.module.as')), |
93 (moduleId, Name.Class), |
93 (moduleId, Name.Class), |
94 (r'(\s*)(,)(\s*)', bygroups(Whitespace, Punctuation, Whitespace)), |
94 (r'(\s*)(,)(\s*)', bygroups(Whitespace, Punctuation, Whitespace)), |
95 (r'\s*', Whitespace, '#pop'), |
95 (r'\s+', Whitespace), |
|
96 default('#pop'), |
96 ], |
97 ], |
97 'import.module.as': [ |
98 'import.module.as': [ |
98 include('whitespace'), |
99 include('whitespace'), |
99 (lowerId, Name.Class, '#pop'), |
100 (lowerId, Name.Class, '#pop'), |
100 (upperId, Name.Class, '#pop'), |
101 (upperId, Name.Class, '#pop'), |
158 (r'"', String.Double, '#pop'), |
159 (r'"', String.Double, '#pop'), |
159 (r'\\.', String.Double), |
160 (r'\\.', String.Double), |
160 (r'[$\n]', Error, '#pop'), |
161 (r'[$\n]', Error, '#pop'), |
161 ], |
162 ], |
162 'operators': [ |
163 'operators': [ |
163 (r'[-~@#\$%\^?!+*<>\\/|&=:\.]+', Operator), |
164 (r'[-~@#$%\^?!+*<>\\/|&=:.]+', Operator), |
164 (r'\b_+\b', Operator), |
165 (r'\b_+\b', Operator), |
165 ], |
166 ], |
166 'delimiters': [ |
167 'delimiters': [ |
167 (r'[,;(){}\[\]]', Punctuation), |
168 (r'[,;(){}\[\]]', Punctuation), |
168 (r'(\')([\w`.]+)(\')', |
169 (r'(\')([\w`.]+)(\')', |