
                         h    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mZ dgZ G d de      Zy)z
    pygments.lexers.nix
    ~~~~~~~~~~~~~~~~~~~

    Lexers for the NixOS Nix language.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerinclude)	TextCommentOperatorKeywordNameStringNumberPunctuationLiteralNixLexerc                      e Zd ZdZdZdZddgZdgZdgZg dZ	g d	Z
g d
Zg dZdej                  fdej                  dfdefddj#                  d e	D              z  efddj#                  d e
D              z  ej(                  fdej*                  fddj#                  d eD              z  efdej.                  fddj#                  d eD              z  efdej4                  fdej8                  dfdej                  dfdefdefdefd ej<                  fd!efgd"ej                  fdej                  d#fd$ej                  d%fd&ej                  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                  d%fd,ej@                  d-fd.ej                  fd/ej                  fg	d0ej>                  fd1ej>                  fd2ej>                  fdej8                  d%fd,ej@                  d-fd3ej8                  fgd4ej@                  d%fd,ej@                  d#f e!d5      gd6Z"d7 Z#y8)9r   z:
    For the Nix language.

    .. versionadded:: 2.0
    Nixzhttp://nixos.org/nix/nixosnixz*.nixz
text/x-nix)
recwithletininheritassertifelsethenz...)importabort
baseNameOfdirOfisNullbuiltinsmapremoveAttrsthrowtoString
derivation)z+++?.!z//z==z!=z&&z||z->=)
()[];{}:,@z#.*$z/\*commentz\s+z(%s)|c              #   L   K   | ]  }t        j                  |      d z     ywz\bNreescape.0entrys     &lib/third_party/pygments/lexers/nix.py	<genexpr>zNixLexer.<genexpr>6        NXEryy/%7X   "$c              #   L   K   | ]  }t        j                  |      d z     ywr9   r:   r=   s     r@   rA   zNixLexer.<genexpr>9   rB   rC   z\b(true|false|null)\bc              #   F   K   | ]  }t        j                  |        y wNr:   r=   s     r@   rA   zNixLexer.<genexpr>?   s     GYEryy/Y   !z\b(or|and)\bc              #   F   K   | ]  }t        j                  |        y wrF   r:   r=   s     r@   rA   zNixLexer.<genexpr>F   s     J\Eryy/\rG   z[0-9]+"doublequotez''singlequotez[\w.+-]*(\/[\w.+-]+)+z\<[\w.+-]+(\/[\w.+-]+)*\>z4[a-zA-Z][a-zA-Z0-9\+\-\.]*\:[\w%/?:@&=+$,\\.!~*\'-]+z
[\w-]+\s*=z[a-zA-Z_][\w\'-]*z[^/*]+z#pushz\*/z#popz[*/]z'''z''\$\{z''\nz''\rz''\tz\$\{	antiquotez['$]z[^'$]+z\\z\\"z\\$\{z[^"]z\}root)rM   r6   rK   rJ   rL   c                     d}t        j                  d|       r|dz  }t        j                  d|       r|dz  }t        j                  d|       r|dz  }t        j                  d|       r|dz  }|S )Ng        zimport.+?<[^>]+>g?zmkDerivation\s+(\(|\{|rec)z=\s+mkIf\s+z\{[a-zA-Z,\s]+\}:g?)r;   search)textrvs     r@   analyse_textzNixLexer.analyse_text|   sk    99($/#IB992D9#IB99^T*#IB99)40#IB	    N)$__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypeskeywordsr!   	operatorspunctuationsr   Single	Multiliner   joinr   r	   BuiltinConstantr   Wordr   r   Integerr
   Doubler   SymbolEscapeInterpolr   tokensrR    rS   r@   r   r      s    D
!CG	II'HIH.I FL
 gnn% W&&	2 TN chhNXNNNPWX chhNXNNN\\ &t}}5 chhGYGGG hmm, chhJ\JJJKX ' 6==-0FMM=1 &w/)73 EgN FMM*!4([/
b ))*W&&0W&&/g''(	
 V]]#&fmm$fmm$fmm$FMM6*foo{3fmm$&

 FMM"V]]#v}}%6==&)foo{3fmm$
 FOOV,foow/FO	
UPFdrS   )rW   r;   pygments.lexerr   r   pygments.tokenr   r   r   r   r	   r
   r   r   r   __all__r   rl   rS   r@   <module>rp      s8    
 .! ! ! ,sz srS   