Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
c_like.py739 linesDownload Raw Back to lexers
1"""2    pygments.lexers.c_like3    ~~~~~~~~~~~~~~~~~~~~~~4 5    Lexers for other C-like languages.6 7    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11import re12 13from pygments.lexer import RegexLexer, include, bygroups, inherit, words, \14    default15from pygments.token import Text, Comment, Operator, Keyword, Name, String, \16    Number, Punctuation, Whitespace17 18from pygments.lexers.c_cpp import CLexer, CppLexer19from pygments.lexers import _mql_builtins20 21__all__ = ['PikeLexer', 'NesCLexer', 'ClayLexer', 'ECLexer', 'ValaLexer',22           'CudaLexer', 'SwigLexer', 'MqlLexer', 'ArduinoLexer', 'CharmciLexer',23           'OmgIdlLexer', 'PromelaLexer']24 25 26class PikeLexer(CppLexer):27    """28    For `Pike <http://pike.lysator.liu.se/>`_ source code.29    """30    name = 'Pike'31    aliases = ['pike']32    filenames = ['*.pike', '*.pmod']33    mimetypes = ['text/x-pike']34    version_added = '2.0'35 36    tokens = {37        'statements': [38            (words((39                'catch', 'new', 'private', 'protected', 'public', 'gauge',40                'throw', 'throws', 'class', 'interface', 'implement', 'abstract',41                'extends', 'from', 'this', 'super', 'constant', 'final', 'static',42                'import', 'use', 'extern', 'inline', 'proto', 'break', 'continue',43                'if', 'else', 'for', 'while', 'do', 'switch', 'case', 'as', 'in',44                'version', 'return', 'true', 'false', 'null',45                '__VERSION__', '__MAJOR__', '__MINOR__', '__BUILD__', '__REAL_VERSION__',46                '__REAL_MAJOR__', '__REAL_MINOR__', '__REAL_BUILD__', '__DATE__', '__TIME__',47                '__FILE__', '__DIR__', '__LINE__', '__AUTO_BIGNUM__', '__NT__', '__PIKE__',48                '__amigaos__', '_Pragma', 'static_assert', 'defined', 'sscanf'), suffix=r'\b'),49             Keyword),50            (r'(bool|int|long|float|short|double|char|string|object|void|mapping|'51             r'array|multiset|program|function|lambda|mixed|'52             r'[a-z_][a-z0-9_]*_t)\b',53             Keyword.Type),54            (r'(class)(\s+)', bygroups(Keyword, Whitespace), 'classname'),55            (r'[~!%^&*+=|?:<>/@-]', Operator),56            inherit,57        ],58        'classname': [59            (r'[a-zA-Z_]\w*', Name.Class, '#pop'),60            # template specification61            (r'\s*(?=>)', Whitespace, '#pop'),62        ],63    }64 65 66class NesCLexer(CLexer):67    """68    For `nesC <https://github.com/tinyos/nesc>`_ source code with preprocessor69    directives.70    """71    name = 'nesC'72    aliases = ['nesc']73    filenames = ['*.nc']74    mimetypes = ['text/x-nescsrc']75    version_added = '2.0'76 77    tokens = {78        'statements': [79            (words((80                'abstract', 'as', 'async', 'atomic', 'call', 'command', 'component',81                'components', 'configuration', 'event', 'extends', 'generic',82                'implementation', 'includes', 'interface', 'module', 'new', 'norace',83                'post', 'provides', 'signal', 'task', 'uses'), suffix=r'\b'),84             Keyword),85            (words(('nx_struct', 'nx_union', 'nx_int8_t', 'nx_int16_t', 'nx_int32_t',86                    'nx_int64_t', 'nx_uint8_t', 'nx_uint16_t', 'nx_uint32_t',87                    'nx_uint64_t'), suffix=r'\b'),88             Keyword.Type),89            inherit,90        ],91    }92 93 94class ClayLexer(RegexLexer):95    """96    For Clay source.97    """98    name = 'Clay'99    filenames = ['*.clay']100    aliases = ['clay']101    mimetypes = ['text/x-clay']102    url = 'http://claylabs.com/clay'103    version_added = '2.0'104 105    tokens = {106        'root': [107            (r'\s+', Whitespace),108            (r'//.*?$', Comment.Single),109            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),110            (r'\b(public|private|import|as|record|variant|instance'111             r'|define|overload|default|external|alias'112             r'|rvalue|ref|forward|inline|noinline|forceinline'113             r'|enum|var|and|or|not|if|else|goto|return|while'114             r'|switch|case|break|continue|for|in|true|false|try|catch|throw'115             r'|finally|onerror|staticassert|eval|when|newtype'116             r'|__FILE__|__LINE__|__COLUMN__|__ARG__'117             r')\b', Keyword),118            (r'[~!%^&*+=|:<>/-]', Operator),119            (r'[#(){}\[\],;.]', Punctuation),120            (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),121            (r'\d+[LlUu]*', Number.Integer),122            (r'\b(true|false)\b', Name.Builtin),123            (r'(?i)[a-z_?][\w?]*', Name),124            (r'"""', String, 'tdqs'),125            (r'"', String, 'dqs'),126        ],127        'strings': [128            (r'(?i)\\(x[0-9a-f]{2}|.)', String.Escape),129            (r'[^\\"]+', String),130        ],131        'nl': [132            (r'\n', String),133        ],134        'dqs': [135            (r'"', String, '#pop'),136            include('strings'),137        ],138        'tdqs': [139            (r'"""', String, '#pop'),140            include('strings'),141            include('nl'),142        ],143    }144 145 146class ECLexer(CLexer):147    """148    For eC source code with preprocessor directives.149    """150    name = 'eC'151    aliases = ['ec']152    filenames = ['*.ec', '*.eh']153    mimetypes = ['text/x-echdr', 'text/x-ecsrc']154    url = 'https://ec-lang.org'155    version_added = '1.5'156 157    tokens = {158        'statements': [159            (words((160                'virtual', 'class', 'private', 'public', 'property', 'import',161                'delete', 'new', 'new0', 'renew', 'renew0', 'define', 'get',162                'set', 'remote', 'dllexport', 'dllimport', 'stdcall', 'subclass',163                '__on_register_module', 'namespace', 'using', 'typed_object',164                'any_object', 'incref', 'register', 'watch', 'stopwatching', 'firewatchers',165                'watchable', 'class_designer', 'class_fixed', 'class_no_expansion', 'isset',166                'class_default_property', 'property_category', 'class_data',167                'class_property', 'thisclass', 'dbtable', 'dbindex',168                'database_open', 'dbfield'), suffix=r'\b'), Keyword),169            (words(('uint', 'uint16', 'uint32', 'uint64', 'bool', 'byte',170                    'unichar', 'int64'), suffix=r'\b'),171             Keyword.Type),172            (r'(class)(\s+)', bygroups(Keyword, Whitespace), 'classname'),173            (r'(null|value|this)\b', Name.Builtin),174            inherit,175        ]176    }177 178 179class ValaLexer(RegexLexer):180    """181    For Vala source code with preprocessor directives.182    """183    name = 'Vala'184    aliases = ['vala', 'vapi']185    filenames = ['*.vala', '*.vapi']186    mimetypes = ['text/x-vala']187    url = 'https://vala.dev'188    version_added = '1.1'189 190    tokens = {191        'whitespace': [192            (r'^\s*#if\s+0', Comment.Preproc, 'if0'),193            (r'\n', Whitespace),194            (r'\s+', Whitespace),195            (r'\\\n', Text),  # line continuation196            (r'//(\n|(.|\n)*?[^\\]\n)', Comment.Single),197            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),198        ],199        'statements': [200            (r'[L@]?"', String, 'string'),201            (r"L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'",202             String.Char),203            (r'(?s)""".*?"""', String),  # verbatim strings204            (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),205            (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),206            (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),207            (r'0[0-7]+[Ll]?', Number.Oct),208            (r'\d+[Ll]?', Number.Integer),209            (r'[~!%^&*+=|?:<>/-]', Operator),210            (r'(\[)(Compact|Immutable|(?:Boolean|Simple)Type)(\])',211             bygroups(Punctuation, Name.Decorator, Punctuation)),212            # TODO: "correctly" parse complex code attributes213            (r'(\[)(CCode|(?:Integer|Floating)Type)',214             bygroups(Punctuation, Name.Decorator)),215            (r'[()\[\],.]', Punctuation),216            (words((217                'as', 'base', 'break', 'case', 'catch', 'construct', 'continue',218                'default', 'delete', 'do', 'else', 'enum', 'finally', 'for',219                'foreach', 'get', 'if', 'in', 'is', 'lock', 'new', 'out', 'params',220                'return', 'set', 'sizeof', 'switch', 'this', 'throw', 'try',221                'typeof', 'while', 'yield'), suffix=r'\b'),222             Keyword),223            (words((224                'abstract', 'const', 'delegate', 'dynamic', 'ensures', 'extern',225                'inline', 'internal', 'override', 'owned', 'private', 'protected',226                'public', 'ref', 'requires', 'signal', 'static', 'throws', 'unowned',227                'var', 'virtual', 'volatile', 'weak', 'yields'), suffix=r'\b'),228             Keyword.Declaration),229            (r'(namespace|using)(\s+)', bygroups(Keyword.Namespace, Whitespace),230             'namespace'),231            (r'(class|errordomain|interface|struct)(\s+)',232             bygroups(Keyword.Declaration, Whitespace), 'class'),233            (r'(\.)([a-zA-Z_]\w*)',234             bygroups(Operator, Name.Attribute)),235            # void is an actual keyword, others are in glib-2.0.vapi236            (words((237                'void', 'bool', 'char', 'double', 'float', 'int', 'int8', 'int16',238                'int32', 'int64', 'long', 'short', 'size_t', 'ssize_t', 'string',239                'time_t', 'uchar', 'uint', 'uint8', 'uint16', 'uint32', 'uint64',240                'ulong', 'unichar', 'ushort'), suffix=r'\b'),241             Keyword.Type),242            (r'(true|false|null)\b', Name.Builtin),243            (r'[a-zA-Z_]\w*', Name),244        ],245        'root': [246            include('whitespace'),247            default('statement'),248        ],249        'statement': [250            include('whitespace'),251            include('statements'),252            ('[{}]', Punctuation),253            (';', Punctuation, '#pop'),254        ],255        'string': [256            (r'"', String, '#pop'),257            (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),258            (r'[^\\"\n]+', String),  # all other characters259            (r'\\\n', String),  # line continuation260            (r'\\', String),  # stray backslash261        ],262        'if0': [263            (r'^\s*#if.*?(?<!\\)\n', Comment.Preproc, '#push'),264            (r'^\s*#el(?:se|if).*\n', Comment.Preproc, '#pop'),265            (r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),266            (r'.*?\n', Comment),267        ],268        'class': [269            (r'[a-zA-Z_]\w*', Name.Class, '#pop')270        ],271        'namespace': [272            (r'[a-zA-Z_][\w.]*', Name.Namespace, '#pop')273        ],274    }275 276 277class CudaLexer(CLexer):278    """279    For NVIDIA CUDA™ source.280    """281    name = 'CUDA'282    filenames = ['*.cu', '*.cuh']283    aliases = ['cuda', 'cu']284    mimetypes = ['text/x-cuda']285    url = 'https://developer.nvidia.com/category/zone/cuda-zone'286    version_added = '1.6'287 288    function_qualifiers = {'__device__', '__global__', '__host__',289                           '__noinline__', '__forceinline__'}290    variable_qualifiers = {'__device__', '__constant__', '__shared__',291                           '__restrict__'}292    vector_types = {'char1', 'uchar1', 'char2', 'uchar2', 'char3', 'uchar3',293                    'char4', 'uchar4', 'short1', 'ushort1', 'short2', 'ushort2',294                    'short3', 'ushort3', 'short4', 'ushort4', 'int1', 'uint1',295                    'int2', 'uint2', 'int3', 'uint3', 'int4', 'uint4', 'long1',296                    'ulong1', 'long2', 'ulong2', 'long3', 'ulong3', 'long4',297                    'ulong4', 'longlong1', 'ulonglong1', 'longlong2',298                    'ulonglong2', 'float1', 'float2', 'float3', 'float4',299                    'double1', 'double2', 'dim3'}300    variables = {'gridDim', 'blockIdx', 'blockDim', 'threadIdx', 'warpSize'}301    functions = {'__threadfence_block', '__threadfence', '__threadfence_system',302                 '__syncthreads', '__syncthreads_count', '__syncthreads_and',303                 '__syncthreads_or'}304    execution_confs = {'<<<', '>>>'}305 306    def get_tokens_unprocessed(self, text, stack=('root',)):307        for index, token, value in CLexer.get_tokens_unprocessed(self, text, stack):308            if token is Name:309                if value in self.variable_qualifiers:310                    token = Keyword.Type311                elif value in self.vector_types:312                    token = Keyword.Type313                elif value in self.variables:314                    token = Name.Builtin315                elif value in self.execution_confs:316                    token = Keyword.Pseudo317                elif value in self.function_qualifiers:318                    token = Keyword.Reserved319                elif value in self.functions:320                    token = Name.Function321            yield index, token, value322 323 324class SwigLexer(CppLexer):325    """326    For `SWIG <http://www.swig.org/>`_ source code.327    """328    name = 'SWIG'329    aliases = ['swig']330    filenames = ['*.swg', '*.i']331    mimetypes = ['text/swig']332    version_added = '2.0'333    priority = 0.04  # Lower than C/C++ and Objective C/C++334 335    tokens = {336        'root': [337            # Match it here so it won't be matched as a function in the rest of root338            (r'\$\**\&?\w+', Name),339            inherit340        ],341        'statements': [342            # SWIG directives343            (r'(%[a-z_][a-z0-9_]*)', Name.Function),344            # Special variables345            (r'\$\**\&?\w+', Name),346            # Stringification / additional preprocessor directives347            (r'##*[a-zA-Z_]\w*', Comment.Preproc),348            inherit,349        ],350    }351 352    # This is a far from complete set of SWIG directives353    swig_directives = {354        # Most common directives355        '%apply', '%define', '%director', '%enddef', '%exception', '%extend',356        '%feature', '%fragment', '%ignore', '%immutable', '%import', '%include',357        '%inline', '%insert', '%module', '%newobject', '%nspace', '%pragma',358        '%rename', '%shared_ptr', '%template', '%typecheck', '%typemap',359        # Less common directives360        '%arg', '%attribute', '%bang', '%begin', '%callback', '%catches', '%clear',361        '%constant', '%copyctor', '%csconst', '%csconstvalue', '%csenum',362        '%csmethodmodifiers', '%csnothrowexception', '%default', '%defaultctor',363        '%defaultdtor', '%defined', '%delete', '%delobject', '%descriptor',364        '%exceptionclass', '%exceptionvar', '%extend_smart_pointer', '%fragments',365        '%header', '%ifcplusplus', '%ignorewarn', '%implicit', '%implicitconv',366        '%init', '%javaconst', '%javaconstvalue', '%javaenum', '%javaexception',367        '%javamethodmodifiers', '%kwargs', '%luacode', '%mutable', '%naturalvar',368        '%nestedworkaround', '%perlcode', '%pythonabc', '%pythonappend',369        '%pythoncallback', '%pythoncode', '%pythondynamic', '%pythonmaybecall',370        '%pythonnondynamic', '%pythonprepend', '%refobject', '%shadow', '%sizeof',371        '%trackobjects', '%types', '%unrefobject', '%varargs', '%warn',372        '%warnfilter'}373 374    def analyse_text(text):375        rv = 0376        # Search for SWIG directives, which are conventionally at the beginning of377        # a line. The probability of them being within a line is low, so let another378        # lexer win in this case.379        matches = re.findall(r'^\s*(%[a-z_][a-z0-9_]*)', text, re.M)380        for m in matches:381            if m in SwigLexer.swig_directives:382                rv = 0.98383                break384            else:385                rv = 0.91  # Fraction higher than MatlabLexer386        return rv387 388 389class MqlLexer(CppLexer):390    """391    For `MQL4 <http://docs.mql4.com/>`_ and392    `MQL5 <http://www.mql5.com/en/docs>`_ source code.393    """394    name = 'MQL'395    aliases = ['mql', 'mq4', 'mq5', 'mql4', 'mql5']396    filenames = ['*.mq4', '*.mq5', '*.mqh']397    mimetypes = ['text/x-mql']398    version_added = '2.0'399 400    tokens = {401        'statements': [402            (words(_mql_builtins.keywords, suffix=r'\b'), Keyword),403            (words(_mql_builtins.c_types, suffix=r'\b'), Keyword.Type),404            (words(_mql_builtins.types, suffix=r'\b'), Name.Function),405            (words(_mql_builtins.constants, suffix=r'\b'), Name.Constant),406            (words(_mql_builtins.colors, prefix='(clr)?', suffix=r'\b'),407             Name.Constant),408            inherit,409        ],410    }411 412 413class ArduinoLexer(CppLexer):414    """415    For `Arduino(tm) <https://arduino.cc/>`_ source.416 417    This is an extension of the CppLexer, as the Arduino® Language is a superset418    of C++419    """420 421    name = 'Arduino'422    aliases = ['arduino']423    filenames = ['*.ino']424    mimetypes = ['text/x-arduino']425    version_added = '2.1'426 427    # Language sketch main structure functions428    structure = {'setup', 'loop'}429 430    # Language operators431    operators = {'not', 'or', 'and', 'xor'}432 433    # Language 'variables'434    variables = {435        'DIGITAL_MESSAGE', 'FIRMATA_STRING', 'ANALOG_MESSAGE', 'REPORT_DIGITAL',436        'REPORT_ANALOG', 'INPUT_PULLUP', 'SET_PIN_MODE', 'INTERNAL2V56', 'SYSTEM_RESET',437        'LED_BUILTIN', 'INTERNAL1V1', 'SYSEX_START', 'INTERNAL', 'EXTERNAL', 'HIGH',438        'LOW', 'INPUT', 'OUTPUT', 'INPUT_PULLUP', 'LED_BUILTIN', 'true', 'false',439        'void', 'boolean', 'char', 'unsigned char', 'byte', 'int', 'unsigned int',440        'word', 'long', 'unsigned long', 'short', 'float', 'double', 'string', 'String',441        'array', 'static', 'volatile', 'const', 'boolean', 'byte', 'word', 'string',442        'String', 'array', 'int', 'float', 'private', 'char', 'virtual', 'operator',443        'sizeof', 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', 'int8_t', 'int16_t',444        'int32_t', 'int64_t', 'dynamic_cast', 'typedef', 'const_cast', 'const',445        'struct', 'static_cast', 'union', 'unsigned', 'long', 'volatile', 'static',446        'protected', 'bool', 'public', 'friend', 'auto', 'void', 'enum', 'extern',447        'class', 'short', 'reinterpret_cast', 'double', 'register', 'explicit',448        'signed', 'inline', 'delete', '_Bool', 'complex', '_Complex', '_Imaginary',449        'atomic_bool', 'atomic_char', 'atomic_schar', 'atomic_uchar', 'atomic_short',450        'atomic_ushort', 'atomic_int', 'atomic_uint', 'atomic_long', 'atomic_ulong',451        'atomic_llong', 'atomic_ullong', 'PROGMEM'}452 453    # Language shipped functions and class ( )454    functions = {455        'KeyboardController', 'MouseController', 'SoftwareSerial', 'EthernetServer',456        'EthernetClient', 'LiquidCrystal', 'RobotControl', 'GSMVoiceCall',457        'EthernetUDP', 'EsploraTFT', 'HttpClient', 'RobotMotor', 'WiFiClient',458        'GSMScanner', 'FileSystem', 'Scheduler', 'GSMServer', 'YunClient', 'YunServer',459        'IPAddress', 'GSMClient', 'GSMModem', 'Keyboard', 'Ethernet', 'Console',460        'GSMBand', 'Esplora', 'Stepper', 'Process', 'WiFiUDP', 'GSM_SMS', 'Mailbox',461        'USBHost', 'Firmata', 'PImage', 'Client', 'Server', 'GSMPIN', 'FileIO',462        'Bridge', 'Serial', 'EEPROM', 'Stream', 'Mouse', 'Audio', 'Servo', 'File',463        'Task', 'GPRS', 'WiFi', 'Wire', 'TFT', 'GSM', 'SPI', 'SD',464        'runShellCommandAsynchronously', 'analogWriteResolution',465        'retrieveCallingNumber', 'printFirmwareVersion', 'analogReadResolution',466        'sendDigitalPortPair', 'noListenOnLocalhost', 'readJoystickButton',467        'setFirmwareVersion', 'readJoystickSwitch', 'scrollDisplayRight',468        'getVoiceCallStatus', 'scrollDisplayLeft', 'writeMicroseconds',469        'delayMicroseconds', 'beginTransmission', 'getSignalStrength',470        'runAsynchronously', 'getAsynchronously', 'listenOnLocalhost',471        'getCurrentCarrier', 'readAccelerometer', 'messageAvailable',472        'sendDigitalPorts', 'lineFollowConfig', 'countryNameWrite', 'runShellCommand',473        'readStringUntil', 'rewindDirectory', 'readTemperature', 'setClockDivider',474        'readLightSensor', 'endTransmission', 'analogReference', 'detachInterrupt',475        'countryNameRead', 'attachInterrupt', 'encryptionType', 'readBytesUntil',476        'robotNameWrite', 'readMicrophone', 'robotNameRead', 'cityNameWrite',477        'userNameWrite', 'readJoystickY', 'readJoystickX', 'mouseReleased',478        'openNextFile', 'scanNetworks', 'noInterrupts', 'digitalWrite', 'beginSpeaker',479        'mousePressed', 'isActionDone', 'mouseDragged', 'displayLogos', 'noAutoscroll',480        'addParameter', 'remoteNumber', 'getModifiers', 'keyboardRead', 'userNameRead',481        'waitContinue', 'processInput', 'parseCommand', 'printVersion', 'readNetworks',482        'writeMessage', 'blinkVersion', 'cityNameRead', 'readMessage', 'setDataMode',483        'parsePacket', 'isListening', 'setBitOrder', 'beginPacket', 'isDirectory',484        'motorsWrite', 'drawCompass', 'digitalRead', 'clearScreen', 'serialEvent',485        'rightToLeft', 'setTextSize', 'leftToRight', 'requestFrom', 'keyReleased',486        'compassRead', 'analogWrite', 'interrupts', 'WiFiServer', 'disconnect',487        'playMelody', 'parseFloat', 'autoscroll', 'getPINUsed', 'setPINUsed',488        'setTimeout', 'sendAnalog', 'readSlider', 'analogRead', 'beginWrite',489        'createChar', 'motorsStop', 'keyPressed', 'tempoWrite', 'readButton',490        'subnetMask', 'debugPrint', 'macAddress', 'writeGreen', 'randomSeed',491        'attachGPRS', 'readString', 'sendString', 'remotePort', 'releaseAll',492        'mouseMoved', 'background', 'getXChange', 'getYChange', 'answerCall',493        'getResult', 'voiceCall', 'endPacket', 'constrain', 'getSocket', 'writeJSON',494        'getButton', 'available', 'connected', 'findUntil', 'readBytes', 'exitValue',495        'readGreen', 'writeBlue', 'startLoop', 'IPAddress', 'isPressed', 'sendSysex',496        'pauseMode', 'gatewayIP', 'setCursor', 'getOemKey', 'tuneWrite', 'noDisplay',497        'loadImage', 'switchPIN', 'onRequest', 'onReceive', 'changePIN', 'playFile',498        'noBuffer', 'parseInt', 'overflow', 'checkPIN', 'knobRead', 'beginTFT',499        'bitClear', 'updateIR', 'bitWrite', 'position', 'writeRGB', 'highByte',500        'writeRed', 'setSpeed', 'readBlue', 'noStroke', 'remoteIP', 'transfer',501        'shutdown', 'hangCall', 'beginSMS', 'endWrite', 'attached', 'maintain',502        'noCursor', 'checkReg', 'checkPUK', 'shiftOut', 'isValid', 'shiftIn', 'pulseIn',503        'connect', 'println', 'localIP', 'pinMode', 'getIMEI', 'display', 'noBlink',504        'process', 'getBand', 'running', 'beginSD', 'drawBMP', 'lowByte', 'setBand',505        'release', 'bitRead', 'prepare', 'pointTo', 'readRed', 'setMode', 'noFill',506        'remove', 'listen', 'stroke', 'detach', 'attach', 'noTone', 'exists', 'buffer',507        'height', 'bitSet', 'circle', 'config', 'cursor', 'random', 'IRread', 'setDNS',508        'endSMS', 'getKey', 'micros', 'millis', 'begin', 'print', 'write', 'ready',509        'flush', 'width', 'isPIN', 'blink', 'clear', 'press', 'mkdir', 'rmdir', 'close',510        'point', 'yield', 'image', 'BSSID', 'click', 'delay', 'read', 'text', 'move',511        'peek', 'beep', 'rect', 'line', 'open', 'seek', 'fill', 'size', 'turn', 'stop',512        'home', 'find', 'step', 'tone', 'sqrt', 'RSSI', 'SSID', 'end', 'bit', 'tan',513        'cos', 'sin', 'pow', 'map', 'abs', 'max', 'min', 'get', 'run', 'put',514        'isAlphaNumeric', 'isAlpha', 'isAscii', 'isWhitespace', 'isControl', 'isDigit',515        'isGraph', 'isLowerCase', 'isPrintable', 'isPunct', 'isSpace', 'isUpperCase',516        'isHexadecimalDigit'}517 518    # do not highlight519    suppress_highlight = {520        'namespace', 'template', 'mutable', 'using', 'asm', 'typeid',521        'typename', 'this', 'alignof', 'constexpr', 'decltype', 'noexcept',522        'static_assert', 'thread_local', 'restrict'}523 524    def get_tokens_unprocessed(self, text, stack=('root',)):525        for index, token, value in CppLexer.get_tokens_unprocessed(self, text, stack):526            if value in self.structure:527                yield index, Name.Builtin, value528            elif value in self.operators:529                yield index, Operator, value530            elif value in self.variables:531                yield index, Keyword.Reserved, value532            elif value in self.suppress_highlight:533                yield index, Name, value534            elif value in self.functions:535                yield index, Name.Function, value536            else:537                yield index, token, value538 539 540class CharmciLexer(CppLexer):541    """542    For `Charm++ <https://charm.cs.illinois.edu>`_ interface files (.ci).543    """544 545    name = 'Charmci'546    aliases = ['charmci']547    filenames = ['*.ci']548    version_added = '2.4'549 550    mimetypes = []551 552    tokens = {553        'keywords': [554            (r'(module)(\s+)', bygroups(Keyword, Text), 'classname'),555            (words(('mainmodule', 'mainchare', 'chare', 'array', 'group',556                    'nodegroup', 'message', 'conditional')), Keyword),557            (words(('entry', 'aggregate', 'threaded', 'sync', 'exclusive',558                    'nokeep', 'notrace', 'immediate', 'expedited', 'inline',559                    'local', 'python', 'accel', 'readwrite', 'writeonly',560                    'accelblock', 'memcritical', 'packed', 'varsize',561                    'initproc', 'initnode', 'initcall', 'stacksize',562                    'createhere', 'createhome', 'reductiontarget', 'iget',563                    'nocopy', 'mutable', 'migratable', 'readonly')), Keyword),564            inherit,565        ],566    }567 568 569class OmgIdlLexer(CLexer):570    """571    Lexer for Object Management Group Interface Definition Language.572    """573 574    name = 'OMG Interface Definition Language'575    url = 'https://www.omg.org/spec/IDL/About-IDL/'576    aliases = ['omg-idl']577    filenames = ['*.idl', '*.pidl']578    mimetypes = []579    version_added = '2.9'580 581    scoped_name = r'((::)?\w+)+'582 583    tokens = {584        'values': [585            (words(('true', 'false'), prefix=r'(?i)', suffix=r'\b'), Number),586            (r'([Ll]?)(")', bygroups(String.Affix, String.Double), 'string'),587            (r'([Ll]?)(\')(\\[^\']+)(\')',588                bygroups(String.Affix, String.Char, String.Escape, String.Char)),589            (r'([Ll]?)(\')(\\\')(\')',590                bygroups(String.Affix, String.Char, String.Escape, String.Char)),591            (r'([Ll]?)(\'.\')', bygroups(String.Affix, String.Char)),592            (r'[+-]?\d+(\.\d*)?[Ee][+-]?\d+', Number.Float),593            (r'[+-]?(\d+\.\d*)|(\d*\.\d+)([Ee][+-]?\d+)?', Number.Float),594            (r'(?i)[+-]?0x[0-9a-f]+', Number.Hex),595            (r'[+-]?[1-9]\d*', Number.Integer),596            (r'[+-]?0[0-7]*', Number.Oct),597            (r'[\+\-\*\/%^&\|~]', Operator),598            (words(('<<', '>>')), Operator),599            (scoped_name, Name),600            (r'[{};:,<>\[\]]', Punctuation),601        ],602        'annotation_params': [603            include('whitespace'),604            (r'\(', Punctuation, '#push'),605            include('values'),606            (r'=', Punctuation),607            (r'\)', Punctuation, '#pop'),608        ],609        'annotation_params_maybe': [610            (r'\(', Punctuation, 'annotation_params'),611            include('whitespace'),612            default('#pop'),613        ],614        'annotation_appl': [615            (r'@' + scoped_name, Name.Decorator, 'annotation_params_maybe'),616        ],617        'enum': [618            include('whitespace'),619            (r'[{,]', Punctuation),620            (r'\w+', Name.Constant),621            include('annotation_appl'),622            (r'\}', Punctuation, '#pop'),623        ],624        'root': [625            include('whitespace'),626            (words((627                'typedef', 'const',628                'in', 'out', 'inout', 'local',629            ), prefix=r'(?i)', suffix=r'\b'), Keyword.Declaration),630            (words((631                'void', 'any', 'native', 'bitfield',632                'unsigned', 'boolean', 'char', 'wchar', 'octet', 'short', 'long',633                'int8', 'uint8', 'int16', 'int32', 'int64', 'uint16', 'uint32', 'uint64',634                'float', 'double', 'fixed',635                'sequence', 'string', 'wstring', 'map',636            ), prefix=r'(?i)', suffix=r'\b'), Keyword.Type),637            (words((638                '@annotation', 'struct', 'union', 'bitset', 'interface',639                'exception', 'valuetype', 'eventtype', 'component',640            ), prefix=r'(?i)', suffix=r'(\s+)(\w+)'), bygroups(Keyword, Whitespace, Name.Class)),641            (words((642                'abstract', 'alias', 'attribute', 'case', 'connector',643                'consumes', 'context', 'custom', 'default', 'emits', 'factory',644                'finder', 'getraises', 'home', 'import', 'manages', 'mirrorport',645                'multiple', 'Object', 'oneway', 'primarykey', 'private', 'port',646                'porttype', 'provides', 'public', 'publishes', 'raises',647                'readonly', 'setraises', 'supports', 'switch', 'truncatable',648                'typeid', 'typename', 'typeprefix', 'uses', 'ValueBase',649            ), prefix=r'(?i)', suffix=r'\b'), Keyword),650            (r'(?i)(enum|bitmask)(\s+)(\w+)',651                bygroups(Keyword, Whitespace, Name.Class), 'enum'),652            (r'(?i)(module)(\s+)(\w+)',653                bygroups(Keyword.Namespace, Whitespace, Name.Namespace)),654            (r'(\w+)(\s*)(=)', bygroups(Name.Constant, Whitespace, Operator)),655            (r'[\(\)]', Punctuation),656            include('values'),657            include('annotation_appl'),658        ],659    }660 661 662class PromelaLexer(CLexer):663    """664    For the Promela language used with SPIN.665    """666    667    name = 'Promela'668    aliases = ['promela']669    filenames = ['*.pml', '*.prom', '*.prm', '*.promela', '*.pr', '*.pm']670    mimetypes = ['text/x-promela']671    url = 'https://spinroot.com/spin/whatispin.html'672    version_added = '2.18'673 674    # Promela's language reference:675    # https://spinroot.com/spin/Man/promela.html676    # Promela's grammar definition:677    # https://spinroot.com/spin/Man/grammar.html678 679    tokens = {680        'statements': [681            (r'(\[\]|<>|/\\|\\/)|(U|W|V)\b', Operator), # LTL Operators682            (r'@', Punctuation), #remoterefs683            (r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)),684            inherit685        ],686        'types': [687            # Predefined (data types)688            (words((689                'bit', 'bool', 'byte', 'pid', 'short', 'int', 'unsigned'),690                suffix=r'\b'),691             Keyword.Type),692        ],693        'keywords': [694            # ControlFlow695            (words((696                'atomic', 'break', 'd_step', 'do', 'od', 'for', 'in', 'goto',697                'if', 'fi', 'unless'), suffix=r'\b'),698             Keyword),699            # BasicStatements700            (words((701                'assert', 'get_priority', 'printf', 'printm', 'set_priority'),702                suffix=r'\b'),703             Name.Function),704            # Embedded C Code705            (words((706                'c_code', 'c_decl', 'c_expr', 'c_state', 'c_track'),707                suffix=r'\b'),708             Keyword),709            # Predefined (local/global variables)710            (words((711                '_', '_last', '_nr_pr', '_pid', '_priority', 'else', 'np_',712                'STDIN'), suffix=r'\b'),713             Name.Builtin),714            # Predefined (functions)715            (words((716                'empty', 'enabled', 'eval', 'full', 'len', 'nempty', 'nfull',717                'pc_value'), suffix=r'\b'),718             Name.Function),719            # Predefined (operators)720            (r'run\b', Operator.Word),721            # Declarators722            (words((723                'active', 'chan', 'D_proctype', 'hidden', 'init', 'local',724                'mtype', 'never', 'notrace', 'proctype', 'show', 'trace',725                'typedef', 'xr', 'xs'), suffix=r'\b'),726             Keyword.Declaration),727            # Declarators (suffixes)728            (words((729                'priority', 'provided'), suffix=r'\b'),730             Keyword),731            # MetaTerms (declarators)732            (words((733                'inline', 'ltl', 'select'), suffix=r'\b'),734             Keyword.Declaration),735            # MetaTerms (keywords)736            (r'skip\b', Keyword),737        ],738    }739 
codekingpro/portable-devtools · Team Ai