U
    luf                     @   s^   d Z ddl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 dgZG dd deZdS )z
    pygments.lexers.urbi
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for UrbiScript language.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexerwords)TextCommentOperatorKeywordNameStringNumberPunctuationUrbiscriptLexerc                   @   sD  e Zd ZdZdZdgZdgZdgZej	Z
dd Zdefd	efd
ejdfdefedddefedddejfdefdefdejfdejfedddejfdejjfdefdejfdefdefdejfdejfdejfdejdfd ej d!fgd"efd#ejd$fgd%efd&ej d$fgd'ejfd
ejd(fd)ejd$fd*ejfgd+Z!d,d- Z"d.S )/r   z@
    For UrbiScript source code.

    .. versionadded:: 1.5
    Z
UrbiScriptZ
urbiscriptz*.uzapplication/x-urbiscriptc           	      c   s   | d}| d}| d}t|}| t|fV  | jt|7  _|j| |  dkrd| d }| t|fV  | jt|7  _d S ||j| | |   d }| tj|fV  | | d |_d S )N         )z\B(z)()	groupintstartr	   poslentextendZEscape)	lexermatchctxZtext_before_blobZ
blob_startZblob_size_strZ	blob_sizeresultZ	blob_text r   8/tmp/pip-unpacked-wheel-7eq1ciah/pygments/lexers/urbi.pyblob_callback&   s    


"zUrbiscriptLexer.blob_callbackz\s+z//.*?\nz/\*commentz"(every|for|loop|while)(?:;|&|\||,))assertatbreakZcaseZcatchclosureZcomplcontinuedefaultelseenumZeveryZexternalfinallyforfreezeififnewZonleavereturnZstopifswitchthisthrowtimeouttry	waituntilZwheneverwhilez\b)suffix)$ZasmautoboolcharZ
const_castdeletedoubleZdynamic_castexplicitexportexternfloatZfriendgotoinliner   longZmutable	namespaceregisterZreinterpret_castshortsignedsizeofZstatic_caststructtemplateZtypedefZtypeidtypenameunionZunsignedZusingZvirtualZvolatileZwchar_tz&(emit|foreach|internal|loopn|static)\bz(private|protected|public)\bz(var|do|const|function|class)\bz(true|false|nil|void)\b)EBarrierBinaryBooleanZCallMessageZChannelZCodeZ
Comparable	ContainerZControlDateZ
DictionaryZ	DirectoryZDurationZEnumerationEvent	ExceptionZ
ExecutableZFileZFinalizableFloatZ
FormatInfo	FormatterZGlobalGroupZHashZInputStreamZ	IoServiceZJobZKernelZLazyListZLoadableZLobbyZLocationLoggerZMathZMutexnilZObjectZ	OrderableZOutputStreamZPairPathPatternZPositionZ	PrimitiveProcessZProfileZ
PseudoLazyZPubSubZRangeIterableZRegexp	SemaphoreServerZ	SingletonZSocketZ
StackFrameZStreamr	   SystemTagTimeoutZ	TraceableZTrajectoryGeneratorZTripletTupleZUObjectZUValueZUVarz
(?:this)\bz(?:[-=+*%/<>~^:]+|\.&?|\|\||&&)z?(?:and_eq|and|bitand|bitor|in|not|not_eq|or_eq|or|xor_eq|xor)\bz[{}\[\]()]+z(?:;|\||,|&|\?|!)+z[$a-zA-Z_]\w*z0x[0-9a-fA-F]+zV(?:[0-9]+(?:(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?)?((?:rad|deg|grad)|(?:ms|s|min|h|d))?)\b"string.double'string.singlez%((?:\\\\|\\"|[^"])*?)(\\B\((\d+)\)\()z(\\\\|\\[^\\]|[^"\\])*?"z#popz%((?:\\\\|\\'|[^'])*?)(\\B\((\d+)\)\()z(\\\\|\\[^\\]|[^'\\])*?'z[^*/]z#pushz\*/z[*/])rootrb   rd   r   c                 C   s(   d}d| kr|d7 }d| kr$|d7 }|S )z_This is fairly similar to C and others, but freezeif and
        waituntil are unique keywords.r   r*   g?r3   r   )r   r   r   r   r   analyse_text   s    zUrbiscriptLexer.analyse_textN)#__name__
__module____qualname____doc__namealiases	filenames	mimetypesreDOTALLflagsr   r   r   Z	Multiliner   r   ZReservedZDeclarationConstantr   ZBuiltinZPseudor   Wordr   ZOtherr
   ZHexrR   r	   DoubleSingletokensrf   r   r   r   r   r      st   
	


:



K)rj   ro   Zpygments.lexerr   r   Zpygments.tokenr   r   r   r   r   r	   r
   r   __all__r   r   r   r   r   <module>   s
   
(