
    |e                     d    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e      Zy)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                      e Zd ZdZdZdgZdgZdgZej                  Z
d Zdefdefd	ej                  d
fdef edd      ef edd      ej"                  fdefdefdej$                  fdej&                  f edd      ej*                  fdej*                  j,                  fdefdej0                  fdefdefdej4                  fdej8                  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+ Z"y,)-r   z@
    For UrbiScript source code.

    .. versionadded:: 1.5
    
UrbiScript
urbiscriptz*.uzapplication/x-urbiscriptc              #     K   |j                  d      }|j                  d      }|j                  d      }t        |      }|j                         t        |f |xj                  t        |      z  c_        |j                  |j                         |z      dk7  r@d|z   dz   }|j                         t        |f |xj                  t        |      z  c_        y ||j                  |j                         |j                         |z    z   dz   }|j                         t        j                  |f |j                         |z   dz   |_        y w)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_texts	            6/usr/lib/python3/dist-packages/pygments/lexers/urbi.pyblob_callbackzUrbiscriptLexer.blob_callback&   s     ;;q>[[^
A&	kkmV%5553'(( 88EIIK)+,3m+d2F++-//GGs6{"G %))+eiik)6K!LLsR	kkmV]]I55))+	)A-s   EEz\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                 .    d}d| v r|dz  }d| v r|dz  }|S )z_This is fairly similar to C and others, but freezeif and
        waituntil are unique keywords.r   r9   g?rD    )r   r%   s     r'   analyse_textzUrbiscriptLexer.analyse_text   s0     dNF$dNF    N)#__name__
__module____qualname____doc__namealiases	filenames	mimetypesreDOTALLflagsr(   r   r   	Multiliner   r   ReservedDeclarationConstantr	   BuiltinPseudor   Wordr   Otherr   Hexr~   r
   DoubleSingletokensr   r   r   r'   r   r      s    DnGI+,IIIE.. TN!W&&	22G< 2
 ;@A   G PUV  7@,g6/1D1DE')9)9: " +01 \\ DLL//0/:O]][)"K0tzz*

+89?G 6==/26==/2o8
t 6}E(&--@

 6}E(&--@
 w(()W&&0W&&/g''(	
GIFVr   )r   r   pygments.lexerr   r   pygments.tokenr   r   r   r   r	   r
   r   r   __all__r   r   r   r'   <module>r      s:    
 4   
}( }r   