o
    Ñ­jiB  ã                   @   sð   d Z ddlZddlmZmZ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mZ ddlmZmZmZ ddlmZ ddlmZ ddlmZ g d	¢Zd
ee
jeƒfZ G dd„ deƒZ!G dd„ de!ƒZ"G dd„ de!ƒZ#G dd„ deƒZ$dS )zÐ
    pygments.lexers.csound
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Csound languages.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚbygroupsÚdefaultÚincludeÚusingÚwords)
ÚCommentÚErrorÚKeywordÚNameÚNumberÚOperatorÚPunctuationÚStringÚTextÚ
Whitespace)ÚOPCODESÚDEPRECATED_OPCODESÚREMOVED_OPCODES)Ú	HtmlLexer)ÚPythonLexer)ÚLuaLexer)ÚCsoundScoreLexerÚCsoundOrchestraLexerÚCsoundDocumentLexerz((?:(?:;|//).*)*)(\n)c                
   @   s@  e Zd ZdZi ddefdejfdejfdee	eƒfg“ddej
fd	ej
d
fdej
dfdej
dfdej
dfg“dedƒdedfg“d
edƒdedfg“ddefedƒdeej
eƒdfdej
dfg“dedƒdej
fdefdedfg“ddefedƒdedfg“d d!ej
fd"ej
fd#edfg“dedƒdej
dfg“d$d%eej
eƒd&fd'ej
fg“d&d(ej
fdefded)fd*ed+fd,ej
d-fdedfg“d)d.ej
fd/efed0ƒg“d+d.ej
fd/efed1ƒg“d-d2ej
fd,ej
d3fdej
dfg“d4edƒed$ƒg“d5d6ejfd7eejejƒfd8ejfg“d0dedfd9efed$ƒd:efg“d1g i¥Zd;S )<ÚCsoundLexerzhttps://csound.com/Ú
whitespacez[ \t]+z/[*](?:.|\n)*?[*]/ú(?:;|//).*$z(\\)(\n)úpreprocessor directivesz)#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+z#includestrzincludestr directivez#includezinclude directivez#[ \t]*definezdefine directivez#(?:ifn?def|undef)\bzmacro directivez([^ \t]).*?\1ú#popú")r   úquoted stringú\nz([A-Z_a-z]\w*)(\())r   úmacro parameter name listú[A-Z_a-z]\w*)r   úbefore macro bodyr#   z['#]z\)r%   ú#)r   ú
macro bodyr'   z(?:\\(?!#)|[^#\\]|\n)+z\\#z(?<!\\)#ú
macro usesz(\$[A-Z_a-z]\w*\.?)(\()zmacro parameter value listz\$[A-Z_a-z]\w*(?:\.|\b)z(?:[^\'#"{()]|\{(?!\{))+z#macro parameter value quoted stringú\{\{z#macro parameter value braced stringz\(z#macro parameter value parentheticalz\\[#'()]z[#'()]r!   úbraced stringz(?:[^\\()]|\\\))+z#pushúwhitespace and macro usesÚnumbersz2\d+[Ee][+-]?\d+|(\d+\.\d*|\d*\.\d+)([Ee][+-]?\d+)?z(0[Xx])([0-9A-Fa-f]+)ú\d+z[^"$]+z[$]N)Ú__name__Ú
__module__Ú__qualname__Úurlr   r   Ú	MultilineÚSingler   r   ÚPreprocr   r   r   r	   r   ÚFloatr
   ÚTypeÚHexÚIntegerÚtokens© r:   r:   úS/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pygments/lexers/csound.pyr      sæ    üÿ



ûøþðþìÿ
ûç üà&ýÚ+ýÕ1
þÏ6ÿýÊ;
úÅCý½Hý¸M

ý³Sþ­Xý¨^ü¢e
›r   c                   @   sæ   e Zd ZdZdZddgZdgZdZdefe	dƒe	d	ƒd
e
fde
jfdee
ejƒfde
dfe	dƒdefdefdedfdejdfge	dƒdejfdedfge	dƒdejdfge	dƒdejdfgdejdfe	dƒgdedfdefgdœZd S )!r   z4
    For `Csound <https://csound.com>`_ scores.
    zCsound Scorezcsound-scorez
csound-scoz*.scoú2.1r"   r+   r   z[aBbCdefiqstvxy]Úzz([nNpP][pP])(\d+)z[mn]úmark statementr,   z[!+\-*/^%&|<>#~.]z[()\[\]]r    r!   z\{úloop after left bracer$   r   r-   )r   úloop after repeat count)r   Úloopz\}Úrootú\}\}z[^}]|\}(?!\}))rB   r>   r?   r@   rA   r*   N)r.   r/   r0   Ú__doc__ÚnameÚaliasesÚ	filenamesÚversion_addedr   r   r
   ÚConstantr   r   r8   r   r   r   r   r4   r   ÚLabelr9   r:   r:   r:   r;   r   ˆ   sH    
éý
þ
þ
þþ
Ðr   c                   @   sV  e Zd ZdZdZddgZddgZdZeƒ Z	dd	„ Z
d
d„ Zi ddefdeeejeeƒfedƒedƒdejdfdejdfdejfedƒg“ddejjfedƒdefdefdedfdedfedd d d!�efed"d d d!�ejfd#ed$fd%eejeƒd$fd&eejeƒd'fd(eejeƒd)fd*eejeƒd+fd,ejd-fd.ejd/fd0ejd1fd2ejd3fd4ejjfd5efg“dedƒd6ejfd7efded8fg“dedƒd9e
d:fded8fg“d;edƒd<ejfd=efded8fg“dded8fd>efed?ƒed@ƒedAƒdBefg“ddCed8fdDefed@ƒedAƒdEefg“d@dFejfg“dAdGejfdHejfg“dIedƒd=ed8fedƒg“d$edƒdJejd8fe d8ƒg“d-edƒdedKfe d8ƒg“dKdLejfdMejfedƒg“d/edƒdedfdedNfded8fg“dNdCed8fdOe!e"ƒfg“d1edƒdedfdedPfded8fg“dPdCed8fdOe!e#ƒfg“edƒdedfdedQfded8fgdCed8fdOe!e$ƒfgdRœ¥Z%dSS )Tr   z8
    For `Csound <https://csound.com>`_ orchestras.
    zCsound OrchestraÚcsoundz
csound-orcz*.orcz*.udor<   c                 c   s.   � |  d¡}| j |¡ | ¡ tj|fV  d S )Nr   )ÚgroupÚuser_defined_opcodesÚaddÚstartr   ÚFunction)ÚlexerÚmatchÚopcoder:   r:   r;   Úopcode_name_callbackÕ   s   €
z)CsoundOrchestraLexer.opcode_name_callbackc                 c   sö   � t j}| d¡}|tv s|tv s|tv r| ¡ tj|fV  n;|| j	v r.| ¡ tj
|fV  n,t}t d|¡}|rR| d¡t j| d¡fV  | d¡t| d¡fV  n| ¡ t|fV  | d¡ry| d¡t| d¡fV  | d¡|| d¡fV  d S d S )Né   z^(g?[afikSw])(\w+)é   é   )r
   r6   rL   r   r   r   rO   r   ÚBuiltinrM   rP   ÚreÚsearchr   )rQ   rR   Útype_annotation_tokenrE   Ú
