HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pygments/lexers/__pycache__/modula2.cpython-38.pyc
U

`a�[Q��@srdZddlZddlmZmZddlmZmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZdgZGdd�de�ZdS)z�
    pygments.lexers.modula2
    ~~~~~~~~~~~~~~~~~~~~~~~

    Multi-Dialect Lexer for Modula-2.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�
RegexLexer�include)�get_bool_opt�get_list_opt)	�Text�Comment�Operator�Keyword�Name�String�Number�Punctuation�Error�Modula2Lexerc@s�eZdZdZdZddgZddgZdgZej	ej
BZdefd	efgd
e
jfde
jfde
jfd
e
jfde
jfde
jfde
jfde
jfgdefgdejfdejfgdejfdejfdejfgdejfdejfdejfgdefdefgdefdefdefd efd!efd"efd#efd$efd%efd&efg
d'efd(efd)efd*efd+efd,efd-efd.efd/efg	d0efd1efd2efd3efd4efd5efd6efgd7efd8efd9efgd:e
jfd;e
jfd<e
jfgd=e
jfd>e
jfged?�ed@�edA�edB�edC�edD�edE�edF�edG�edH�edI�edJ�edK�g
dL�ZdMZdNZdOZ dPZ!dQZ"dRZ#dSZ$dTZ%dUZ&dVZ'dWZ(dXZ)dYZ*dZZ+d[Z,d\Z-d]Z.d^Z/d_Z0d_Z1d`Z2d_Z3daZ4dbZ5d_Z6d_Z7d_Z8dcZ9ddZ:deZ;dfZ<dgZ=dhZ>diZ?djZ@dkZAd_ZBd_ZCd_ZDd_ZEd_ZFdlZGdmZHdnZIdoZJdpZKdqZLdrZMdsZNd_e!fe%fe)fe-fe%fe!fe%fe%fds�	ZOee"e&e*fee"fee&fee*fee*e.fee&e1fee"e4fee&e7fee&e:fds�	ZPee#e'e+fee#fee'fee+fee+e/fee'e2fee#e5fee'e8fee'e;fds�	ZQe e$e(e,fe e$fe e(fe e,fe e,e0fe e(e3fe e$e6fe e(e9fe e(e<fds�	ZRd_d_d_eGfeGfd_d_d_d_ds�	ZSd_e=feBfeHeIeGfeHeIfeBfe=feBfeBfds�	ZTd_e>feCfeJfeJfeCfe>feCfeCfds�	ZUd_e?feDfeKfeKfeDfe?feDfeDfds�	ZVd_e@feEfeLfeLfeEfe@feEfeEfds�	ZWd_eAfeFfeMfeMfeFfeAfeFfeFfds�	ZXdtdu�ZYdvdw�ZZdxdy�Z[dzd{�Z\d|S)}ra�
    For `Modula-2 <http://www.modula2.org/>`_ source code.

    The Modula-2 lexer supports several dialects.  By default, it operates in
    fallback mode, recognising the *combined* literals, punctuation symbols
    and operators of all supported dialects, and the *combined* reserved words
    and builtins of PIM Modula-2, ISO Modula-2 and Modula-2 R10, while not
    differentiating between library defined identifiers.

    To select a specific dialect, a dialect option may be passed
    or a dialect tag may be embedded into a source file.

    Dialect Options:

    `m2pim`
        Select PIM Modula-2 dialect.
    `m2iso`
        Select ISO Modula-2 dialect.
    `m2r10`
        Select Modula-2 R10 dialect.
    `objm2`
        Select Objective Modula-2 dialect.

    The PIM and ISO dialect options may be qualified with a language extension.

    Language Extensions:

    `+aglet`
        Select Aglet Modula-2 extensions, available with m2iso.
    `+gm2`
        Select GNU Modula-2 extensions, available with m2pim.
    `+p1`
        Select p1 Modula-2 extensions, available with m2iso.
    `+xds`
        Select XDS Modula-2 extensions, available with m2iso.


    Passing a Dialect Option via Unix Commandline Interface

    Dialect options may be passed to the lexer using the `dialect` key.
    Only one such option should be passed. If multiple dialect options are
    passed, the first valid option is used, any subsequent options are ignored.

    Examples:

    `$ pygmentize -O full,dialect=m2iso -f html -o /path/to/output /path/to/input`
        Use ISO dialect to render input to HTML output
    `$ pygmentize -O full,dialect=m2iso+p1 -f rtf -o /path/to/output /path/to/input`
        Use ISO dialect with p1 extensions to render input to RTF output


    Embedding a Dialect Option within a source file

    A dialect option may be embedded in a source file in form of a dialect
    tag, a specially formatted comment that specifies a dialect option.

    Dialect Tag EBNF::

       dialectTag :
           OpeningCommentDelim Prefix dialectOption ClosingCommentDelim ;

       dialectOption :
           'm2pim' | 'm2iso' | 'm2r10' | 'objm2' |
           'm2iso+aglet' | 'm2pim+gm2' | 'm2iso+p1' | 'm2iso+xds' ;

       Prefix : '!' ;

       OpeningCommentDelim : '(*' ;

       ClosingCommentDelim : '*)' ;

    No whitespace is permitted between the tokens of a dialect tag.

    In the event that a source file contains multiple dialect tags, the first
    tag that contains a valid dialect option will be used and any subsequent
    dialect tags will be ignored.  Ideally, a dialect tag should be placed
    at the beginning of a source file.

    An embedded dialect tag overrides a dialect option set via command line.

    Examples:

    ``(*!m2r10*) DEFINITION MODULE Foobar; ...``
        Use Modula2 R10 dialect to render this source file.
    ``(*!m2pim+gm2*) DEFINITION MODULE Bazbam; ...``
        Use PIM dialect with GNU extensions to render this source file.


    Algol Publication Mode:

    In Algol publication mode, source text is rendered for publication of
    algorithms in scientific papers and academic texts, following the format
    of the Revised Algol-60 Language Report.  It is activated by passing
    one of two corresponding styles as an option:

    `algol`
        render reserved words lowercase underline boldface
        and builtins lowercase boldface italic
    `algol_nu`
        render reserved words lowercase boldface (no underlining)
        and builtins lowercase boldface italic

    The lexer automatically performs the required lowercase conversion when
    this mode is activated.

    Example:

    ``$ pygmentize -O full,style=algol -f latex -o /path/to/output /path/to/input``
        Render input file in Algol publication mode to LaTeX output.


    Rendering Mode of First Class ADT Identifiers:

    The rendering of standard library first class ADT identifiers is controlled
    by option flag "treat_stdlib_adts_as_builtins".

    When this option is turned on, standard library ADT identifiers are rendered
    as builtins.  When it is turned off, they are rendered as ordinary library
    identifiers.

    `treat_stdlib_adts_as_builtins` (default: On)

    The option is useful for dialects that support ADTs as first class objects
    and provide ADTs in the standard library that would otherwise be built-in.

    At present, only Modula-2 R10 supports library ADTs as first class objects
    and therefore, no ADT identifiers are defined for any other dialects.

    Example:

    ``$ pygmentize -O full,dialect=m2r10,treat_stdlib_adts_as_builtins=Off ...``
        Render standard library ADTs as ordinary library types.

    .. versionadded:: 1.3

    .. versionchanged:: 2.1
       Added multi-dialect support.
    zModula-2Zmodula2Zm2z*.defz*.modztext/x-modula2z\n+z\s+z\(\*!m2pim\*\)z\(\*!m2iso\*\)z\(\*!m2r10\*\)z\(\*!objm2\*\)z\(\*!m2iso\+aglet\*\)z\(\*!m2pim\+gm2\*\)z\(\*!m2iso\+p1\*\)z\(\*!m2iso\+xds\*\)z([a-zA-Z_$][\w$]*)z0b[01]+(\'[01]+)*z0[ux][0-9A-F]+(\'[0-9A-F]+)*z>[0-9]+(\'[0-9]+)*\.[0-9]+(\'[0-9]+)*[eE][+-]?[0-9]+(\'[0-9]+)*z$[0-9]+(\'[0-9]+)*\.[0-9]+(\'[0-9]+)*z[0-9]+(\'[0-9]+)*z[0-7]+Bz[0-7]+Cz
[0-9A-F]+Hz'(\\\\|\\'|[^'])*'z"(\\\\|\\"|[^"])*"z\*\.z\+>�<>�<=�>=�==�::z:=z\+\+�--z[+-]z[*/]z\\z[=#<>]z\^�@�&�~�`z\.\.�<<�>>�->z\|#�##z\|\*z[()\[\]{},.:;|]�!z\?z^//.*?\nz\(\*([^$].*?)\*\)z/\*(.*?)\*/z	<\*.*?\*>z
\(\*\$.*?\*\)�
whitespace�dialecttags�pragmas�comments�identifiers�suffixed_number_literals�prefixed_number_literals�plain_number_literals�string_literals�digraph_punctuation�digraph_operators�unigraph_punctuation�unigraph_operators)rr r#r%r&r$r'r)r+r(r*r"r!�root)%ZANDZARRAYZBEGINZBYZCASEZCONSTZ
DEFINITIONZDIVZDO�ELSEZELSIFZENDZEXITZFORZFROMZIFZIMPLEMENTATIONZIMPORT�INZLOOPZMODZMODULEZNOTZOF�ORZPOINTERZ	PROCEDUREZRECORD�REPEATZRETURNZSETZTHENZTOZTYPEZUNTILZVARZWHILE)ZABSZBOOLEAN�CARDINALZCHARZCHRZFALSEZINTEGERZLONGINTZLONGREAL�MAXZMIN�NILZODDZORDZREAL�TRUE)ZADDRESSZBYTEZWORD�ADR)rrr�$�%�?�\r�++rr�*.�+>rrr�|#r)�EXPORT�	QUALIFIED�WITH)�BITSET�CAP�DEC�DISPOSE�EXCL�FLOAT�HALT�HIGH�INC�INCL�NEWr3�PROC�SIZE�TRUNC�VAL)�SYSTEM�PROCESS�TSIZE�
NEWPROCESS�TRANSFER)rr6r7r8r9rr:rrr;r<rrrr=r)ZEXCEPTr>ZFINALLYZFORWARDZ	PACKEDSETr?ZREMZRETRYr@ZABSTRACTZAS�CLASSZGUARDZINHERITZOVERRIDEZREADONLYZREVEALZTRACEDZ
UNSAFEGUARDED)rArBZCMPLX�COMPLEXrCrDrErFrGrHZIMrIrJZINTZ
INTERRUPTIBLE�LENGTHZLFLOAT�LONGCOMPLEXrKrLZ
PROTECTIONZRErMrNZUNINTERRUBTIBLErOZCREATEZDESTROY�EMPTYZISMEMBERZSELF):rPZ
BITSPERLOCZLOCSPERBYTEZLOCSPERWORDZLOCZADDADRZSUBADRZDIFADRZMAKEADRr5ZROTATEZSHIFT�CASTrRZ
COROUTINESZATTACHZ	COROUTINEZCURRENTZDETACHZHANDLERZINTERRUPTSOURCEZ
IOTRANSFERZ
IsATTACHEDZLISTENZNEWCOROUTINEZPROTrTZ
EXCEPTIONSZAllocateSourceZ
CurrentNumberZExceptionNumberZExceptionSourceZ
GetMessageZIsCurrentSourceZIsExceptionalExecutionZRAISEZTERMINATIONZ
IsTerminatingZ	HasHaltedZM2EXCEPTIONZM2ExceptionsZM2ExceptionZ
IsM2ExceptionZindexExceptionZrangeExceptionZcaseSelectExceptionZinvalidLocationZfunctionExceptionZwholeValueExceptionZwholeDivExceptionZrealValueExceptionZrealDivExceptionZcomplexValueExceptionZcomplexDivExceptionZ
protExceptionZsysExceptionZcoExceptionZexException)rrrr6r7rr)ZALIASZARGLISTZ	BLUEPRINTZCOPYZGENLIBZ
INDETERMINATErKZNONEZOPAQUEZREFERENTIALZRELEASEZRETAIN�ASMZREG)r1ZCOUNTrYZEXISTSZINSERTrW�LONGCARDZOCTETZPTRZPREDZREADZREADNEWZREMOVEZRETRIEVEZSORTZSTOREZSUBSETZSUCCZTLIMITZTMAXZTMINr4rRZUNICHARZWRITEZWRITEF)KZTPROPERTIESZPROPERTY�LITERALZ	TPROPERTYZTLITERALZTBUILTINZTDYNZTREFCZTNILZTBASEZ
TPRECISIONZTMAXEXPZTMINEXPZ
CONVERSIONZTSXFSIZEZSXFrOZUNSAFErZ�	INTRINSIC�AVAILZADDZSUBZADDCZSUBCZFETCHADDZFETCHSUBZSHLZSHRZASHRZROTLZROTRZROTLCZROTRCZBWNOT�BWAND�BWOR�BWXOR�BWNANDZBWNORZSETBITZTESTBITZLSBITZMSBITZCSBITSZBAILrGZTODOZFFIZADDRZVARGLISTZVARGCZATOMICr^r_ZSWAPZCASrIrCr`rcrarbZCOMPILER�DEBUGZMODNAMEZPROCNAMEZLINENUMZDEFAULTZHASHZ	ASSEMBLERZREGISTERZSETREGZGETREGZCODE)rr6r7rr)ZBYCOPYZBYREFrUZCONTINUEZCRITICALZINOUTZMETHODZONZOPTIONALZOUTZPRIVATEZ	PROTECTEDZPROTOCOLZPUBLICZSUPERZTRY)ZOBJECTZNOZYES�)	�BITSET8�BITSET16�BITSET32�	CARDINAL8�
CARDINAL16�
CARDINAL32�INTEGER8�	INTEGER16�	INTEGER32)
r[Z
__ATTRIBUTE__Z__BUILTIN__Z
__COLUMN__Z__DATE__Z__FILE__Z__FUNCTION__Z__LINE__Z
__MODULE__ZVOLATILE)rfrgrhrirjrk�
CARDINAL64Z	COMPLEX32Z	COMPLEX64Z	COMPLEX96Z
COMPLEX128rlrmrn�	INTEGER64ZREAL8ZREAL16ZREAL32ZREAL96ZREAL128ZTHROW)�BCD)ZSEQ)	ZASH�ASSERTZDIFFADR_TYPEZENTIERZINDEXZLENr\�	SHORTCARD�SHORTINT)rQrSZBOOL8ZBOOL16ZBOOL32�CARD8�CARD16�CARD32�INT8�INT16�INT32ZREFZMOVEZFILLZGETZPUTZCC�intZunsignedZsize_tZvoidCOMPILERZOPTIONZEQUATION)ZTerminal�
FileSystemZInOutZ	RealInOutZMathLib0�Storage)�FlagZFlagSetZResponseZCommandZLockZ
PermissionZ
MediumType�FileZFileProcZ
DirectoryProcZFileCommandZDirectoryCommand)9ZReadZBusyReadZ	ReadAgainZWriteZWriteStringZWriteLnZCreateZLookupZCloseZDeleteZRenameZSetReadZSetWriteZ	SetModifyZSetOpenZDoioZSetPosZGetPosZLengthZResetZAgainZReadWordZ	WriteWordZReadCharZ	WriteCharZCreateMediumZDeleteMediumZ
AssignNameZDeassignNameZ
ReadMediumZLookupMediumZ	OpenInputZ
OpenOutputZ
CloseInputZCloseOutputZ
ReadStringZReadIntZReadCardZReadWrdZWriteIntZ	WriteCardZWriteOctZWriteHexZWriteWrdZReadRealZ	WriteRealZ
WriteFixPtZWriteRealOctZsqrtZexpZlnZsinZcosZarctanZentier�ALLOCATE�
DEALLOCATE)ZDoneZtermCH�in�out)ZEOL)0rqZLONGBCDrAZSHORTBITSETZ
LONGBITSETZLONGLONGBITSETrVrXrsZLONGLONGCARDrtZLONGLONGINTZPOSINTZSHORTPOSINTZ
LONGPOSINTZLONGLONGPOSINTrfrgrhZBITSET64Z	BITSET128ZBS8ZBS16ZBS32ZBS64ZBS128rirjrkroZCARDINAL128rurvrwZCARD64ZCARD128rlrmrnrpZ
INTEGER128rxryrzZINT64ZINT128�STRINGZ	UNISTRING)Z	ProtoRootZProtoComputationalZProtoNumericZProtoScalarZProtoNonScalarZ
ProtoCardinalZProtoIntegerZ	ProtoRealZProtoComplexZProtoVectorZ
ProtoTupleZProtoCompArrayZProtoCollectionZProtoStaticArrayZProtoStaticSetZProtoStaticStringZ
ProtoArrayZProtoStringZProtoSetZ
ProtoMultiSetZProtoDictionaryZProtoMultiDictZProtoExtensionZProtoIOZ
ProtoCardMathZProtoIntMathZ
ProtoRealMath)�ASCIIZ	BooleanIOZCharIOZ	UnicharIOZOctetIOZ
CardinalIOZ
LongCardIOZ	IntegerIOZ	LongIntIOZRealIOZ
LongRealIOZBCDIOZ	LongBCDIOZCardMathZLongCardMathZIntMathZLongIntMathZRealMathZLongRealMathZBCDMathZLongBCDMath�FileIOr|r}Z	IOSupport)rZStatus)r�r�rM)ZstdInZstdOutZstdErr)ZpiZtau)	�unknown�m2pimZm2iso�m2r10�objm2zm2iso+agletz	m2pim+gm2zm2iso+p1z	m2iso+xdscKs�t|dg�}|D]$}||jdd�kr|�|�q@q|�d�d|_t|dg�}d|ksbd|krjd	|_nd|_t|d
d	�|_tj|f|�dS)N�dialect����r�FZstyleZalgolZalgol_nuT�treat_stdlib_adts_as_builtins)	r�dialects�set_dialect�dialect_set_by_tag�algol_publication_moderr�r�__init__)�selfZoptionsr�Zdialect_optionZstylesrere�9/usr/lib/python3/dist-packages/pygments/lexers/modula2.pyr��s"

�zModula2Lexer.__init__cCs�||jkrd}n|}t�}|j|D]}|�t|��q$t�}|j|D]}|�t|��qHt�}|j|D]}|�t|��|��qlt�}|j|D]}|�t|��|��q�t�}|j|D]}|�t|��|��q�t�}	|j	|D]}|	�t|��|��q�t�}
|j
|D]}|
�t|��|���qt�}|j|D]}|�t|��|���q@t�}|j|D]}|�t|��|���qlt�}
|j
|D]}|
�t|��|���q�||_||_||_||_||_||_|	|_|
|_||_||_|
|_dS)Nr�)r��set�lexemes_to_reject_db�update�reserved_words_db�builtins_db�
difference�pseudo_builtins_db�stdlib_adts_db�stdlib_modules_db�stdlib_types_db�stdlib_procedures_db�stdlib_variables_db�stdlib_constants_dbr��lexemes_to_reject�reserved_words�builtins�pseudo_builtins�adts�modules�types�
procedures�	variables�	constants)r�Z
dialect_idr�Zlexemes_to_reject_set�listZreswords_setZbuiltins_setZpseudo_builtins_setZadts_setZmodules_setZ	types_setZprocedures_setZ
variables_setZ
constants_setrerer�r�sX
zModula2Lexer.set_dialectc
Cs�d}d}t|�}t|�}|}|}t|�||kr�|�|�r�|�|�r�|||�}tdt|j��D]}	||j|	krb|SqbdSdSdS)Nz(*!z*)r�r�)�len�
startswith�endswith�ranger�)
r�Zdialect_tagZleft_tag_delimZright_tag_delimZleft_tag_delim_lenZright_tag_delim_lenZindicator_startZ
indicator_endZ	indicator�indexrerer��get_dialect_from_dialect_tag}s"��
z)Modula2Lexer.get_dialect_from_dialect_tagccs�t�||�D�]�\}}}|jsJ|tjkrJ|�|�}|dkrJ|�|�d|_|tk�rJ||jkrtt	j
}|jrr|��}n�||j
kr�tj}|jr�|��}n�||jkr�tjj}|jr�|��}n�||jkr�|js�tj}ntjj}|jr�|��}n`||jkr�tj}nN||jk�rtj}n:||jk�r tj}n&||jk�r4tj}n||jk�r�tj}�nt|tk�r�|jdk�r�d|k�s||dd�dk�r�t}nT|jdk�r�|tj k�r�t}n6|tj!k�r�d	|k�r�t}n|tj"k�r�d
|k�r�t}n�|tk�rX|tj#k�r�|jdk�r�t}|tj$k�r�|�%d��r*|j�%d��r*t}n,|�%d
��r�|jdk�r�|j�%d��s�tj&}nf||j'k�rht}|j�r�|dk�r�d}n>|dk�r�d}n.|dk�r�d}n|dk�r�d}n|dk�r�d}|||fVqdS)Nr�T)r�r�r��'r�)Z0bZ0xZ0u)r�r��H�Ez<*r�z(*$�#u≠ru≤ru≥ru≡r;u•)(r�get_tokens_unprocessedr�r�Specialr�r�r
r�r	ZReservedr��lowerr�ZBuiltinr�ZPseudor�r�Z	Namespacer�r�ZClassr�ZFunctionr�ZVariabler�ZConstantrr�r�Oct�Hex�Float�Single�Preprocr��	Multiliner�)r��textr��token�valueZindicated_dialectrerer�r��s�















