Server IP : 85.214.239.14 / Your IP : 13.59.1.58 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/task/2/root/proc/2/cwd/usr/lib/python3/dist-packages/pygments/lexers/ |
Upload File : |
""" pygments.lexers.func ~~~~~~~~~~~~~~~~~~~~ Lexers for FunC. :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ from pygments.lexer import RegexLexer, include, words from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Whitespace, Punctuation __all__ = ['FuncLexer'] class FuncLexer(RegexLexer): """ For FunC source code. """ name = 'FunC' aliases = ['func', 'fc'] filenames = ['*.fc', '*.func'] # 1. Does not start from " # 2. Can start from ` and end with `, containing any character # 3. Starts with underscore or { or } and have more than 1 character after it # 4. Starts with letter, contains letters, numbers and underscores identifier = r'(?!")(`([^`]+)`|((?=_)_|(?=\{)\{|(?=\})\}|(?![_`{}]))([^;,\[\]\(\)\s~.]+))' tokens = { 'root': [ (r'\n', Whitespace), (r'\s+', Whitespace), include('keywords'), include('strings'), include('directives'), include('numeric'), include('comments'), include('storage'), include('functions'), include('variables'), (r'[.;(),\[\]~{}]', Punctuation) ], 'keywords': [ (words(( '<=>', '>=', '<=', '!=', '==', '^>>', '~>>', '>>', '<<', '/%', '^%', '~%', '^/', '~/', '+=', '-=', '*=', '/=', '~/=', '^/=', '%=', '^%=', '<<=', '>>=', '~>>=', '^>>=', '&=', '|=', '^=', '^', '=', '~', '/', '%', '-', '*', '+','>', '<', '&', '|', ':', '?'), prefix=r'(?<=\s)', suffix=r'(?=\s)'), Operator), (words(( 'if', 'ifnot', 'else', 'elseif', 'elseifnot', 'while', 'do', 'until', 'repeat', 'return', 'impure', 'method_id', 'forall', 'asm', 'inline', 'inline_ref'), prefix=r'\b', suffix=r'\b'), Keyword), (words(('true', 'false'), prefix=r'\b', suffix=r'\b'), Keyword.Constant), ], 'directives': [ (r'#include|#pragma', Keyword, 'directive'), ], 'directive': [ include('strings'), (r'\s+', Whitespace), (r'version|not-version', Keyword), (r'(>=|<=|=|>|<|\^)?([0-9]+)(.[0-9]+)?(.[0-9]+)?', Number), # version (r';', Text, '#pop') ], 'strings': [ (r'\"([^\n\"]+)\"[Hhcusa]?', String), ], 'numeric': [ (r'\b(-?(?!_)([\d_]+|0x[\d_a-fA-F]+)|0b[1_0]+)(?<!_)(?=[\s\)\],;])', Number) ], 'comments': [ (r';;([^\n]*)', Comment.Singleline), (r'\{-', Comment.Multiline, 'comment'), ], 'comment': [ (r'[^-}{]+', Comment.Multiline), (r'\{-', Comment.Multiline, '#push'), (r'-\}', Comment.Multiline, '#pop'), (r'[-}{]', Comment.Multiline), ], 'storage': [ (words(( 'var', 'int', 'slice', 'tuple', 'cell', 'builder', 'cont', '_'), prefix=r'\b', suffix=r'(?=[\s\(\),\[\]])'), Keyword.Type), (words(('global', 'const'), prefix=r'\b', suffix=r'\b'), Keyword.Constant), ], 'variables': [ (identifier, Name.Variable), ], 'functions': [ # identifier followed by ( (identifier + r'(?=[\(])', Name.Function), ] }