o
    Th                     @   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-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexerwords)TextCommentOperatorKeywordNameStringNumberPunctuationUrbiscriptLexerc                   @   sL  e Zd ZdZdZdgZdgZdgZdZd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$d0S )1r   z%
    For UrbiScript source code.
    
UrbiScript
urbiscriptz*.uzapplication/x-urbiscriptz!https://github.com/urbiforge/urbiz1.5c           	      c   s    | d}| d}| d}t|}| t|fV  | jt|7  _|j| |  dkrId| 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endEscape)	lexermatchctxtext_before_blob
blob_startblob_size_str	blob_sizeresult	blob_text r$   U/home/air/segue/gemini/back/venv/lib/python3.10/site-packages/pygments/lexers/urbi.pyblob_callback&   s   


"zUrbiscriptLexer.blob_callbackz\s+z//.*?\nz/\*commentz"(every|for|loop|while)(?:;|&|\||,))assertatbreakcasecatchclosurecomplcontinuedefaultelseenumeveryexternalfinallyforfreezeififnewonleavereturnstopifswitchthisthrowtimeouttry	waituntilwheneverwhilez\b)suffix)$asmautoboolchar
const_castdeletedoubledynamic_castexplicitexportexternfloatfriendgotoinliner   longmutable	namespaceregisterreinterpret_castshortsignedsizeofstatic_caststructtemplatetypedeftypeidtypenameunionunsignedusingvirtualvolatile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BooleanCallMessageChannelCode
Comparable	ContainerControlDate
Dictionary	DirectoryDurationEnumerationEvent	Exception
ExecutableFileFinalizableFloat
FormatInfo	FormatterGlobalGroupHashInputStream	IoServiceJobKernelLazyListLoadableLobbyLocationLoggerMathMutexnilObject	OrderableOutputStreamPairPathPatternPosition	PrimitiveProcessProfile
PseudoLazyPubSubRangeIterableRegexp	SemaphoreServer	SingletonSocket
StackFrameStreamr	   SystemTagTimeout	TraceableTrajectoryGeneratorTripletTupleUObjectUValue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[*/])rootr   r   r'   c                 C   s(   d}d| v r
|d7 }d| v r|d7 }|S )z_This is fairly similar to C and others, but freezeif and
        waituntil are unique keywords.r   r7   g?rB   r$   )r   r"   r$   r$   r%   analyse_text   s   zUrbiscriptLexer.analyse_textN)%__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedreDOTALLflagsr&   r   r   	Multiliner   r   ReservedDeclarationConstantr   BuiltinPseudor   Wordr   Otherr
   Hexr|   r	   DoubleSingletokensr   r$   r$   r$   r%   r      sz    
	


:



K)r   r   pygments.lexerr   r   pygments.tokenr   r   r   r   r   r	   r
   r   __all__r   r$   r$   r$   r%   <module>   s    
(