
    |e                     p    d Z ddlZddlmZ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mZ dgZ G d de      Zy)z
    pygments.lexers.nimrod
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexer for the Nim language (formerly known as Nimrod).

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludedefaultbygroups)	TextCommentOperatorKeywordNameStringNumberPunctuationErrorNimrodLexerc                      e Zd ZdZdZdZddgZddgZdgZe	j                  e	j                  z  Zd	 Zg d
Zg dZg dZg dZdej&                  dfdej&                  fdej*                  dfdefdej,                  dfdefdefd eej6                  eej6                        dfdedfdej:                  dfdedfd ej<                  d!fd" ee      z  ej>                  fd# eeej6                        d$fd" ee      z  efd" eg d%      z  ej@                  fd&ejB                  fd" ee      z  e"jF                  fd" ee      z  ejH                  fd'e"fd(e%jL                  d)fd*e%jN                  d+fd,e%jP                  d+fd-e%jR                  d+fd.e%jT                  d+fd/ej6                  fd0e+fgd1ejX                  fd ej<                  d2fd3ej<                  fgd4ejZ                  fd5efd6efd7efgd8ej&                  fdej&                  d9fd:ej&                  d2fd;ej&                  fgd8ej*                  fdej*                  d9fd<ej*                  d2fd;ej*                  fgd=ejX                  fded2f e.d>      gd?ed2fd@ejX                  f e.d>      gdej:                  d2f e.d>      dAej:                  fgdBe"j^                  d2fdCe"j^                  d2fgdAefgdDe%jL                  fdEe%jL                  f e0d2      gdFe%jL                  f e0d2      gdGe%jT                  jb                  fdHe%jT                  f e0d2      gdIefdJej6                  fdKed2fdLe"jd                  fgdMefdJej6                  fdNej,                  d2fdOej,                  fgdPZ3yQ)Rr   z9
    For Nim source code.

    .. versionadded:: 1.5
    Nimrodzhttp://nim-lang.org/nimrodnimz*.nimz*.nimrodz
text/x-nimc                     g }g }| D ]M  }|D ]$  }|j                  |       |j                  d       & |j                  dj                  |             g }O dj                  |      S )Nz_? |)appendjoin)wordsnewWordsnewwordchs        8/usr/lib/python3/dist-packages/pygments/lexers/nimrod.pyunderscorizezNimrodLexer.underscorize#   sm     	D !

2

4 ! OOBGGCL)C	 xx!!    )8addrandasasmbindblockbreakcasecastconceptconstcontinue	converterdeferdiscarddistinctdivdoelifelseendenumexceptexportfinallyforifinyield	interfaceisisnotiteratorletmixinmodnotnotinobjectoforoutptrraiserefreturnshlshrstatictrytupletypeusingwhenwhilexor)niltruefalse)r#   rJ   rF   rY   rP   rQ   r2   rE   r=   rG   r@   rA   )intint8int16int32int64floatfloat32float64boolcharrangearrayseqsetstringz##\[
doccommentz##.*$z#\[commentz#.*$z\{\.pragmaz[*=><+\-/@$~&%!?|\\\[\]]z<\.\.|\.|,|\[\.|\.\]|\{\.|\.\}|\(\.|\.\)|\{|\}|\(|\)|:|\^|`|;z(\n\s*)(of)(\s)
casebranchz
(?:[\w]+)"rdqsz"""tdqs"dqs'charsz(%s)\bz0(proc|func|method|macro|template)(\s)(?![(\[\]])funcname)fromimportr   r9   z(v_?a_?r)\bz&\b((?![_\d])\w)(((?!_)\w)|(_(?!_)\w))*z![0-9][0-9_]*(?=([e.]|\'f(32|64))))float-suffixfloat-numberz0x[a-f0-9][a-f0-9_]*
int-suffixz0b[01][01_]*z0o[0-7][0-7_]*z[0-9][0-9_]*z\s+z.+$z-\\([\\abcefnrtvl"\']|x[a-f0-9]{2}|[0-9]{1,3})z#pop.z(?<!\$)\$(\d+|#|\w+)+z[^\\\'"$\n]+z[\'"\\]z\$z[^\]#]+z#pushz\]##z[\]#]z\]#z0\\([\\abcefnrtvl"\']|\n|x[a-f0-9]{2}|[0-9]{1,3})stringsz"(?!")z""z\nz$((?![\d_])\w)(((?!_)\w)|(_(?!_)\w))*z`.+`z\.(?!\.)[0-9_]*[f]*ze[+-]?[0-9][0-9_]*z
\'f(32|64)z
\'i(32|64)z	\'i(8|16),z[\n ]+:z\w+|[^:]z[:,]z\.\}z\w+|\W+|[^.}])rootru   r}   rl   rm   rs   rp   rq   rv   nlrz   ry   r{   ro   rn   N)4__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesre	MULTILINE
IGNORECASEflagsr    keywordskeywordsPseudoopWordstypesr   Docr   	MultilineOtherr	   r   r   r   
Whitespacer
   DoubleCharWord	NamespaceDeclarationr   BuiltinPseudor   FloatHexBinOctIntegerr   EscapeInterpolr   Functionr   LongLabeltokens r!   r   r   r      ss    D
 CG*%IILL2==(E	"	HNG
E fjj,/vzz"W&&	2g fllH- )(3L  $//7*.//";<HJ FF+V]]F+&%  &++w' g..>@gt/=h//9&MNN W001e,,dll;n55w~~F 7= 2\\;=$fjj,?fjj,7

L9fnnl; T__%UOg4
l >v}}M6;;'6;;
 &v7f% FO
 $fjj'*fjj&)vzz"	
 **+W&&0W&&/w(()	
 A]]66"I	
 'FMM"I
 V]]F+IFMM"
 5dmmVLdmmV,

 FO
 $V\\2"FLL1FO
 FLL)FO

 FNN//06>>*FO
 ;(8V$$**%	
 dO(fllF+v||,	
wAFr!   )r   r   pygments.lexerr   r   r   r   pygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r!   r   <module>r      s;    
 A A   /t* tr!   