o
    ‡ÎÖas  ã                   @   sb   d Z ddlZddlmZmZmZ ddl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.oberon
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Oberon family languages.

    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚincludeÚwords)ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚComponentPascalLexerc                   @   s8  e Zd ZdZdZddgZddgZdgZej	ej
B Zedƒed	ƒed
ƒedƒedƒedƒedƒedƒgdefdefgdejfgdefgdejfdejfdejfdejfdejfg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d"efd#efg	d$efged%d&d'�ejfed(d&d'�ejfd)ejfgd*œ	Zd+d,„ Zd-S ).r   zp
    For `Component Pascal <http://www.oberon.ch/pdf/CP-Lang.pdf>`_ source code.

    .. versionadded:: 2.1
    zComponent PascalÚcomponentpascalÚcpz*.cpz*.cpsztext/x-component-pascalÚ
whitespaceÚcommentsÚpunctuationÚnumliteralsÚstringsÚ	operatorsÚbuiltinsÚidentifiersz\n+z\s+z\(\*([^$].*?)\*\)z[()\[\]{},.:;|]z[0-9A-F]+X\bz[0-9A-F]+[HL]\bz[0-9]+\.[0-9]+E[+-][0-9]+z[0-9]+\.[0-9]+z[0-9]+z	'[^\n']*'z	"[^\n"]*"z[+-]z[*/]z[=#<>]z\^ú&ú~z:=z\.\.z\$z([a-zA-Z_$][\w$]*))ÚANYPTRÚANYRECÚBOOLEANÚBYTEÚCHARÚINTEGERÚLONGINTÚREALÚSETÚ	SHORTCHARÚSHORTINTÚ	SHORTREALz\b)Úsuffix)>ÚABSÚABSTRACTÚARRAYÚASHÚASSERTÚBEGINÚBITSÚBYÚCAPÚCASEÚCHRÚCLOSEÚCONSTÚDECÚDIVÚDOÚELSEÚELSIFÚEMPTYÚENDÚENTIERÚEXCLÚEXITÚ
EXTENSIBLEÚFORÚHALTÚIFÚIMPORTÚINÚINCÚINCLÚISÚLENÚLIMITEDÚLONGÚLOOPÚMAXÚMINÚMODÚMODULEÚNEWÚODDÚOFÚORÚORDÚOUTÚPOINTERÚ	PROCEDUREÚRECORDÚREPEATÚRETURNÚSHORTr#   r$   ÚSIZEÚTHENÚTYPEÚTOÚUNTILÚVARÚWHILEÚWITHz(TRUE|FALSE|NIL|INF)\b)	Úrootr   r   r   r   r   r   r   r   c                 C   sH   d}d| v r
|d7 }d| v r|d7 }d| v r|d7 }d| v r"|d7 }|S )zÄThe only other lexer using .cp is the C++ one, so we check if for
        a few common Pascal keywords here. Those are unfortunately quite
        common across various business languages as well.r   r,   g{®Gáz„?r:   rV   © )ÚtextÚresultrd   rd   ú8/usr/lib/python3/dist-packages/pygments/lexers/oberon.pyÚanalyse_textj   s   z!ComponentPascalLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚreÚ	MULTILINEÚDOTALLÚflagsr   r   r   Ú	Multiliner   r   ÚHexÚFloatÚIntegerr
   r   r	   r   r   ÚTypeÚReservedÚConstantÚtokensrh   rd   rd   rd   rg   r      st    øþÿÿûþðÿýý	÷	÷
ñÊI)rl   rq   Úpygments.lexerr   r   r   Úpygments.tokenr   r   r   r   r	   r
   r   r   Ú__all__r   rd   rd   rd   rg   Ú<module>   s    
(