��
�




z#Modula2Lexer.get_tokens_unprocessedN)]�__name__�
__module__�__qualname__�__doc__�name�aliases�	filenamesZ	mimetypes�re�	MULTILINE�DOTALL�flagsrrr�r
rZBinr�r�ZIntegerr�rrr
r�r�r�r�tokensZcommon_reserved_wordsZcommon_builtinsZcommon_pseudo_builtinsZpim_lexemes_to_rejectZpim_additional_reserved_wordsZpim_additional_builtinsZpim_additional_pseudo_builtinsZiso_lexemes_to_rejectZiso_additional_reserved_wordsZiso_additional_builtinsZiso_additional_pseudo_builtinsZm2r10_lexemes_to_rejectZm2r10_additional_reserved_wordsZm2r10_additional_builtinsZ m2r10_additional_pseudo_builtinsZobjm2_lexemes_to_rejectZobjm2_additional_reserved_wordsZobjm2_additional_builtinsZ objm2_additional_pseudo_builtinsZaglet_additional_reserved_wordsZaglet_additional_builtinsZ aglet_additional_pseudo_builtinsZgm2_additional_reserved_wordsZgm2_additional_builtinsZgm2_additional_pseudo_builtinsZp1_additional_reserved_wordsZp1_additional_builtinsZp1_additional_pseudo_builtinsZxds_additional_reserved_wordsZxds_additional_builtinsZxds_additional_pseudo_builtinsZpim_stdlib_module_identifiersZpim_stdlib_type_identifiersZpim_stdlib_proc_identifiersZpim_stdlib_var_identifiersZpim_stdlib_const_identifiersZiso_stdlib_module_identifiersZiso_stdlib_type_identifiersZiso_stdlib_proc_identifiersZiso_stdlib_var_identifiersZiso_stdlib_const_identifiersZm2r10_stdlib_adt_identifiersZ"m2r10_stdlib_blueprint_identifiersZm2r10_stdlib_module_identifiersZm2r10_stdlib_type_identifiersZm2r10_stdlib_proc_identifiersZm2r10_stdlib_var_identifiersZm2r10_stdlib_const_identifiersr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rererer�rs��������������
�
����%

			
	
	���������+�	���������C�	���������C�	���������B���1���������4���������1���������1���������1���������1&f0)r�r�Zpygments.lexerrrZ
pygments.utilrrZpygments.tokenrrrr	r
rrr
r�__all__rrererer��<module>s
,