§
    XŠtjSÏ  ã                   ó€   — d Z ddlZddlmZmZ ddlmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZ dgZ G d„ de¦  «        ZdS )z×
    pygments.lexers.modula2
    ~~~~~~~~~~~~~~~~~~~~~~~

    Multi-Dialect Lexer for Modula-2.

    :copyright: Copyright 2006-present 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                   óz  — e Zd ZdZdZdZddgZddgZdgZd	Z	e
j        e
j        z  Zd
efdefgdej        fdej        fdej        fdej        fdej        fdej        fdej        fdej        fgdefgdej        fdej        fgdej        fdej        fdej        fgdej        fdej        fdej        fgdej        fdej        fgdefd efd!efd"efd#efd$efd%efd&efd'efd(efg
d)efd*efd+efd,efd-efd.efd/efd0efd1efg	d2efd3efd4efd5efd6efd7efd8efgd9efd:efd;efgd<ej        fd=ej        fd>ej        fgd?ej        fd@ej        fg edA¦  «         edB¦  «         edC¦  «         edD¦  «         edE¦  «         edF¦  «         edG¦  «         edH¦  «         edI¦  «         edJ¦  «         edK¦  «         edL¦  «         edM¦  «        gdNœZ dOZ!dPZ"dQZ#dRZ$dSZ%dTZ&dUZ'dVZ(dWZ)dXZ*dYZ+dZZ,d[Z-d\Z.d]Z/d^Z0d_Z1d`Z2daZ3daZ4dbZ5daZ6dcZ7ddZ8daZ9daZ:daZ;deZ<dfZ=dgZ>dhZ?diZ@djZAdkZBdlZCdmZDdaZEdaZFdaZGdaZHdaZIdnZJdoZKdpZLdqZMdrZNdsZOdtZPduZQdae$fe(fe,fe0fe(fe$fe(fe(fduœ	ZRe!e%e)e-fe!e%fe!e)fe!e-fe!e-e1fe!e)e4fe!e%e7fe!e)e:fe!e)e=fduœ	ZSe"e&e*e.fe"e&fe"e*fe"e.fe"e.e2fe"e*e5fe"e&e8fe"e*e;fe"e*e>fduœ	ZTe#e'e+e/fe#e'fe#e+fe#e/fe#e/e3fe#e+e6fe#e'e9fe#e+e<fe#e+e?fduœ	ZUdadadaeJfeJfdadadadaduœ	ZVdae@feEfeKeLeJfeKeLfeEfe@feEfeEfduœ	ZWdaeAfeFfeMfeMfeFfeAfeFfeFfduœ	ZXdaeBfeGfeNfeNfeGfeBfeGfeGfduœ	ZYdaeCfeHfeOfeOfeHfeCfeHfeHfduœ	ZZdaeDfeIfePfePfeIfeDfeIfeIfduœ	Z[dv„ Z\dw„ Z]dx„ Z^dy„ Z_dz„ Z`d{S )|r   a—  
    For Modula-2 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.

    .. versionchanged:: 2.1
       Added multi-dialect support.
    zModula-2zhttp://www.modula2.org/Úmodula2Úm2z*.defz*.modztext/x-modula2z1.3z\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$]*)z0b[01]+(\'[01]+)*z0[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^//.*?\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)r$   r%   r(   r*   r+   r)   r,   r.   r0   r-   r/   r'   r&   Úroot)%ÚANDÚARRAYÚBEGINÚBYÚCASEÚCONSTÚ
DEFINITIONÚDIVÚDOÚELSEÚELSIFÚENDÚEXITÚFORÚFROMÚIFÚIMPLEMENTATIONÚIMPORTÚINÚLOOPÚMODÚMODULEÚNOTÚOFÚORÚPOINTERÚ	PROCEDUREÚRECORDÚREPEATÚRETURNÚSETÚTHENÚTOÚTYPEÚUNTILÚVARÚWHILE)ÚABSÚBOOLEANÚCARDINALÚCHARÚCHRÚFALSEÚINTEGERÚLONGINTÚLONGREALÚMAXÚMINÚNILÚODDÚORDÚREALÚTRUE)ÚADDRESSÚBYTEÚWORDÚADR)r#   r   r   ú$ú%ú?ú\r   ú++r   r   ú*.ú+>r!   r   r    ú|#r"   )ÚEXPORTÚ	QUALIFIEDÚWITH)ÚBITSETÚCAPÚDECÚDISPOSEÚEXCLÚFLOATÚHALTÚHIGHÚINCÚINCLÚNEWrb   ÚPROCÚSIZEÚTRUNCÚVAL)ÚSYSTEMÚPROCESSÚTSIZEÚ
NEWPROCESSÚTRANSFER)r   rk   rl   rm   rn   r   ro   r   r   rp   rq   r!   r   r    rr   r"   )ÚEXCEPTrs   ÚFINALLYÚFORWARDÚ	PACKEDSETrt   ÚREMÚRETRYru   ÚABSTRACTÚASÚCLASSÚGUARDÚINHERITÚOVERRIDEÚREADONLYÚREVEALÚTRACEDÚUNSAFEGUARDED)rv   rw   ÚCMPLXÚCOMPLEXrx   ry   rz   r{   r|   r}   ÚIMr~   r   ÚINTÚINTERRUPTIBLEÚLENGTHÚLFLOATÚLONGCOMPLEXr€   r�   Ú
PROTECTIONÚREr‚   rƒ   ÚUNINTERRUBTIBLEr„   ÚCREATEÚDESTROYÚEMPTYÚISMEMBERÚSELF):r…   Ú
BITSPERLOCÚLOCSPERBYTEÚLOCSPERWORDÚLOCÚADDADRÚSUBADRÚDIFADRÚMAKEADRrj   ÚROTATEÚSHIFTÚCASTr‡   Ú
COROUTINESÚATTACHÚ	COROUTINEÚCURRENTÚDETACHÚHANDLERÚINTERRUPTSOURCEÚ
IOTRANSFERÚ
IsATTACHEDÚLISTENÚNEWCOROUTINEÚPROTr‰   Ú
EXCEPTIONSÚAllocateSourceÚCurrentNumberÚExceptionNumberÚExceptionSourceÚ
GetMessageÚIsCurrentSourceÚIsExceptionalExecutionÚRAISEÚTERMINATIONÚIsTerminatingÚ	HasHaltedÚM2EXCEPTIONÚM2ExceptionsÚM2ExceptionÚIsM2ExceptionÚindexExceptionÚrangeExceptionÚcaseSelectExceptionÚinvalidLocationÚfunctionExceptionÚwholeValueExceptionÚwholeDivExceptionÚrealValueExceptionÚrealDivExceptionÚcomplexValueExceptionÚcomplexDivExceptionÚprotExceptionÚsysExceptionÚcoExceptionÚexException)r#   r   r   rk   rl   r   r   )ÚALIASÚARGLISTÚ	BLUEPRINTÚCOPYÚGENLIBÚINDETERMINATEr€   ÚNONEÚOPAQUEÚREFERENTIALÚRELEASEÚRETAINÚASMÚREG)rY   ÚCOUNTr§   ÚEXISTSÚINSERTrŸ   ÚLONGCARDÚOCTETÚPTRÚPREDÚREADÚREADNEWÚREMOVEÚRETRIEVEÚSORTÚSTOREÚSUBSETÚSUCCÚTLIMITÚTMAXÚTMINrf   r‡   ÚUNICHARÚWRITEÚWRITEF)KÚTPROPERTIESÚPROPERTYÚLITERALÚ	TPROPERTYÚTLITERALÚTBUILTINÚTDYNÚTREFCÚTNILÚTBASEÚ
TPRECISIONÚTMAXEXPÚTMINEXPÚ
CONVERSIONÚTSXFSIZEÚSXFr„   ÚUNSAFEr´   Ú	INTRINSICÚAVAILÚADDÚSUBÚADDCÚSUBCÚFETCHADDÚFETCHSUBÚSHLÚSHRÚASHRÚROTLÚROTRÚROTLCÚROTRCÚBWNOTÚBWANDÚBWORÚBWXORÚBWNANDÚBWNORÚSETBITÚTESTBITÚLSBITÚMSBITÚCSBITSÚBAILr|   ÚTODOÚFFIÚADDRÚVARGLISTÚVARGCÚATOMICr  r  ÚSWAPÚCASr~   rx   r#  r&  r$  r%  ÚCOMPILERÚDEBUGÚMODNAMEÚPROCNAMEÚLINENUMÚDEFAULTÚHASHÚ	ASSEMBLERÚREGISTERÚSETREGÚGETREGÚCODE)r#   rk   rl   r   r   )ÚBYCOPYÚBYREFr’   ÚCONTINUEÚCRITICALÚINOUTÚMETHODÚONÚOPTIONALÚOUTÚPRIVATEÚ	PROTECTEDÚPROTOCOLÚPUBLICÚSUPERÚTRY)ÚOBJECTÚNOÚYES© )	ÚBITSET8ÚBITSET16ÚBITSET32Ú	CARDINAL8Ú
CARDINAL16Ú
CARDINAL32ÚINTEGER8Ú	INTEGER16Ú	INTEGER32)
rë   Ú__ATTRIBUTE__Ú__BUILTIN__Ú
__COLUMN__Ú__DATE__Ú__FILE__Ú__FUNCTION__Ú__LINE__Ú
__MODULE__ÚVOLATILE)rU  rV  rW  rX  rY  rZ  Ú
CARDINAL64Ú	COMPLEX32Ú	COMPLEX64Ú	COMPLEX96Ú
COMPLEX128r[  r\  r]  Ú	INTEGER64ÚREAL8ÚREAL16ÚREAL32ÚREAL96ÚREAL128ÚTHROW)ÚBCD)ÚSEQ)	ÚASHÚASSERTÚDIFFADR_TYPEÚENTIERÚINDEXÚLENrð   Ú	SHORTCARDÚSHORTINT)r†   rˆ   ÚBOOL8ÚBOOL16ÚBOOL32ÚCARD8ÚCARD16ÚCARD32ÚINT8ÚINT16ÚINT32ÚREFÚMOVEÚFILLÚGETÚPUTÚCCÚintÚunsignedÚsize_tÚvoidCOMPILERÚOPTIONÚEQUATION)ÚTerminalÚ
FileSystemÚInOutÚ	RealInOutÚMathLib0ÚStorage)ÚFlagÚFlagSetÚResponseÚCommandÚLockÚ
PermissionÚ
MediumTypeÚFileÚFileProcÚDirectoryProcÚFileCommandÚDirectoryCommand)9ÚReadÚBusyReadÚ	ReadAgainÚWriteÚWriteStringÚWriteLnÚCreateÚLookupÚCloseÚDeleteÚRenameÚSetReadÚSetWriteÚ	SetModifyÚSetOpenÚDoioÚSetPosÚGetPosÚLengthÚResetÚAgainÚReadWordÚ	WriteWordÚReadCharÚ	WriteCharÚCreateMediumÚDeleteMediumÚ
AssignNameÚDeassignNameÚ
ReadMediumÚLookupMediumÚ	OpenInputÚ
OpenOutputÚ
CloseInputÚCloseOutputÚ
ReadStringÚReadIntÚReadCardÚReadWrdÚWriteIntÚ	WriteCardÚWriteOctÚWriteHexÚWriteWrdÚReadRealÚ	WriteRealÚ
WriteFixPtÚWriteRealOctÚsqrtÚexpÚlnÚsinÚcosÚarctanÚentierÚALLOCATEÚ
DEALLOCATE)ÚDoneÚtermCHÚinÚout)ÚEOL)0rs  ÚLONGBCDrv   ÚSHORTBITSETÚ
LONGBITSETÚLONGLONGBITSETr›   r¡   r{  ÚLONGLONGCARDr|  ÚLONGLONGINTÚPOSINTÚSHORTPOSINTÚ
LONGPOSINTÚLONGLONGPOSINTrU  rV  rW  ÚBITSET64Ú	BITSET128ÚBS8ÚBS16ÚBS32ÚBS64ÚBS128rX  rY  rZ  rg  ÚCARDINAL128r€  r�  r‚  ÚCARD64ÚCARD128r[  r\  r]  rl  Ú
INTEGER128rƒ  r„  r…  ÚINT64ÚINT128ÚSTRINGÚ	UNISTRING)Ú	ProtoRootÚProtoComputationalÚProtoNumericÚProtoScalarÚProtoNonScalarÚProtoCardinalÚProtoIntegerÚ	ProtoRealÚProtoComplexÚProtoVectorÚ
ProtoTupleÚProtoCompArrayÚProtoCollectionÚProtoStaticArrayÚProtoStaticSetÚProtoStaticStringÚ
ProtoArrayÚProtoStringÚProtoSetÚProtoMultiSetÚProtoDictionaryÚProtoMultiDictÚProtoExtensionÚProtoIOÚProtoCardMathÚProtoIntMathÚProtoRealMath)ÚASCIIÚ	BooleanIOÚCharIOÚ	UnicharIOÚOctetIOÚ
CardinalIOÚ
LongCardIOÚ	IntegerIOÚ	LongIntIOÚRealIOÚ
LongRealIOÚBCDIOÚ	LongBCDIOÚCardMathÚLongCardMathÚIntMathÚLongIntMathÚRealMathÚLongRealMathÚBCDMathÚLongBCDMathÚFileIOr“  r—  Ú	IOSupport)rŸ  ÚStatus)rÛ  rÜ  r‚   )ÚstdInÚstdOutÚstdErr)ÚpiÚtau)	ÚunknownÚm2pimÚm2isoÚm2r10Úobjm2zm2iso+agletz	m2pim+gm2zm2iso+p1z	m2iso+xdsc                 óZ  — t          |dg ¦  «        }|D ]*}|| j        dd…         v r|                      |¦  «          nŒ+|                      d¦  «         d| _        t          |dg ¦  «        }d|v sd|v rd	| _        nd| _        t          |d
d	¦  «        | _        t          j        | fi |¤Ž d S )NÚdialecté   éÿÿÿÿr3  FÚstyleÚalgolÚalgol_nuTÚtreat_stdlib_adts_as_builtins)	r   ÚdialectsÚset_dialectÚdialect_set_by_tagÚalgol_publication_moder   r?  r   Ú__init__)ÚselfÚoptionsr@  Údialect_optionÚstyless        úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pygments/lexers/modula2.pyrD  zModula2Lexer.__init__ð  sð   € õ   ¨°BÑ7Ô7ˆà&ð 		(ð 		(ˆNØ ¤¨q°¨tÔ!4Ð4Ð4à× Ò  Ñ0Ô0Ð0Ø�ð 5ð ×Ò˜YÑ'Ô'Ð'à"'ˆÔõ ˜g w°Ñ3Ô3ˆð �fÐÐ 
¨fÐ 4Ð 4Ø*.ˆDÔ'Ð'à*/ˆDÔ'õ .:ØÐ4°dñ.<ô .<ˆÔ*õ 	Ô˜DÐ,Ð, GÐ,Ð,Ð,Ð,Ð,ó    c                 óì  — || j         vrd}n|}t          ¦   «         }| j        |         D ]$}|                     t          |¦  «        ¦  «         Œ%t          ¦   «         }| j        |         D ]$}|                     t          |¦  «        ¦  «         Œ%t          ¦   «         }| j        |         D ]7}|                     t          |¦  «                             |¦  «        ¦  «         Œ8t          ¦   «         }| j        |         D ]7}|                     t          |¦  «                             |¦  «        ¦  «         Œ8t          ¦   «         }| j        |         D ]7}|                     t          |¦  «                             |¦  «        ¦  «         Œ8t          ¦   «         }	| j	        |         D ]7}|	                     t          |¦  «                             |¦  «        ¦  «         Œ8t          ¦   «         }
| j
        |         D ]7}|
                     t          |¦  «                             |¦  «        ¦  «         Œ8t          ¦   «         }| j        |         D ]7}|                     t          |¦  «                             |¦  «        ¦  «         Œ8t          ¦   «         }| j        |         D ]7}|                     t          |¦  «                             |¦  «        ¦  «         Œ8t          ¦   «         }| j        |         D ]7}|                     t          |¦  «                             |¦  «        ¦  «         Œ8|| _        || _        || _        || _        || _        || _        |	| _        |
| _        || _        || _        || _        d S )Nr3  )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_dbr9  Úlexemes_to_rejectÚreserved_wordsÚbuiltinsÚpseudo_builtinsÚadtsÚmodulesÚtypesÚ
proceduresÚ	variablesÚ	constants)rE  Ú
dialect_idr9  Úlexemes_to_reject_setÚlistÚreswords_setÚbuiltins_setÚpseudo_builtins_setÚadts_setÚmodules_setÚ	types_setÚprocedures_setÚvariables_setÚconstants_sets                 rI  rA  zModula2Lexer.set_dialect  si  € ð ˜Tœ]Ð*Ð*ØˆGˆGà ˆGõ !$¡¤ÐàÔ-¨gÔ6ð 	4ð 	4ˆDØ!×(Ò(­¨T©¬Ñ3Ô3Ð3Ð3õ ‘u”uˆàÔ*¨7Ô3ð 	+ð 	+ˆDØ×Ò¥ D¡	¤	Ñ*Ô*Ð*Ð*õ ‘u”uˆàÔ$ WÔ-ð 	Dð 	DˆDØ×Ò¥ D¡	¤	× 4Ò 4°\Ñ BÔ BÑCÔCÐCÐCõ "™eœeÐàÔ+¨GÔ4ð 	Kð 	KˆDØ×&Ò&¥s¨4¡y¤y×';Ò';¸LÑ'IÔ'IÑJÔJÐJÐJõ ‘5”5ˆàÔ'¨Ô0ð 	@ð 	@ˆDØ�OŠO�C ™IœI×0Ò0°Ñ>Ô>Ñ?Ô?Ð?Ð?õ ‘e”eˆàÔ*¨7Ô3ð 	Cð 	CˆDØ×Ò�s 4™yœy×3Ò3°LÑAÔAÑBÔBÐBÐBõ ‘E”Eˆ	àÔ(¨Ô1ð 	Að 	AˆDØ×Ò�S ™YœY×1Ò1°,Ñ?Ô?Ñ@Ô@Ð@Ð@õ ™œˆàÔ-¨gÔ6ð 	Fð 	FˆDØ×!Ò!¥# d¡)¤)×"6Ò"6°|Ñ"DÔ"DÑEÔEÐEÐEõ ™œˆàÔ,¨WÔ5ð 	Eð 	EˆDØ× Ò ¥ T¡¤×!5Ò!5°lÑ!CÔ!CÑDÔDÐDÐDõ ™œˆàÔ,¨WÔ5ð 	Eð 	EˆDØ× Ò ¥ T¡¤×!5Ò!5°lÑ!CÔ!CÑDÔDÐDÐDð ˆŒØ!6ˆÔØ*ˆÔØ$ˆŒØ2ˆÔØˆŒ	Ø"ˆŒØˆŒ
Ø(ˆŒØ&ˆŒØ&ˆŒˆˆrJ  c                 ó`  — d}d}t          |¦  «        }t          |¦  «        }|}| }t          |¦  «        ||z   k    rp|                     |¦  «        r[|                     |¦  «        rF|||…         }t          dt          | j        ¦  «        ¦  «        D ]}	|| j        |	         k    r|c S ŒdS dS )Nz(*!ú*)r:  r3  )ÚlenÚ
startswithÚendswithÚranger@  )
rE  Údialect_tagÚleft_tag_delimÚright_tag_delimÚleft_tag_delim_lenÚright_tag_delim_lenÚindicator_startÚindicator_endÚ	indicatorÚindexs
             rI  Úget_dialect_from_dialect_tagz)Modula2Lexer.get_dialect_from_dialect_tag|  sì   € ð ˆØˆÝ  Ñ0Ô0ÐÝ! /Ñ2Ô2ÐØ,ˆØ-Ð.ˆõ ˆ{ÑÔÐ1Ð4GÑGÒHÐHØ×%Ò% nÑ5Ô5ð Ià×#Ò# OÑ4Ô4ð Ið $ O°MÐ$AÔBˆIõ ˜q¥# d¤mÑ"4Ô"4Ñ5Ô5ð !ð !�ð
  ¤¨eÔ 4Ò4Ð4ð %Ð$Ð$Ð$ð 5ð !�yð �9rJ  c              #   ó¤  K  — t          j        | |¦  «        D �]6\  }}}| j        sG|t          j        k    r7|                      |¦  «        }|dk    r|                      |¦  «         d| _        |t          u �rZ|| j        v r)t          j
        }| j        r|                     ¦   «         }�nž|| j        v r)t          j        }| j        r|                     ¦   «         }�nl|| j        v r.t          j        j        }| j        r|                     ¦   «         }�n5|| j        v rC| j        st          j        }�nt          j        j        }| j        r|                     ¦   «         }�né|| j        v rt          j        }�nÒ|| j        v rt          j        }�n»|| j        v rt          j        }�n¤|| j        v rt          j        }�n�|| j        v rt          j        }�nv|t:          v rw| j        dvrd|v s|dd…         dv rt>          }�nK| j        dv rK|t:          j         u r	t>          }�n+|t:          j!        u rd	|v r	t>          }�n|t:          j"        u rd
|v rt>          }nö|t          v rª|t          j#        u r| j        dvrt>          }|t          j$        u r}| %                    d¦  «        r"| j         %                    d¦  «        rt>          }nŠ| %                    d¦  «        r1| j        dk    r&| j         %                    d¦  «        st          j&        }nC|| j'        v rt>          }| j        r,|dk    rd}n#|dk    rd}n|dk    rd}n|dk    rd}n|dk    rd}|||fV — �Œ8d S )Nr3  T)r3  r6  r7  ú'r   é   )Ú0bÚ0xÚ0u)r6  r7  ÚHÚEz<*r4  z(*$ú#u   â‰ r   u   â‰¤r   u   â‰¥r   u   â‰¡rp   u   â€¢)(r   Úget_tokens_unprocessedrB  r   ÚSpecialr~  rA  r   rZ  r
   ÚReservedrC  Úlowerr[  ÚBuiltinr\  ÚPseudor]  r?  Ú	Namespacer^  r_  ÚClassr`  ÚFunctionra  ÚVariablerb  ÚConstantr   r9  r   ÚOctÚHexÚFloatÚSingleÚPreprocrr  Ú	MultilinerY  )rE  Útextr}  ÚtokenÚvalueÚindicated_dialects         rI  rˆ  z#Modula2Lexer.get_tokens_unprocessed¬  s§  è è € Ý#-Ô#DÀTÈ4Ñ#PÔ#Pð k	&ñ k	&ÑˆE�5˜%ð Ô*ð 3¨u½¼Ò/GÐ/GØ$(×$EÒ$EÀeÑ$LÔ$LÐ!Ø$¨	Ò1Ð1ð ×$Ò$Ð%6Ñ7Ô7Ð7Ø.2�DÔ+ð �ˆ}‰}Ø˜DÔ/Ð/Ð/Ý#Ô,�EØÔ2ð .Ø %§¢¡¤˜ùà˜dœmÐ+Ð+Ý œL�EØÔ2ð .Ø %§¢¡¤˜ùà˜dÔ2Ð2Ð2Ý œLÔ/�EØÔ2ð .Ø %§¢¡¤˜ùà˜dœiÐ'Ð'ØÔ=ð 2Ý $¤˜™å $¤Ô 3˜ØÔ6ð 2Ø$)§K¢K¡M¤M˜Eùà˜dœlÐ*Ð*Ý œN�E‘Eà˜dœjÐ(Ð(Ý œJ�E‘Eà˜dœoÐ-Ð-Ý œM�E‘Eà˜dœnÐ,Ð,Ý œM�E‘Eà˜dœnÐ,Ð,Ý œM�Eùà�&��ð ”<Ð'DÐDÐDØ˜e�|�| u¨Q¨q¨S¤zÐ5GÐ'GÐ'GÝ %˜ùà”\Ð%7Ð7Ð7à¥¤
Ð*Ð*Ý %˜™à¥&¤*Ð,Ð,°¸°°Ý %˜™à¥&¤,Ð.Ð.°3¸%°<°<Ý %˜øà�'Ð!Ð!ð �GœNÐ*Ð*Ø”|Ð+HÐHÐHÝ %˜à�GœOÐ+Ð+à×'Ò'¨Ñ-Ô-ð 2Ø”|×.Ò.¨wÑ7Ô7ð2å %˜˜à×)Ò)¨%Ñ0Ô0ð 2Ø œL¨IÒ5Ð5Ø $¤× 7Ò 7¸Ñ @Ô @ð 6å 'Ô 1˜øð
 ˜DÔ2Ð2Ð2Ý!�Eð Ô.ð 
&Ø ’|�|Ø %˜˜Ø $š˜Ø %˜˜Ø $š˜Ø %˜˜Ø $š˜Ø %˜˜Ø $š˜Ø %˜ð ˜ Ð%Ð%Ð%Ð%Ñ%ðWk	&ð k	&rJ  c                 óˆ   — d| v rd| v rd| v sdS d}t          j        d| ¦  «        r|dz  }t          j        d| ¦  «        rd	}|S )
zNIt's Pascal-like, but does not use FUNCTION -- uses PROCEDURE
        instead.z(*rp  r   Nr   z\bPROCEDURE\bg333333ã?z\bFUNCTION\bg        )ÚreÚsearch)r™  Úresults     rI  Úanalyse_textzModula2Lexer.analyse_text  se   € ð
 ˜�� ¨  °$¸$°,°,ØˆFàˆåŒ9Ð% tÑ,Ô,ð 	Ø�c‰MˆFõ Œ9�_ dÑ+Ô+ð 	ØˆFàˆrJ  N)aÚ__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚurlÚaliasesÚ	filenamesÚ	mimetypesÚversion_addedrž  Ú	MULTILINEÚDOTALLÚflagsr   r   r‰  r   r   ÚBinr”  r•  ÚIntegerr“  r   ÚDoubler–  r	   r   r˜  r—  r   ÚtokensÚcommon_reserved_wordsÚcommon_builtinsÚcommon_pseudo_builtinsÚpim_lexemes_to_rejectÚpim_additional_reserved_wordsÚpim_additional_builtinsÚpim_additional_pseudo_builtinsÚiso_lexemes_to_rejectÚiso_additional_reserved_wordsÚiso_additional_builtinsÚiso_additional_pseudo_builtinsÚm2r10_lexemes_to_rejectÚm2r10_additional_reserved_wordsÚm2r10_additional_builtinsÚ m2r10_additional_pseudo_builtinsÚobjm2_lexemes_to_rejectÚobjm2_additional_reserved_wordsÚobjm2_additional_builtinsÚ objm2_additional_pseudo_builtinsÚaglet_additional_reserved_wordsÚaglet_additional_builtinsÚ aglet_additional_pseudo_builtinsÚgm2_additional_reserved_wordsÚgm2_additional_builtinsÚgm2_additional_pseudo_builtinsÚp1_additional_reserved_wordsÚp1_additional_builtinsÚp1_additional_pseudo_builtinsÚxds_additional_reserved_wordsÚxds_additional_builtinsÚxds_additional_pseudo_builtinsÚpim_stdlib_module_identifiersÚpim_stdlib_type_identifiersÚpim_stdlib_proc_identifiersÚpim_stdlib_var_identifiersÚpim_stdlib_const_identifiersÚiso_stdlib_module_identifiersÚiso_stdlib_type_identifiersÚiso_stdlib_proc_identifiersÚiso_stdlib_var_identifiersÚiso_stdlib_const_identifiersÚm2r10_stdlib_adt_identifiersÚ"m2r10_stdlib_blueprint_identifiersÚm2r10_stdlib_module_identifiersÚm2r10_stdlib_type_identifiersÚm2r10_stdlib_proc_identifiersÚm2r10_stdlib_var_identifiersÚm2r10_stdlib_const_identifiersr@  rM  rO  rP  rR  rS  rT  rU  rV  rW  rX  rD  rA  r~  rˆ  r¡  rT  rJ  rI  r   r      sÁ	  € € € € € ðGð GðP €DØ
#€CØ˜$Ð€GØ˜'Ð"€IØ!Ð"€IØ€MàŒL˜2œ9Ñ$€Eð �TˆNØ�TˆNð
ð  ¤Ð0à ¤Ð0à ¤Ð0à ¤Ð0à% w¤Ð7à# W¤_Ð5à" G¤OÐ4à# W¤_Ð5ð!
ð& # DÐ)ð
ð " 6¤:Ð.ð -¨f¬jÐ9ð%
ð+ð Œ\ðð$àŒ\ðð
 " 6¤>Ð2ð"
ð& ˜œÐ$ð ˜œÐ$ð ˜FœJÐ'ð
%
ð )¨&¬-Ð8Ø(¨&¬-Ð8ð
ð �hÐà�XÐà�HÐà�HÐà�HÐà�HÐà�HÐà�HÐà�hÐà�HÐð)
ð0 �hÐØ�hÐà�HÐà˜Ð!à�HÐà�8Ðà�8Ðà�8Ðà�8Ðð#
ð* �kÐ"à�KÐ à�KÐ à�KÐ à�[Ð!à�KÐ à�kÐ"ð 
ð$   Ð-à�;Ðà�KÐ ð!
ð ˜'œ.Ð)à! 7Ô#4Ð5à˜WÔ.Ð/ð
ð ˜7œ?Ð+à˜wœÐ/ð	
ð ˆG�LÑ!Ô!ØˆG�MÑ"Ô"ØˆG�IÑÔØˆG�JÑÔØˆG�MÑ"Ô"ØˆGÐ.Ñ/Ô/ØˆGÐ.Ñ/Ô/ØˆGÐ+Ñ,Ô,ØˆGÐ%Ñ&Ô&ØˆGÐ)Ñ*Ô*ØˆGÐ'Ñ(Ô(ØˆGÐ*Ñ+Ô+ØˆGÐ(Ñ)Ô)ð
ða_ð _€FðHÐð€OðÐðÐð%Ð!ðÐð&Ð"ðÐð%Ð!ðÐð&Ð"ð6Ðð
'Ð#ð!Ðð(Ð$ð4Ðð'Ð#ð!Ðð(Ð$ð'Ð#ð!Ðð(Ð$ð%Ð!ðÐð&Ð"ð$Ð ðÐð%Ð!ð%Ð!ðÐð&Ð"ð%Ð!ð
#Ðð#Ðð"Ðð
$Ð ð%Ð!ð
#Ðð
#Ðð
"Ðð
$Ð ð
$Ð ð*Ð&ð'Ð#ð%Ð!ð%Ð!ð$Ð ð
&Ð"ð€Hð
ð
 "ð
ð
 "ð
ð
 $ð
ð
 $ð
ð
 "ð
ð
 "ð
ð
 "ð
ð
 "ð
ðE%ð %ÐðV "Ø)Ø)Ø+ð	
ð "Ø)ð
ð "Ø)ð
ð "Ø+ð
ð "Ø+Ø+ð
ð "Ø)Ø+ð
ð "Ø)Ø)ð
ð "Ø)Ø(ð
ð "Ø)Ø)ð
ðq=ð =ÐðF Ø#Ø#Ø%ð	
ð Ø#ð
ð Ø#ð
ð Ø%ð
ð Ø%Ø%ð
ð Ø#Ø%ð
ð Ø#Ø#ð
ð Ø#Ø"ð
ð Ø#Ø#ð
ðq=ð =€KðF #Ø*Ø*Ø,ð	
ð #Ø*ð
ð #Ø*ð
ð #Ø,ð
ð #Ø,Ø,ð
ð #Ø*Ø,ð
ð #Ø*Ø*ð
ð #Ø*Ø)ð
ð #Ø*Ø*ð
ðq=ð =ÐðD
ð
ð

ð )ð
ð )ð
ð

ð

ð

ð

ðS,ð ,€Nðb
ð
 *ð
ð *ð
ð /Ø+Ø(ð
ð /Ø+ð
ð *ð
ð *ð
ð *ð
ð *ð
ðY/ð /Ððh
ð
 (ð
ð (ð
ð *ð
ð *ð
ð (ð
ð (ð
ð (ð
ð (ð
ðS,ð ,€Oðb
ð
 (ð
ð (ð
ð *ð
ð *ð
ð (ð
ð (ð
ð (ð
ð (ð
ðS,ð ,Ððb
ð
 'ð
ð 'ð
ð )ð
ð )ð
ð 'ð
ð 'ð
ð 'ð
ð 'ð
ðS,ð ,Ððb
ð
 )ð
ð )ð
ð +ð
ð +ð
ð )ð
ð )ð
ð )ð
ð )ð
ðS,ð ,Ððb#-ð #-ð #-ðLR'ð R'ð R'ðL-ð -ð -ð`l&ð l&ð l&ð\ð ð ð ð rJ  )r¥  rž  Úpygments.lexerr   r   Úpygments.utilr   r   Úpygments.tokenr   r   r	   r
   r   r   r   r   r   Ú__all__r   rT  rJ  rI  ú<module>rç     s   ððð ð 
€	€	€	à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð Ð
€ðUð Uð Uð Uð U�:ñ Uô Uð Uð Uð UrJ  