eric6/ThirdParty/Pygments/pygments/lexers/elm.py

changeset 6942
2602857055c5
parent 6651
e8f3b5568b21
child 7547
21b0534faebc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/ThirdParty/Pygments/pygments/lexers/elm.py	Sun Apr 14 15:09:21 2019 +0200
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+"""
+    pygments.lexers.elm
+    ~~~~~~~~~~~~~~~~~~~
+
+    Lexer for the Elm programming language.
+
+    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, words, include
+from pygments.token import Comment, Keyword, Name, Number, Punctuation, String, Text
+
+__all__ = ['ElmLexer']
+
+
+class ElmLexer(RegexLexer):
+    """
+    For `Elm <http://elm-lang.org/>`_ source code.
+
+    .. versionadded:: 2.1
+    """
+
+    name = 'Elm'
+    aliases = ['elm']
+    filenames = ['*.elm']
+    mimetypes = ['text/x-elm']
+
+    validName = r'[a-z_][a-zA-Z0-9_\']*'
+
+    specialName = r'^main '
+
+    builtinOps = (
+        '~', '||', '|>', '|', '`', '^', '\\', '\'', '>>', '>=', '>', '==',
+        '=', '<~', '<|', '<=', '<<', '<-', '<', '::', ':', '/=', '//', '/',
+        '..', '.', '->', '-', '++', '+', '*', '&&', '%',
+    )
+
+    reservedWords = words((
+        'alias', 'as', 'case', 'else', 'if', 'import', 'in',
+        'let', 'module', 'of', 'port', 'then', 'type', 'where',
+        ), suffix=r'\b')
+
+    tokens = {
+        'root': [
+
+            # Comments
+            (r'\{-', Comment.Multiline, 'comment'),
+            (r'--.*', Comment.Single),
+
+            # Whitespace
+            (r'\s+', Text),
+
+            # Strings
+            (r'"', String, 'doublequote'),
+
+            # Modules
+            (r'^\s*module\s*', Keyword.Namespace, 'imports'),
+
+            # Imports
+            (r'^\s*import\s*', Keyword.Namespace, 'imports'),
+
+            # Shaders
+            (r'\[glsl\|.*', Name.Entity, 'shader'),
+
+            # Keywords
+            (reservedWords, Keyword.Reserved),
+
+            # Types
+            (r'[A-Z]\w*', Keyword.Type),
+
+            # Main
+            (specialName, Keyword.Reserved),
+
+            # Prefix Operators
+            (words((builtinOps), prefix=r'\(', suffix=r'\)'), Name.Function),
+
+            # Infix Operators
+            (words((builtinOps)), Name.Function),
+
+            # Numbers
+            include('numbers'),
+
+            # Variable Names
+            (validName, Name.Variable),
+
+            # Parens
+            (r'[,()\[\]{}]', Punctuation),
+
+        ],
+
+        'comment': [
+            (r'-(?!\})', Comment.Multiline),
+            (r'\{-', Comment.Multiline, 'comment'),
+            (r'[^-}]', Comment.Multiline),
+            (r'-\}', Comment.Multiline, '#pop'),
+        ],
+
+        'doublequote': [
+            (r'\\u[0-9a-fA-F]{4}', String.Escape),
+            (r'\\[nrfvb\\"]', String.Escape),
+            (r'[^"]', String),
+            (r'"', String, '#pop'),
+        ],
+
+        'imports': [
+            (r'\w+(\.\w+)*', Name.Class, '#pop'),
+        ],
+
+        'numbers': [
+            (r'_?\d+\.(?=\d+)', Number.Float),
+            (r'_?\d+', Number.Integer),
+        ],
+
+        'shader': [
+            (r'\|(?!\])', Name.Entity),
+            (r'\|\]', Name.Entity, '#pop'),
+            (r'.*\n', Name.Entity),
+        ],
+    }

eric ide

mercurial