"" "
pygments.lexers.sophia
~~~~~~~~~~~~~~~~~~~~~~
Lexer
for Sophia.
Derived
from pygments/lexers/reason.py.
:copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE
for details.
"" "
from pygments.lexer
import RegexLexer, include, default, words
from pygments.token
import Comment, Keyword, Name, Number, Operator, \
Punctuation, String, Text
__all__ = [
'SophiaLexer' ]
class SophiaLexer(RegexLexer):
"" "
A Sophia lexer.
"" "
name =
'Sophia'
aliases = [
'sophia' ]
filenames = [
'*.aes' ]
mimetypes = []
url =
'https://docs.aeternity.com/aesophia '
version_added =
'2.11'
keywords = (
'contract' ,
'include' ,
'let' ,
'switch' ,
'type' ,
'record' ,
'datatype' ,
'if' ,
'elif' ,
'else' ,
'function' ,
'stateful' ,
'payable' ,
'public' ,
'entrypoint' ,
'private' ,
'indexed' ,
'namespace' ,
'interface' ,
'main' ,
'using' ,
'as' ,
'for' ,
'hiding' ,
)
builtins = (
'state' ,
'put' ,
'abort' ,
'require' )
word_operators = (
'mod' ,
'band' ,
'bor' ,
'bxor' ,
'bnot' )
primitive_types = (
'int' ,
'address' ,
'bool' ,
'bits' ,
'bytes' ,
'string' ,
'list' ,
'option' ,
'char' ,
'unit' ,
'map' ,
'event' ,
'hash' ,
'signature' ,
'oracle' ,
'oracle_query' )
tokens = {
'escape-sequence' : [
(r
'\\[\\"\' ntbr]
', String.Escape),
(r
'\\[0-9]{3}' , String.Escape),
(r
'\\x[0-9a-fA-F]{2}' , String.Escape),
],
'root' : [
(r
'\s+' , Text.Whitespace),
(r
'(true|false)\b' , Keyword.Constant),
(r
'\b([A-Z][\w\' ]*)(?=\s*\.)
', Name.Class, ' dotted
'),
(r
'\b([A-Z][\w\' ]*)
', Name.Function),
(r
'//.*?\n' , Comment.Single),
(r
'\/\*(?!/)' , Comment.Multiline,
'comment' ),
(r
'0[xX][\da-fA-F][\da-fA-F_]*' , Number.Hex),
(r
'#[\da-fA-F][\da-fA-F_]*', Name.Label),
(r
'\d[\d_]*' , Number.Integer),
(words(keywords, suffix=r
'\b' ), Keyword),
(words(builtins, suffix=r
'\b' ), Name.Builtin),
(words(word_operators, prefix=r
'\b' , suffix=r
'\b' ), Operator.Word),
(words(primitive_types, prefix=r
'\b' , suffix=r
'\b' ), Keyword.Type),
(r
'[=!<>+\\*/:&|?~@^-]' , Operator.Word),
(r
'[.;:{}(),\[\]]' , Punctuation),
(r
"(ak_|ok_|oq_|ct_)[\w']*" , Name.Label),
(r
"[^\W\d][\w']*" , Name),
(r
"'(?:(\\[\\\" 'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))' ",
String.Char),
(r
"'.'" , String.Char),
(r
"'[a-z][\w]*" , Name.Variable),
(r
'"' , String.Double,
'string' )
],
'comment' : [
(r
'[^/*]+' , Comment.Multiline),
(r
'\/\*' , Comment.Multiline,
'#push'),
(r
'\*\/' , Comment.Multiline,
'#pop'),
(r
'\*' , Comment.Multiline),
],
'string' : [
(r
'[^\\"]+' , String.Double),
include(
'escape-sequence' ),
(r
'\\\n' , String.Double),
(r
'"' , String.Double,
'#pop'),
],
'dotted' : [
(r
'\s+' , Text),
(r
'\.' , Punctuation),
(r
'[A-Z][\w\' ]*(?=\s*\.)
', Name.Function),
(r
'[A-Z][\w\' ]*
', Name.Function, ' #pop'),
(r
'[a-z_][\w\' ]*
', Name, ' #pop'),
default(
'#pop'),
],
}
Messung V0.5 C=94 H=99 G=96
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland