File: //lib/python3/dist-packages/pygments/lexers/__pycache__/fortran.cpython-311.pyc
�
�E�c`( � � � d Z ddlZddlmZmZmZmZmZmZ ddl m
Z
mZmZm
Z
mZmZmZmZmZ ddgZ G d� de� � Z G d� de� � ZdS ) z�
pygments.lexers.fortran
~~~~~~~~~~~~~~~~~~~~~~~
Lexers for Fortran languages.
:copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� N)�
RegexLexer�bygroups�include�words�using�default) �Text�Comment�Operator�Keyword�Name�String�Number�Punctuation�Generic�FortranLexer�FortranFixedLexerc
� � e Zd ZdZdZdZddgZg d�ZdgZe j
e j z Zde
j fd e
f ed
� � ed� � def ed
� � dej fgd eeej e� � fd eeej e� � f eddd�� � ef eddd�� � ej fdefdej fdef eddd�� � ej fdej fdej fg
dej fdej fgdej fdej! fd ej! fd!ej! fgd"�Z"d#S )$r z@
Lexer for FORTRAN 90 code.
.. versionadded:: 0.10
�Fortranzhttps://fortran-lang.org/�fortran�f90)z*.f03z*.f90z*.F03z*.F90ztext/x-fortranz^#.*\nz!.*\n�strings�corez[a-z][\w$]*�numsz[\s]+z\b(DO)(\s+)(CONCURRENT)\bz\b(GO)(\s*)(TO)\b)~�ABSTRACT�ACCEPT�ALL�ALLSTOP�ALLOCATABLE�ALLOCATE�ARRAY�ASSIGN� ASSOCIATE�ASYNCHRONOUS� BACKSPACE�BIND�BLOCK� BLOCKDATA�BYTE�CALL�CASE�CLASS�CLOSE�CODIMENSION�COMMON�
CONTIGUOUS�CONTAINS�CONTINUE�CRITICAL�CYCLE�DATA�
DEALLOCATE�DECODE�DEFERRED� DIMENSION�DO� ELEMENTAL�ELSE�ENCODE�END�ENDASSOCIATE�ENDBLOCK�ENDDO�ENDENUM� ENDFORALL�ENDFUNCTION�ENDIF�ENDINTERFACE� ENDMODULE�
ENDPROGRAM� ENDSELECT�ENDSUBMODULE�
ENDSUBROUTINE�ENDTYPE�ENDWHERE�ENTRY�ENUM�
ENUMERATOR�EQUIVALENCEz
ERROR STOP�EXIT�EXTENDS�EXTERNAL� EXTRINSIC�FILE�FINAL�FORALL�FORMAT�FUNCTION�GENERIC�IF�IMAGES�IMPLICIT�IMPORT�IMPURE�INCLUDE�INQUIRE�INTENT� INTERFACE� INTRINSIC�IS�LOCK�MEMORY�MODULE�NAMELIST�NULLIFY�NONE�
NON_INTRINSIC�NON_OVERRIDABLE�NOPASS�ONLY�OPEN�OPTIONAL�OPTIONS� PARAMETER�PASS�PAUSE�POINTER�PRINT�PRIVATE�PROGRAM� PROCEDURE� PROTECTED�PUBLIC�PURE�READ� RECURSIVE�RESULT�RETURN�REWIND�SAVE�SELECT�SEQUENCE�STOP� SUBMODULE�
SUBROUTINE�SYNC�SYNCALL�
SYNCIMAGES�
SYNCMEMORY�TARGET�THEN�TYPE�UNLOCK�USE�VALUE�VOLATILE�WHERE�WRITE�WHILEz\bz\s*\b)�prefix�suffix)%� CHARACTER�COMPLEXzDOUBLE PRECISIONzDOUBLE COMPLEX�INTEGER�LOGICAL�REAL�C_INT�C_SHORT�C_LONG�C_LONG_LONG�
C_SIGNED_CHAR�C_SIZE_T�C_INT8_T� C_INT16_T� C_INT32_T� C_INT64_T�C_INT_LEAST8_T�C_INT_LEAST16_T�C_INT_LEAST32_T�C_INT_LEAST64_T�
C_INT_FAST8_T�C_INT_FAST16_T�C_INT_FAST32_T�C_INT_FAST64_T�
C_INTMAX_T�
C_INTPTR_T�C_FLOAT�C_DOUBLE�
C_LONG_DOUBLE�C_FLOAT_COMPLEX�C_DOUBLE_COMPLEX�C_LONG_DOUBLE_COMPLEX�C_BOOL�C_CHAR�C_PTR�C_FUNPTRz$(\*\*|\*|\+|-|\/|<|>|<=|>=|==|\/=|=)z(::)z[()\[\],:&%;.](1 �Abort�Abs�Access�AChar�ACos�ACosH�AdjustL�AdjustR�AImag�AInt�Alarm�All� Allocated�ALog�AMax�AMin�AMod�And�ANInt�Any�ASin�ASinH�
Associated�ATan�ATanH�
Atomic_Define�
Atomic_Ref�BesJ�BesJN� Bessel_J0� Bessel_J1� Bessel_JN� Bessel_Y0� Bessel_Y1� Bessel_YN�BesY�BesYN�BGE�BGT�BLE�BLT�Bit_Size�BTest�CAbs�CCos�Ceiling�CExp�Char�ChDir�ChMod�CLog�Cmplx�Command_Argument_Count�Complex�Conjg�Cos�CosH�Count�CPU_Time�CShift�CSin�CSqRt�CTime�C_Loc�C_Associated�
C_Null_Ptr�
C_Null_Funptr�C_F_Pointer�C_F_ProcPointer�C_Null_Char�C_Alert�C_Backspace�C_Form_Feed�C_FunLoc�C_Sizeof�
C_New_Line�C_Carriage_Return�C_Horizontal_Tab�C_Vertical_Tab�DAbs�DACos�DASin�DATan�
Date_and_Time�DbesJ�DbesJN�DbesY�DbesYN�Dble�DCos�DCosH�DDiM�DErF�DErFC�DExp�Digits�DiM�DInt�DLog�DMax�DMin�DMod�DNInt�Dot_Product�DProd�DSign�DSinH�DShiftL�DShiftR�DSin�DSqRt�DTanH�DTan�DTime�EOShift�Epsilon�ErF�ErFC�ErFC_Scaled�ETime�Execute_Command_Line�Exit�Exp�Exponent�Extends_Type_Of�FDate�FGet�FGetC�FindLoc�Float�Floor�Flush�FNum�FPutC�FPut�Fraction�FSeek�FStat�FTell�Gamma�GError�GetArg�Get_Command�Get_Command_Argument�Get_Environment_Variable�GetCWD�GetEnv�GetGId�GetLog�GetPId�GetUId�GMTime�HostNm�Huge�Hypot�IAbs�IAChar�IAll�IAnd�IAny�IArgC�IBClr�IBits�IBSet�IChar�IDate�IDiM�IDInt�IDNInt�IEOr�IErrNo�IFix�Imag�ImagPart�Image_Index�Index�Int�IOr�IParity�IRand�IsaTty�IShft�IShftC�ISign�
Iso_C_Binding�
Is_Contiguous�
Is_Iostat_End�
Is_Iostat_Eor�ITime�Kill�Kind�LBound�LCoBound�Len�Len_Trim�LGe�LGt�Link�LLe�LLt�LnBlnk�Loc�Log� Log_Gamma�Logical�Long�LShift�LStat�LTime�MaskL�MaskR�MatMul�Max�MaxExponent�MaxLoc�MaxVal�MClock�Merge�
Merge_Bits�
Move_Alloc�Min�MinExponent�MinLoc�MinVal�Mod�Modulo�MvBits�Nearest�New_Line�NInt�Norm2�Not�Null�
Num_Images�Or�Pack�Parity�PError� Precision�Present�Product�Radix�Rand�
Random_Number�Random_Seed�Range�Real�RealPart�Rename�Repeat�Reshape� RRSpacing�RShift�Same_Type_As�Scale�Scan�Second�Selected_Char_Kind�Selected_Int_Kind�Selected_Real_Kind�Set_Exponent�Shape�ShiftA�ShiftL�ShiftR�Short�Sign�Signal�SinH�Sin�Sleep�Sngl�Spacing�Spread�SqRt�SRand�Stat�Storage_Size�Sum�SymLnk�System�System_Clock�Tan�TanH�Time�
This_Image�Tiny�TrailZ�Transfer� Transpose�Trim�TtyNam�UBound�UCoBound�UMask�Unlink�Unpack�Verify�XOr�ZAbs�ZCos�ZExp�ZLog�ZSin�ZSqRtz\.(true|false)\.z+\.(eq|ne|lt|le|gt|ge|not|and|or|eqv|neqv)\.z"(\\[0-7]+|\\[^0-7]|[^"\\])*"z'(\\[0-7]+|\\[^0-7]|[^'\\])*'z\d+(?![.e])(_([1-9]|[a-z]\w*))?z0[+-]?\d*\.\d+([ed][-+]?\d+)?(_([1-9]|[a-z]\w*))?z0[+-]?\d+\.\d*([ed][-+]?\d+)?(_([1-9]|[a-z]\w*))?z0[+-]?\d+(\.\d*)?[ed][-+]?\d+(_([1-9]|[a-z]\w*))?)�rootr r r N)#�__name__�
__module__�__qualname__�__doc__�name�url�aliases� filenames� mimetypes�re�
IGNORECASE� MULTILINE�flagsr
�Preprocr r
r �
Whitespacer r r �Typer �Declarationr �Builtin�Wordr �Double�Singler �Integerr> �tokens� � �9/usr/lib/python3/dist-packages/pygments/lexers/fortran.pyr r s� � � � � � �� �
�D�
%�C��%� �G�4�4�4�I�!�"�I��M�B�L�(�E� ���(�
�w���G�I����G�F�O�O�
�T�"��G�F�O�O�
�t��'�
� *�8�8�G�T�_�g�+V�+V�W�
!�8�8�G�T�_�g�#N�#N�O�
�U� 7�* @E�X�+W� W� W�, �-
�2 �U� R� �� 2� 2� 2� �\�
� 5�h�?�
�g�)�*�
��,�
�U� 2)�d 27�x�e2I� 2I� 2I�f �\�g3
�l !�$�,�/�
;�X�]�K�Uk
�\ .�v�}�=�
-�v�}�=�
� 0���@�
@�&�,�O�
@�&�,�O�
@�&�,�O�
�yB� B�F�F�Fr c � � e Zd ZdZdZdgZddgZej Z dd�Z
defd ej fd
efde
j dfd
ee� � fgdedfdedfdej dfgd ee
eej � � dfd ee
ej � � df ed� � gd�ZdS )r zD
Lexer for fixed format Fortran.
.. versionadded:: 2.1
�FortranFixed�fortranfixedz*.fz*.FNc # �� K � t � � }|� d� � dz }|� |� � D ])\ }}}|� dd� � }|dk r|||fV � �*dS )z8Lex a line just as free form fortran without line break.r �
� N)r �group�get_tokens_unprocessed�replace)�self�match�ctx�lexer�text�index�token�values r �_lex_fortranzFortranFixedLexer._lex_fortran� s� � � � ������{�{�1�~�~��$��#(�#?�#?��#E�#E� *� *��E�5�%��M�M�$��+�+�E���{�{��U�E�)�)�)�)�� *� *r z[C*].*\nz#.*\nz {0,4}!.*\nz(.{5})� cont-charz.*\n� �code�0�.z(.{66})(.*)(\n)r� z(.*)(\n))r� r r )N)r� r� r� r� r� r� r� r� r� r� r r
r� r
�Labelr r r r �Strongr r� r r r r r r r � s � � � � � �� �
�D���G����I��M�E�*� *� *� *� �'�"�
�w��'�
�W�%�
��
�K�0�
�e�e�L�)�)�*�
� �$���
�'�6�"�
�'�.�&�)�
� �
�X�l�G�T�_�
=�
=�v�
G�
�(�(�<���A�A�6�J��G�F�O�O�
�� �F�F�Fr )r� r� �pygments.lexerr r r r r r �pygments.tokenr r
r r r
r r r r �__all__r r r r r �<module>r% s, ��� �
� � � � O� O� O� O� O� O� O� O� O� O� O� O� O� O� O� O�!� !� !� !� !� !� !� !� !� !� !� !� !� !� !� !� !� !� !� !� !� !� �.�
/��V� V� V� V� V�:� V� V� V�r(� (� (� (� (�
� (� (� (� (� (r