name_matchr:   r:   r;   Úname_callbackÚ   s"   €


þz"CsoundOrchestraLexer.name_callbackrB   r"   z^([ \t]*)(\w+)(:)([ \t]+|$)r+   r   z	\binstr\bz"instrument numbers and identifiersz
\bopcode\bzafter opcode keywordz\b(?:end(?:in|op))\bzpartial statementsz-\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\br,   u@   \+=|-=|\*=|/=|<<|>>|<=|>=|==|!=|&&|\|\||[~Â¬]|[=!+\-*/^%&|<>#?:]z	[(),\[\]]r    r!   r)   r*   )ÚdoÚelseÚelseifÚendifÚenduntilÚfiÚifÚithenÚkthenÚodÚthenÚuntilÚwhilez\b)ÚprefixÚsuffix)ÚreturnÚrireturnz\b[ik]?goto\bú
goto labelz"\b(r(?:einit|igoto)|tigoto)(\(|\b)z\b(c(?:g|in?|k|nk?)goto)(\(|\b))ro   úgoto argumentz\b(timout)(\(|\b))ro   rp   rp   z\b(loop_[gl][et])(\(|\b))ro   rp   rp   rp   z\bprintk?s\bzprints opcodez"\b(?:readscore|scoreline(?:_i)?)\bzCsound score opcodez\bpyl?run[it]?\bzPython opcodez\blua_(?:exec|opdef)\bú
Lua opcodez\bp\d+\bz$\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\bz\d+|[A-Z_a-z]\w*z[+,]r   r$   )r   úopcode type signaturesrr   z0|[afijkKoOpPStV\[\]]+ú,z
[^\\"$%)]+r(   zescape sequenceszformat specifiersz[\\$%)]rC   z(?:[^\\%)}]|\}(?!\}))+z[\\%)]z\\(?:[\\abnrt"]|[0-7]{1,3})z'%[#0\- +]*\d*(?:\.\d+)?[AE-GXac-giosux]z%%rp   z\w+zprints quoted stringz\\\\[aAbBnNrRtT]z%[!nNrRtT]|[~^]{1,2}zCsound scorez([^}]+)|\}(?!\})ÚPythonÚLua)rq   ru   N)&r.   r/   r0   rD   rE   rF   rG   rH   ÚsetrM   rT   r]   r   r   r   rJ   r   r   r
   ÚDeclarationÚVariableÚGlobalr   r   r   ÚPseudorX   ÚInstancerP   r6   ÚEscapeÚInterpolr   r   r   r   r   r9   r:   r:   r:   r;   r   É   sT   

