�
|�e�W � � � d Z ddlZddlmZmZmZmZmZmZ ddl m
Z
mZmZm
Z
mZmZmZmZmZ g d�Z G d� de� Z G d� d e� Z G d
� de� Zy)z�
pygments.lexers.hdl
~~~~~~~~~~~~~~~~~~~
Lexers for hardware descriptor languages.
:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� N)�
RegexLexer�bygroups�include�using�this�words) �Text�Comment�Operator�Keyword�Name�String�Number�Punctuation�
Whitespace)�VerilogLexer�SystemVerilogLexer� VhdlLexerc �� � e Zd ZdZdZddgZdgZdgZdZde j dfd efd
ee
j e� fde j fde j fd
efde
dfde
j$ fdej( fdej( fdej* fdej, fdej. fdej0 fdefdej. fdefdefdej6 fd eeej: e� fd eeej: e� df edd �!� ef ed"d#d �$� e j f ed%d&d �$� ej@ f ed'd �!� ejB fd(ejD fd)efd*efgd+e
d,fd-e
j fd.e
fd
ee
j e� fd/e
fgd0e j fd1e j fd2e j d,fd3e j fd4e j fd5ed,fgd6ej: d,fgd7�Z#d8� Z$y9):r zZ
For verilog source code with preprocessor directives.
.. versionadded:: 1.4
�verilog�vz*.vztext/x-verilog�(?:\s|//.*?\n|/[*].*?[*]/)+z^\s*`define�macro�\s+�(\\)(\n)�/(\\\n)?/(\n|(.|\n)*?[^\\]\n)�/(\\\n)?[*](.|\n)*?[*](\\\n)?/�[{}#@]�L?"�string�4L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'�%(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?�(\d+\.\d*|\.\d+|\d+[fF])[fF]?z([0-9]+)|(\'h)[0-9a-fA-F]+z([0-9]+)|(\'b)[01]+z([0-9]+)|(\'d)[0-9]+z([0-9]+)|(\'o)[0-7]+z\'[01xz]z\d+[Ll]?�[~!%^&*+=|?:<>/-]�
[()\[\],.;\']�
`[a-zA-Z_]\w*�^(\s*)(package)(\s+)�^(\s*)(import)(\s+)�import)q�always�always_comb� always_ff�always_latch�and�assign� automatic�begin�break�buf�bufif0�bufif1�case�casex�casez�cmos�const�continue�deassign�default�defparam�disable�do�edge�else�end�endcase�endfunction�endgenerate� endmodule�
endpackage�endprimitive�
endspecify�endtable�endtask�enum�event�final�for�force�forever�fork�function�generate�genvar�highz0�highz1�if�initial�inout�input�integer�join�large�
localparam�macromodule�medium�module�nand�negedge�nmos�nor�not�notif0�notif1�or�output�packed� parameter�pmos�posedge� primitive�pull0�pull1�pulldown�pullup�rcmos�ref�release�repeat�return�rnmos�rpmos�rtran�rtranif0�rtranif1�scalared�signed�small�specify� specparam�strengthr �strong0�strong1�struct�table�task�tran�tranif0�tranif1�type�typedef�unsigned�var�vectored�void�wait�weak0�weak1�while�xnor�xor�\b��suffix)�
accelerate�autoexpand_vectornets�
celldefine�default_nettyperB �elsif�
endcelldefine�endif�
endprotect�endprotected�expand_vectornets�ifdef�ifndefr �noaccelerate�noexpand_vectornets�noremove_gatenames�noremove_netnames�nounconnected_drive�protect� protected�remove_gatenames�remove_netnames�resetall� timescale�unconnected_drive�undef�`)�prefixr� )4�bits�
bitstoreal�bitstoshortreal�countdrivers�display�fclose�fdisplay�finish�floor�fmonitor�fopen�fstrobe�fwrite�
getpattern�history�incsaver\ �itor�key�list�log�monitor�
monitoroff� monitoron�nokey�nolog�printtimescale�random�readmemb�readmemh�realtime�
realtobits�reset�reset_count�reset_value�restart�rtoi�save�scale�scope�shortrealtobits�
showscopes�
showvariables�showvars� sreadmemb� sreadmemh�stime�stop�strobe�time�
timeformat�writez\$)�byte�shortint�int�longintr] r� �bit�logic�reg�supply0�supply1�tri�triand�trior�tri0�tri1�trireg�uwire�wire�wand�worshortreal�realr� �[a-zA-Z_]\w*:(?!:)�\$?[a-zA-Z_]\w*�\\(\S+)�"�#pop�/\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})� [^\\"\n]+�\\�[^/\n]+�/[*](.|\n)*?[*]/z//.*?\n�/� (?<=\\)\n�\n� [\w:]+\*?��rootr r r) c �@ � d}d| v r|dz
}d| v r|dz
}d| v r|dz
}|S )z`Verilog code will use one of reg/wire/assign for sure, and that
is not common elsewhere.r r� g�������?r� r/ � )�text�results �5/usr/lib/python3/dist-packages/pygments/lexers/hdl.py�analyse_textzVerilogLexer.analyse_text� s? � � ���D�=��c�M�F��T�>��c�M�F��t���c�M�F��
� N)%�__name__�
__module__�__qualname__�__doc__�name�aliases� filenames� mimetypes�_wsr
�Preprocr r r �Escape�Single� Multiliner �Charr �Float�Hex�Bin�Integer�Octr r
�Constantr � Namespacer r �Builtin�Type�Label�tokensr r r r r r s� � ��
�D��#��G���I�!�"�I� )�C� �W�_�_�g�6�
�Z� �
�(�6�=�=�*�=�>�
-�w�~�~�>�
.��0A�0A�B�
��$�
�V�X�&�
D�f�k�k�R�
5�v�|�|�D�
-�v�|�|�<�
*�F�J�J�7�
#�V�Z�Z�0�
$�f�n�n�5�
$�f�j�j�1�
�&�!�
�&�.�.�)�
!�8�,�
�{�+�
�t�}�}�-�
$�h�z�7�;L�;L�d�&S�T�
#�X�j�'�:K�:K�T�%R�
�
� � :�" |