o
    RhfB                     @   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-2025 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:   X/home/air/sanwanet/backup_V2/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