"" "
pygments.lexers.berry
~~~~~~~~~~~~~~~~~~~~~
Lexer
for Berry.
: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, Whitespace, Operator, Keyword, Name, \
String, Number, Punctuation
__all__ = [
'BerryLexer' ]
class BerryLexer(RegexLexer):
"" "
For Berry source code.
"" "
name =
'Berry'
aliases = [
'berry' ,
'be' ]
filenames = [
'*.be' ]
mimetypes = [
'text/x-berry' ,
'application/x-berry' ]
url =
'https://berry-lang.github.io '
version_added =
'2.12'
_name = r
'\b[^\W\d]\w*'
tokens = {
'root' : [
include(
'whitespace' ),
include(
'numbers' ),
include(
'keywords' ),
(rf
'(def)(\s+)({_name})' ,
bygroups(Keyword.Declaration, Whitespace, Name.Function)),
(rf
'\b(class)(\s+)({_name})' ,
bygroups(Keyword.Declaration, Whitespace, Name.
Class )),
(rf
'\b(import)(\s+)({_name})' ,
bygroups(Keyword.Namespace, Whitespace, Name.Namespace)),
include(
'expr' )
],
'expr' : [
(r
'[^\S\n]+' , Whitespace),
(r
'\.\.|[~!%^&*+=|?:<>/-]' , Operator),
(r
'[(){}\[\],.;]' , Punctuation),
include(
'controls' ),
include(
'builtins' ),
include(
'funccall' ),
include(
'member' ),
include(
'name' ),
include(
'strings' )
],
'whitespace' : [
(r
'\s+' , Whitespace),
(r
'#-(.|\n)*?-#', Comment.Multiline),
(r
'#.*?$', Comment.Single)
],
'keywords' : [
(words((
'as' ,
'break' ,
'continue' ,
'import' ,
'static' ,
'self' ,
'super' ),
suffix=r
'\b' ), Keyword.Reserved),
(r
'(true|false|nil)\b' , Keyword.Constant),
(r
'(var|def)\b' , Keyword.Declaration)
],
'controls' : [
(words((
'if' ,
'elif' ,
'else' ,
'for' ,
'while' ,
'do' ,
'end' ,
'break' ,
'continue' ,
'return' ,
'try' ,
'except' ,
'raise' ),
suffix=r
'\b' ), Keyword)
],
'builtins' : [
(words((
'assert' ,
'bool' ,
'input' ,
'classname' ,
'classof' ,
'number' ,
'real' ,
'bytes' ,
'compile' ,
'map' ,
'list' ,
'int' ,
'isinstance' ,
'print' ,
'range' ,
'str' ,
'super' ,
'module' ,
'size' ,
'issubclass' ,
'open' ,
'file' ,
'type' ,
'call' ),
suffix=r
'\b' ), Name.Builtin)
],
'numbers' : [
(r
'0[xX][a-fA-F0-9]+' , Number.Hex),
(r
'-?\d+' , Number.Integer),
(r
'(-?\d+\.?|\.\d)\d*([eE][+-]?\d+)?' , Number.Float)
],
'name' : [
(_name, Name)
],
'funccall' : [
(rf
'{_name}(?=\s*\()' , Name.Function,
'#pop')
],
'member' : [
(rf
'(?<=\.){_name}\b(?!\()' , Name.Attribute,
'#pop')
],
'strings' : [
(r
'"([^\\]|\\.)*?"' , String.Double,
'#pop'),
(r
'\' ([^\\]|\\.)*?\
'' , String.Single,
'#pop')
]
}
Messung V0.5 C=89 H=83 G=85
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland