o
    Ñ­jSÏ  ã                   @   sr   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„ 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                   @   s  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B 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[dvdw„ Z\dxdy„ Z]dzd{„ Z^d|d}„ Z_d~d„ 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,   r.   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ÚNEWr`   ÚPROCÚSIZEÚTRUNCÚVAL)ÚSYSTEMÚPROCESSÚTSIZEÚ
NEWPROCESSÚTRANSFER)r   ri   rj   rk   rl   r   rm   r   r   rn   ro   r   r   r   rp   r    )ÚEXCEPTrq   ÚFINALLYÚFORWARDÚ	PACKEDSETrr   ÚREMÚRETRYrs   ÚABSTRACTÚASÚCLASSÚGUARDÚINHERITÚOVERRIDEÚREADONLYÚREVEALÚTRACEDÚUNSAFEGUARDED)rt   ru   ÚCMPLXÚCOMPLEXrv   rw   rx   ry   rz   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ÚMAKEADRrh   Ú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   ri   rj   r   r   )ÚALIASÚARGLISTÚ	BLUEPRINTÚCOPYÚGENLIBÚINDETERMINATEr~   ÚNONEÚOPAQUEÚREFERENTIALÚRELEASEÚRETAINÚASMÚREG)rW   ÚCOUNTr¥   ÚEXISTSÚINSERTr�   ÚLONGCARDÚOCTETÚPTRÚPREDÚREADÚREADNEWÚREMOVEÚRETRIEVEÚSORTÚSTOREÚSUBSETÚSUCCÚTLIMITÚTMAXÚTMINrd   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ÚBAILrz   ÚTODOÚFFIÚADDRÚVARGLISTÚVARGCÚATOMICr  r  ÚSWAPÚCASr|   rv   r!  r$  r"  r#  ÚCOMPILERÚDEBUGÚMODNAMEÚPROCNAMEÚLINENUMÚDEFAULTÚHASHÚ	ASSEMBLERÚREGISTERÚSETREGÚGETREGÚCODE)r!   ri   rj   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)rS  rT  rU  rV  rW  rX  Ú
CARDINAL64Ú	COMPLEX32Ú	COMPLEX64Ú	COMPLEX96Ú
COMPLEX128rY  rZ  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)0rq  ÚLONGBCDrt   ÚSHORTBITSETÚ
LONGBITSETÚLONGLONGBITSETr™   rŸ   ry  ÚLONGLONGCARDrz  ÚLONGLONGINTÚPOSINTÚSHORTPOSINTÚ
LONGPOSINTÚLONGLONGPOSINTrS  rT  rU  ÚBITSET64Ú	BITSET128ÚBS8ÚBS16ÚBS32ÚBS64ÚBS128rV  rW  rX  re  ÚCARDINAL128r~  r  r€  ÚCARD64ÚCARD128rY  rZ  r[  rj  Ú
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                 K   s”   t |dg ƒ}|D ]}|| jdd… v r|  |¡  nq|  d¡ d| _t |dg ƒ}d|v s1d|v r5d	| _nd| _t|d
d	ƒ| _tj| fi |¤Ž d S )NÚdialecté   éÿÿÿÿr1  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ÚstylesrR  rR  úT/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pygments/lexers/modula2.pyrA  ð  s    
ý
ÿzModula2Lexer.__init__c                 C   sò  || j vrd}n|}tƒ }| j| D ]	}| t|ƒ¡ qtƒ }| j| D ]	}| t|ƒ¡ q$tƒ }| j| D ]}| t|ƒ |¡¡ q6tƒ }| j| D ]}| t|ƒ |¡¡ qKtƒ }| j| D ]}| t|ƒ |¡¡ q`tƒ }	| j	| D ]}|	 t|ƒ |¡¡ qutƒ }
| j
| D ]}|
 t|ƒ |¡¡ qŠtƒ }| j| D ]}| t|ƒ |¡¡ qŸtƒ }| j| D ]}| t|ƒ |¡¡ q´tƒ }| j| D ]}| t|ƒ |¡¡ qÉ|| _|| _|| _|| _|| _|| _|	| _|
| _|| _|| _|| _d S )Nr1  )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_dbr6  Úlexemes_to_rejectÚreserved_wordsÚbuiltinsÚpseudo_builtinsÚadtsÚmodulesÚtypesÚ
proceduresÚ	variablesÚ	constants)rB  Ú
dialect_idr6  Úlexemes_to_reject_setÚlistÚreswords_setÚbuiltins_setÚpseudo_builtins_setÚadts_setÚmodules_setÚ	types_setÚprocedures_setÚvariables_setÚconstants_setrR  rR  rF  r>    sX   

zModula2Lexer.set_dialectc           
      C   s†   d}d}t |ƒ}t |ƒ}|}| }t |ƒ|| krA| |¡rA| |¡rA|||… }tdt | jƒƒD ]}	|| j|	 kr>|  S q1dS dS )Nz(*!ú*)r7  r1  )ÚlenÚ
startswithÚendswithÚranger=  )
rB  Údialect_tagÚleft_tag_delimÚright_tag_delimÚleft_tag_delim_lenÚright_tag_delim_lenÚindicator_startÚindicator_endÚ	indicatorÚindexrR  rR  rF  Úget_dialect_from_dialect_tag|  s$   ÿþú	z)Modula2Lexer.get_dialect_from_dialect_tagc                 c   s²  � t  | |¡D �]N\}}}| js&|tjkr&|  |¡}|dkr&|  |¡ d| _|tu r¢|| jv r;t	j
}| jr9| ¡ }�n|| jv rLtj}| jrJ| ¡ }�n|| jv r]tjj}| jr\| ¡ }nó|| jv ru| jsitj}nçtjj}| jrt| ¡ }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}n®|tv rß| jdvrºd|v s·|dd… dv r¹t}n–| jdv rÞ|tj u rÇt}n‰|tj!u rÓd	|v rÓt}n}|tj"u rÞd
|v rÞt}nq|tv �r|tj#u rð| jdvrðt}|tj$u �r| %d¡�r| j %d¡�rt}nJ| %d¡�r| jdk�r| j %d¡�stj&}n3|| j'v �r%t}| j�rP|dk�r1d}n|dk�r9d}n|dk�rAd}n|dk�rId}n|dk�rPd}|||fV  qd S )Nr1  T)r1  r4  r5  ú'r   é   )Ú0bÚ0xÚ0u)r4  r5  ÚHÚEz<*r2  z(*$ú#u   â‰ r   u   â‰¤r   u   â‰¥r   u   â‰¡rn   u   â€¢)(r   Úget_tokens_unprocessedr?  r   ÚSpecialrx  r>  r
   rU  r	   ÚReservedr@  ÚlowerrV  ÚBuiltinrW  ÚPseudorX  r<  Ú	NamespacerY  rZ  ÚClassr[  ÚFunctionr\  ÚVariabler]  ÚConstantr   r6  r   ÚOctÚHexÚFloatÚSingleÚPreprocrl  Ú	MultilinerT  )rB  Útextrw  ÚtokenÚvalueÚindicated_dialectrR  rR  rF  r�  ¬  s¨   €


€
€
€
€




€
€

€



ÿ
ÿ€




•z#Modula2Lexer.get_tokens_unprocessedc                 C   sH   d| v rd| v rd| v sdS d}t  d| ¡r|d7 }t  d| ¡r"d	}|S )
zNIt's Pascal-like, but does not use FUNCTION -- uses PROCEDURE
        instead.z(*rj  r   Nr   z\bPROCEDURE\bg333333ã?z\bFUNCTION\bg        )ÚreÚsearch)r’  ÚresultrR  rR  rF  Úanalyse_text  s   zModula2Lexer.analyse_textN)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=  rH  rJ  rK  rM  rN  rO  rP  rQ  rR  rS  rA  r>  rx  r�  r™  rR  rR  rR  rF  r      sú    	þðÿúýþò÷þìïòú
ú
üó �ï %

			
		ÿÿÿÿÿÿÿÿÞ+ü	þþþýýýýýÈCü	þþþýýýýýÈCü	þþþýýýýýÈBÿÿ×1ÿÿýþÿÿÿÿÔ4ÿÿÿÿÿÿÿÿ×1ÿÿÿÿÿÿÿÿ×1ÿÿÿÿÿÿÿÿ×1ÿÿÿÿÿÿÿÿ×1&f0n)r�  r–  Úpygments.lexerr   r   Úpygments.utilr   r   Úpygments.tokenr   r   r   r	   r
   r   r   r   r   Ú__all__r   rR  rR  rR  rF  Ú<module>   s    
,