ôÿ
ýýÿÿÿÿ




àð3üÍ:ýÆ?ùÁIú·Qû¯Xþ¨mþ“rýŽw
ý‰}ýƒ ý �ý 	ü �÷ 
þ �ñ ü �ì 
þ �æ  ü
þ �Ûr   c                   @   sö   e Zd ZdZdZddgZdgZdZdZde	j
fd	e	jfd
efdejdfdejdfdejdfdejdfdejfgdejdfdeeƒfgdejdfdeeƒfgdejdfdeeƒfgdefdejdfdejdfgdefdedfd edfd!edfgd"œZd#S )$r   z
    For Csound documents.
    zCsound Documentzcsound-documentz
csound-csdz*.csdzhttps://csound.comr<   z/[*](.|\n)*?[*]/r   z[^/;<]+|/(?!/)z<\s*CsInstruments)Ú	orchestraÚtagz<\s*CsScore)Úscorer   z<\s*[Hh][Tt][Mm][Ll])ÚHTMLr   z<\s*[\w:.-]+r   z<\s*/\s*[\w:.-]+\s*>z<\s*/\s*CsInstruments\s*>r   z%(.|\n)+?(?=<\s*/\s*CsInstruments\s*>)z<\s*/\s*CsScore\s*>z(.|\n)+?(?=<\s*/\s*CsScore\s*>)z<\s*/\s*[Hh][Tt][Mm][Ll]\s*>z((.|\n)+?(?=<\s*/\s*[Hh][Tt][Mm][Ll]\s*>)z\s+z[\w.:-]+\s*=Úattrz/?\s*>z".*?"z'.*?'z[^\s>]+)rB   r~   r€   r�   r   r‚   N)r.   r/   r0   rD   rE   rF   rG   r1   rH   r   r2   r3   r   r   ÚTagr   r   r   r   r   Ú	Attributer   r9   r:   r:   r:   r;   r   š  sF    



ö

þ

þ

þ

ýü
àr   )%rD   rY   Úpygments.lexerr   r   r   r   r   r   Úpygments.tokenr   r	   r
   r   r   r   r   r   r   r   Ú pygments.lexers._csound_builtinsr   r   r   Úpygments.lexers.htmlr   Úpygments.lexers.pythonr   Úpygments.lexers.scriptingr   Ú__all__r3   Únewliner   r   r   r   r:   r:   r:   r;   Ú<module>   s    
 0nA R