"" "
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')
]
}
quality 98%
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland