Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
hdl.py467 linesDownload Raw Back to lexers
1"""2    pygments.lexers.hdl3    ~~~~~~~~~~~~~~~~~~~4 5    Lexers for hardware descriptor languages.6 7    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11import re12 13from pygments.lexer import RegexLexer, bygroups, include, using, this, words14from pygments.token import Text, Comment, Operator, Keyword, Name, String, \15    Number, Punctuation, Whitespace16 17__all__ = ['VerilogLexer', 'SystemVerilogLexer', 'VhdlLexer']18 19 20class VerilogLexer(RegexLexer):21    """22    For verilog source code with preprocessor directives.23    """24    name = 'verilog'25    aliases = ['verilog', 'v']26    filenames = ['*.v']27    mimetypes = ['text/x-verilog']28    url = 'https://en.wikipedia.org/wiki/Verilog'29    version_added = '1.4'30 31    #: optional Comment or Whitespace32    _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'33 34    tokens = {35        'root': [36            (r'^\s*`define', Comment.Preproc, 'macro'),37            (r'\s+', Whitespace),38            (r'(\\)(\n)', bygroups(String.Escape, Whitespace)),  # line continuation39            (r'/(\\\n)?/(\n|(.|\n)*?[^\\]\n)', Comment.Single),40            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),41            (r'[{}#@]', Punctuation),42            (r'L?"', String, 'string'),43            (r"L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char),44            (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),45            (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),46            (r'([0-9]+)|(\'h)[0-9a-fA-F]+', Number.Hex),47            (r'([0-9]+)|(\'b)[01]+', Number.Bin),48            (r'([0-9]+)|(\'d)[0-9]+', Number.Integer),49            (r'([0-9]+)|(\'o)[0-7]+', Number.Oct),50            (r'\'[01xz]', Number),51            (r'\d+[Ll]?', Number.Integer),52            (r'[~!%^&*+=|?:<>/-]', Operator),53            (r'[()\[\],.;\']', Punctuation),54            (r'`[a-zA-Z_]\w*', Name.Constant),55 56            (r'^(\s*)(package)(\s+)', bygroups(Whitespace, Keyword.Namespace, Text)),57            (r'^(\s*)(import)(\s+)', bygroups(Whitespace, Keyword.Namespace, Text),58             'import'),59 60            (words((61                'always', 'always_comb', 'always_ff', 'always_latch', 'and',62                'assign', 'automatic', 'begin', 'break', 'buf', 'bufif0', 'bufif1',63                'case', 'casex', 'casez', 'cmos', 'const', 'continue', 'deassign',64                'default', 'defparam', 'disable', 'do', 'edge', 'else', 'end', 'endcase',65                'endfunction', 'endgenerate', 'endmodule', 'endpackage', 'endprimitive',66                'endspecify', 'endtable', 'endtask', 'enum', 'event', 'final', 'for',67                'force', 'forever', 'fork', 'function', 'generate', 'genvar', 'highz0',68                'highz1', 'if', 'initial', 'inout', 'input', 'integer', 'join', 'large',69                'localparam', 'macromodule', 'medium', 'module', 'nand', 'negedge',70                'nmos', 'nor', 'not', 'notif0', 'notif1', 'or', 'output', 'packed',71                'parameter', 'pmos', 'posedge', 'primitive', 'pull0', 'pull1',72                'pulldown', 'pullup', 'rcmos', 'ref', 'release', 'repeat', 'return',73                'rnmos', 'rpmos', 'rtran', 'rtranif0', 'rtranif1', 'scalared', 'signed',74                'small', 'specify', 'specparam', 'strength', 'string', 'strong0',75                'strong1', 'struct', 'table', 'task', 'tran', 'tranif0', 'tranif1',76                'type', 'typedef', 'unsigned', 'var', 'vectored', 'void', 'wait',77                'weak0', 'weak1', 'while', 'xnor', 'xor'), suffix=r'\b'),78             Keyword),79 80            (words((81                'accelerate', 'autoexpand_vectornets', 'celldefine', 'default_nettype',82                'else', 'elsif', 'endcelldefine', 'endif', 'endprotect', 'endprotected',83                'expand_vectornets', 'ifdef', 'ifndef', 'include', 'noaccelerate',84                'noexpand_vectornets', 'noremove_gatenames', 'noremove_netnames',85                'nounconnected_drive', 'protect', 'protected', 'remove_gatenames',86                'remove_netnames', 'resetall', 'timescale', 'unconnected_drive',87                'undef'), prefix=r'`', suffix=r'\b'),88             Comment.Preproc),89 90            (words((91                'bits', 'bitstoreal', 'bitstoshortreal', 'countdrivers', 'display', 'fclose',92                'fdisplay', 'finish', 'floor', 'fmonitor', 'fopen', 'fstrobe', 'fwrite',93                'getpattern', 'history', 'incsave', 'input', 'itor', 'key', 'list', 'log',94                'monitor', 'monitoroff', 'monitoron', 'nokey', 'nolog', 'printtimescale',95                'random', 'readmemb', 'readmemh', 'realtime', 'realtobits', 'reset',96                'reset_count', 'reset_value', 'restart', 'rtoi', 'save', 'scale', 'scope',97                'shortrealtobits', 'showscopes', 'showvariables', 'showvars', 'sreadmemb',98                'sreadmemh', 'stime', 'stop', 'strobe', 'time', 'timeformat', 'write'),99                prefix=r'\$', suffix=r'\b'),100             Name.Builtin),101 102            (words((103                'byte', 'shortint', 'int', 'longint', 'integer', 'time',104                'bit', 'logic', 'reg', 'supply0', 'supply1', 'tri', 'triand',105                'trior', 'tri0', 'tri1', 'trireg', 'uwire', 'wire', 'wand', 'wor'106                'shortreal', 'real', 'realtime'), suffix=r'\b'),107             Keyword.Type),108            (r'[a-zA-Z_]\w*:(?!:)', Name.Label),109            (r'\$?[a-zA-Z_]\w*', Name),110            (r'\\(\S+)', Name),111        ],112        'string': [113            (r'"', String, '#pop'),114            (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),115            (r'[^\\"\n]+', String),  # all other characters116            (r'(\\)(\n)', bygroups(String.Escape, Whitespace)),  # line continuation117            (r'\\', String),  # stray backslash118        ],119        'macro': [120            (r'[^/\n]+', Comment.Preproc),121            (r'/[*](.|\n)*?[*]/', Comment.Multiline),122            (r'//.*?\n', Comment.Single, '#pop'),123            (r'/', Comment.Preproc),124            (r'(?<=\\)\n', Comment.Preproc),125            (r'\n', Whitespace, '#pop'),126        ],127        'import': [128            (r'[\w:]+\*?', Name.Namespace, '#pop')129        ]130    }131 132    def analyse_text(text):133        """Verilog code will use one of reg/wire/assign for sure, and that134        is not common elsewhere."""135        result = 0136        if 'reg' in text:137            result += 0.1138        if 'wire' in text:139            result += 0.1140        if 'assign' in text:141            result += 0.1142 143        return result144 145 146class SystemVerilogLexer(RegexLexer):147    """148    Extends verilog lexer to recognise all SystemVerilog keywords from IEEE149    1800-2009 standard.150    """151    name = 'systemverilog'152    aliases = ['systemverilog', 'sv']153    filenames = ['*.sv', '*.svh']154    mimetypes = ['text/x-systemverilog']155    url = 'https://en.wikipedia.org/wiki/SystemVerilog'156    version_added = '1.5'157 158    #: optional Comment or Whitespace159    _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'160 161    tokens = {162        'root': [163            (r'^(\s*)(`define)', bygroups(Whitespace, Comment.Preproc), 'macro'),164            (r'^(\s*)(package)(\s+)', bygroups(Whitespace, Keyword.Namespace, Whitespace)),165            (r'^(\s*)(import)(\s+)', bygroups(Whitespace, Keyword.Namespace, Whitespace), 'import'),166 167            (r'\s+', Whitespace),168            (r'(\\)(\n)', bygroups(String.Escape, Whitespace)),  # line continuation169            (r'/(\\\n)?/(\n|(.|\n)*?[^\\]\n)', Comment.Single),170            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),171            (r'[{}#@]', Punctuation),172            (r'L?"', String, 'string'),173            (r"L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char),174 175            (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),176            (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),177 178            (r'([1-9][_0-9]*)?\s*\'[sS]?[bB]\s*[xXzZ?01][_xXzZ?01]*',179             Number.Bin),180            (r'([1-9][_0-9]*)?\s*\'[sS]?[oO]\s*[xXzZ?0-7][_xXzZ?0-7]*',181             Number.Oct),182            (r'([1-9][_0-9]*)?\s*\'[sS]?[dD]\s*[xXzZ?0-9][_xXzZ?0-9]*',183             Number.Integer),184            (r'([1-9][_0-9]*)?\s*\'[sS]?[hH]\s*[xXzZ?0-9a-fA-F][_xXzZ?0-9a-fA-F]*',185             Number.Hex),186 187            (r'\'[01xXzZ]', Number),188            (r'[0-9][_0-9]*', Number.Integer),189 190            (r'[~!%^&*+=|?:<>/-]', Operator),191            (words(('inside', 'dist'), suffix=r'\b'), Operator.Word),192 193            (r'[()\[\],.;\'$]', Punctuation),194            (r'`[a-zA-Z_]\w*', Name.Constant),195 196            (words((197                'accept_on', 'alias', 'always', 'always_comb', 'always_ff',198                'always_latch', 'and', 'assert', 'assign', 'assume', 'automatic',199                'before', 'begin', 'bind', 'bins', 'binsof', 'break', 'buf',200                'bufif0', 'bufif1', 'case', 'casex', 'casez', 'cell',201                'checker', 'clocking', 'cmos', 'config',202                'constraint', 'context', 'continue', 'cover', 'covergroup',203                'coverpoint', 'cross', 'deassign', 'default', 'defparam', 'design',204                'disable', 'do', 'edge', 'else', 'end', 'endcase',205                'endchecker', 'endclocking', 'endconfig', 'endfunction',206                'endgenerate', 'endgroup', 'endinterface', 'endmodule', 'endpackage',207                'endprimitive', 'endprogram', 'endproperty', 'endsequence',208                'endspecify', 'endtable', 'endtask', 'enum', 'eventually',209                'expect', 'export', 'extern', 'final', 'first_match',210                'for', 'force', 'foreach', 'forever', 'fork', 'forkjoin', 'function',211                'generate', 'genvar', 'global', 'highz0', 'highz1', 'if', 'iff',212                'ifnone', 'ignore_bins', 'illegal_bins', 'implies', 'implements', 'import',213                'incdir', 'include', 'initial', 'inout', 'input',214                'instance', 'interconnect', 'interface', 'intersect', 'join',215                'join_any', 'join_none', 'large', 'let', 'liblist', 'library',216                'local', 'localparam', 'macromodule', 'matches',217                'medium', 'modport', 'module', 'nand', 'negedge', 'nettype', 'new', 'nexttime',218                'nmos', 'nor', 'noshowcancelled', 'not', 'notif0', 'notif1', 'null',219                'or', 'output', 'package', 'packed', 'parameter', 'pmos', 'posedge',220                'primitive', 'priority', 'program', 'property', 'protected', 'pull0',221                'pull1', 'pulldown', 'pullup', 'pulsestyle_ondetect',222                'pulsestyle_onevent', 'pure', 'rand', 'randc', 'randcase',223                'randsequence', 'rcmos', 'ref',224                'reject_on', 'release', 'repeat', 'restrict', 'return', 'rnmos',225                'rpmos', 'rtran', 'rtranif0', 'rtranif1', 's_always', 's_eventually',226                's_nexttime', 's_until', 's_until_with', 'scalared', 'sequence',227                'showcancelled', 'small', 'soft', 'solve',228                'specify', 'specparam', 'static', 'strong', 'strong0',229                'strong1', 'struct', 'super', 'sync_accept_on',230                'sync_reject_on', 'table', 'tagged', 'task', 'this', 'throughout',231                'timeprecision', 'timeunit', 'tran', 'tranif0', 'tranif1',232                'typedef', 'union', 'unique', 'unique0', 'until',233                'until_with', 'untyped', 'use', 'vectored',234                'virtual', 'wait', 'wait_order', 'weak', 'weak0',235                'weak1', 'while', 'wildcard', 'with', 'within',236                'xnor', 'xor'),237                suffix=r'\b'),238             Keyword),239 240            (r'(class)(\s+)([a-zA-Z_]\w*)',241             bygroups(Keyword.Declaration, Whitespace, Name.Class)),242            (r'(extends)(\s+)([a-zA-Z_]\w*)',243             bygroups(Keyword.Declaration, Whitespace, Name.Class)),244            (r'(endclass\b)(?:(\s*)(:)(\s*)([a-zA-Z_]\w*))?',245             bygroups(Keyword.Declaration, Whitespace, Punctuation, Whitespace, Name.Class)),246 247            (words((248                # Variable types249                'bit', 'byte', 'chandle', 'const', 'event', 'int', 'integer',250                'logic', 'longint', 'real', 'realtime', 'reg', 'shortint',251                'shortreal', 'signed', 'string', 'time', 'type', 'unsigned',252                'var', 'void',253                # Net types254                'supply0', 'supply1', 'tri', 'triand', 'trior', 'trireg',255                'tri0', 'tri1', 'uwire', 'wand', 'wire', 'wor'),256                suffix=r'\b'),257             Keyword.Type),258 259            (words((260                '`__FILE__', '`__LINE__', '`begin_keywords', '`celldefine',261                '`default_nettype', '`define', '`else', '`elsif', '`end_keywords',262                '`endcelldefine', '`endif', '`ifdef', '`ifndef', '`include',263                '`line', '`nounconnected_drive', '`pragma', '`resetall',264                '`timescale', '`unconnected_drive', '`undef', '`undefineall'),265                suffix=r'\b'),266             Comment.Preproc),267 268            (words((269                # Simulation control tasks (20.2)270                '$exit', '$finish', '$stop',271                # Simulation time functions (20.3)272                '$realtime', '$stime', '$time',273                # Timescale tasks (20.4)274                '$printtimescale', '$timeformat',275                # Conversion functions276                '$bitstoreal', '$bitstoshortreal', '$cast', '$itor',277                '$realtobits', '$rtoi', '$shortrealtobits', '$signed',278                '$unsigned',279                # Data query functions (20.6)280                '$bits', '$isunbounded', '$typename',281                # Array query functions (20.7)282                '$dimensions', '$high', '$increment', '$left', '$low', '$right',283                '$size', '$unpacked_dimensions',284                # Math functions (20.8)285                '$acos', '$acosh', '$asin', '$asinh', '$atan', '$atan2',286                '$atanh', '$ceil', '$clog2', '$cos', '$cosh', '$exp', '$floor',287                '$hypot', '$ln', '$log10', '$pow', '$sin', '$sinh', '$sqrt',288                '$tan', '$tanh',289                # Bit vector system functions (20.9)290                '$countbits', '$countones', '$isunknown', '$onehot', '$onehot0',291                # Severity tasks (20.10)292                '$info', '$error', '$fatal', '$warning',293                # Assertion control tasks (20.12)294                '$assertcontrol', '$assertfailoff', '$assertfailon',295                '$assertkill', '$assertnonvacuouson', '$assertoff', '$asserton',296                '$assertpassoff', '$assertpasson', '$assertvacuousoff',297                # Sampled value system functions (20.13)298                '$changed', '$changed_gclk', '$changing_gclk', '$falling_gclk',299                '$fell', '$fell_gclk', '$future_gclk', '$past', '$past_gclk',300                '$rising_gclk', '$rose', '$rose_gclk', '$sampled', '$stable',301                '$stable_gclk', '$steady_gclk',302                # Coverage control functions (20.14)303                '$coverage_control', '$coverage_get', '$coverage_get_max',304                '$coverage_merge', '$coverage_save', '$get_coverage',305                '$load_coverage_db', '$set_coverage_db_name',306                # Probabilistic distribution functions (20.15)307                '$dist_chi_square', '$dist_erlang', '$dist_exponential',308                '$dist_normal', '$dist_poisson', '$dist_t', '$dist_uniform',309                '$random',310                # Stochastic analysis tasks and functions (20.16)311                '$q_add', '$q_exam', '$q_full', '$q_initialize', '$q_remove',312                # PLA modeling tasks (20.17)313                '$async$and$array', '$async$and$plane', '$async$nand$array',314                '$async$nand$plane', '$async$nor$array', '$async$nor$plane',315                '$async$or$array', '$async$or$plane', '$sync$and$array',316                '$sync$and$plane', '$sync$nand$array', '$sync$nand$plane',317                '$sync$nor$array', '$sync$nor$plane', '$sync$or$array',318                '$sync$or$plane',319                # Miscellaneous tasks and functions (20.18)320                '$system',321                # Display tasks (21.2)322                '$display', '$displayb', '$displayh', '$displayo', '$monitor',323                '$monitorb', '$monitorh', '$monitoro', '$monitoroff',324                '$monitoron', '$strobe', '$strobeb', '$strobeh', '$strobeo',325                '$write', '$writeb', '$writeh', '$writeo',326                # File I/O tasks and functions (21.3)327                '$fclose', '$fdisplay', '$fdisplayb', '$fdisplayh',328                '$fdisplayo', '$feof', '$ferror', '$fflush', '$fgetc', '$fgets',329                '$fmonitor', '$fmonitorb', '$fmonitorh', '$fmonitoro', '$fopen',330                '$fread', '$fscanf', '$fseek', '$fstrobe', '$fstrobeb',331                '$fstrobeh', '$fstrobeo', '$ftell', '$fwrite', '$fwriteb',332                '$fwriteh', '$fwriteo', '$rewind', '$sformat', '$sformatf',333                '$sscanf', '$swrite', '$swriteb', '$swriteh', '$swriteo',334                '$ungetc',335                # Memory load tasks (21.4)336                '$readmemb', '$readmemh',337                # Memory dump tasks (21.5)338                '$writememb', '$writememh',339                # Command line input (21.6)340                '$test$plusargs', '$value$plusargs',341                # VCD tasks (21.7)342                '$dumpall', '$dumpfile', '$dumpflush', '$dumplimit', '$dumpoff',343                '$dumpon', '$dumpports', '$dumpportsall', '$dumpportsflush',344                '$dumpportslimit', '$dumpportsoff', '$dumpportson', '$dumpvars',345                ), suffix=r'\b'),346             Name.Builtin),347 348            (r'[a-zA-Z_]\w*:(?!:)', Name.Label),349            (r'\$?[a-zA-Z_]\w*', Name),350            (r'\\(\S+)', Name),351        ],352        'string': [353            (r'"', String, '#pop'),354            (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),355            (r'[^\\"\n]+', String),  # all other characters356            (r'(\\)(\n)', bygroups(String.Escape, Whitespace)),  # line continuation357            (r'\\', String),  # stray backslash358        ],359        'macro': [360            (r'[^/\n]+', Comment.Preproc),361            (r'/[*](.|\n)*?[*]/', Comment.Multiline),362            (r'//.*?$', Comment.Single, '#pop'),363            (r'/', Comment.Preproc),364            (r'(?<=\\)\n', Comment.Preproc),365            (r'\n', Whitespace, '#pop'),366        ],367        'import': [368            (r'[\w:]+\*?', Name.Namespace, '#pop')369        ]370    }371 372 373class VhdlLexer(RegexLexer):374    """375    For VHDL source code.376    """377    name = 'vhdl'378    aliases = ['vhdl']379    filenames = ['*.vhdl', '*.vhd']380    mimetypes = ['text/x-vhdl']381    url = 'https://en.wikipedia.org/wiki/VHDL'382    version_added = '1.5'383    flags = re.MULTILINE | re.IGNORECASE384 385    tokens = {386        'root': [387            (r'\s+', Whitespace),388            (r'(\\)(\n)', bygroups(String.Escape, Whitespace)),  # line continuation389            (r'--.*?$', Comment.Single),390            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),391            (r"'(U|X|0|1|Z|W|L|H|-)'", String.Char),392            (r'[~!%^&*+=|?:<>/-]', Operator),393            (r"'[a-z_]\w*", Name.Attribute),394            (r'[()\[\],.;\']', Punctuation),395            (r'"[^\n\\"]*"', String),396 397            (r'(library)(\s+)([a-z_]\w*)',398             bygroups(Keyword, Whitespace, Name.Namespace)),399            (r'(use)(\s+)(entity)', bygroups(Keyword, Whitespace, Keyword)),400            (r'(use)(\s+)([a-z_][\w.]*\.)(all)',401             bygroups(Keyword, Whitespace, Name.Namespace, Keyword)),402            (r'(use)(\s+)([a-z_][\w.]*)',403             bygroups(Keyword, Whitespace, Name.Namespace)),404            (r'(std|ieee)(\.[a-z_]\w*)',405             bygroups(Name.Namespace, Name.Namespace)),406            (words(('std', 'ieee', 'work'), suffix=r'\b'),407             Name.Namespace),408            (r'(entity|component)(\s+)([a-z_]\w*)',409             bygroups(Keyword, Whitespace, Name.Class)),410            (r'(architecture|configuration)(\s+)([a-z_]\w*)(\s+)'411             r'(of)(\s+)([a-z_]\w*)(\s+)(is)',412             bygroups(Keyword, Whitespace, Name.Class, Whitespace, Keyword, Whitespace,413                      Name.Class, Whitespace, Keyword)),414            (r'([a-z_]\w*)(:)(\s+)(process|for)',415             bygroups(Name.Class, Operator, Whitespace, Keyword)),416            (r'(end)(\s+)', bygroups(using(this), Whitespace), 'endblock'),417 418            include('types'),419            include('keywords'),420            include('numbers'),421 422            (r'[a-z_]\w*', Name),423        ],424        'endblock': [425            include('keywords'),426            (r'[a-z_]\w*', Name.Class),427            (r'\s+', Whitespace),428            (r';', Punctuation, '#pop'),429        ],430        'types': [431            (words((432                'boolean', 'bit', 'character', 'severity_level', 'integer', 'time',433                'delay_length', 'natural', 'positive', 'string', 'bit_vector',434                'file_open_kind', 'file_open_status', 'std_ulogic', 'std_ulogic_vector',435                'std_logic', 'std_logic_vector', 'signed', 'unsigned'), suffix=r'\b'),436             Keyword.Type),437        ],438        'keywords': [439            (words((440                'abs', 'access', 'after', 'alias', 'all', 'and',441                'architecture', 'array', 'assert', 'attribute', 'begin', 'block',442                'body', 'buffer', 'bus', 'case', 'component', 'configuration',443                'constant', 'disconnect', 'downto', 'else', 'elsif', 'end',444                'entity', 'exit', 'file', 'for', 'function', 'generate',445                'generic', 'group', 'guarded', 'if', 'impure', 'in',446                'inertial', 'inout', 'is', 'label', 'library', 'linkage',447                'literal', 'loop', 'map', 'mod', 'nand', 'new',448                'next', 'nor', 'not', 'null', 'of', 'on',449                'open', 'or', 'others', 'out', 'package', 'port',450                'postponed', 'procedure', 'process', 'pure', 'range', 'record',451                'register', 'reject', 'rem', 'return', 'rol', 'ror', 'select',452                'severity', 'signal', 'shared', 'sla', 'sll', 'sra',453                'srl', 'subtype', 'then', 'to', 'transport', 'type',454                'units', 'until', 'use', 'variable', 'wait', 'when',455                'while', 'with', 'xnor', 'xor'), suffix=r'\b'),456             Keyword),457        ],458        'numbers': [459            (r'\d{1,2}#[0-9a-f_]+#?', Number.Integer),460            (r'\d+', Number.Integer),461            (r'(\d+\.\d*|\.\d+|\d+)E[+-]?\d+', Number.Float),462            (r'X"[0-9a-f_]+"', Number.Hex),463            (r'O"[0-7_]+"', Number.Oct),464            (r'B"[01_]+"', Number.Bin),465        ],466    }467 
codekingpro/portable-devtools · Team Ai