ThirdParty/Pygments/pygments/lexers/elm.py

Tue, 25 Apr 2017 18:36:38 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 25 Apr 2017 18:36:38 +0200
changeset 5713
6762afd9f963
parent 4697
c2e9bf425554
child 6651
e8f3b5568b21
permissions
-rw-r--r--

Updated Pygments to 2.2.0.

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

eric ide

mercurial