"" "
pygments.lexers.elm
~~~~~~~~~~~~~~~~~~~
Lexer
for the Elm programming language.
:copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE
for details.
"" "
from pygments.lexer
import RegexLexer, words, include, bygroups
from pygments.token
import Comment, Keyword, Name, Number, Punctuation, \
String, Whitespace
__all__ = [
'ElmLexer' ]
class ElmLexer(RegexLexer):
"" "
For Elm source code.
"" "
name =
'Elm'
url =
'https://elm-lang.org/ '
aliases = [
'elm' ]
filenames = [
'*.elm' ]
mimetypes = [
'text/x-elm' ]
version_added =
'2.1'
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+' , Whitespace),
# Strings
(r
'"' , String,
'doublequote' ),
# Modules
(r
'^(\s*)(module)(\s*)' , bygroups(Whitespace, Keyword.Namespace,
Whitespace),
'imports' ),
# Imports
(r
'^(\s*)(import)(\s*)' , bygroups(Whitespace, Keyword.Namespace,
Whitespace),
'imports' ),
# Shaders
(r
'\[glsl\|.*' , Name.Entity,
'shader' ),
# Keywords
(reservedWords, Keyword.Reserved),
# Types
(r
'[A-Z][a-zA-Z0-9_]*' , 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)' , bygroups(Name.Entity, Whitespace)),
],
}
Messung V0.5 C=89 H=80 G=84
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland