U
    YShfB                     @   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 d	d
dg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defdejfdejfdee	efg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eddedfgeddedfgdefeddeej
edfdej
dfgeddej
fdefdedfgdefeddedfgdej
fdej
fdedfgeddej
dfgd eej
ed!fd"ej
fg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)ej
fd*efed+gd)ej
fd*efed,gd-ej
fd'ej
d.fdej
dfgeded/gd0ejfd1eejejfd2ejfgdedfd3efed/d4efgg d5Zd6S )7CsoundLexerzhttps://csound.com/z[ \t]+z/[*](?:.|\n)*?[*]/(?:;|//).*$z(\\)(\n)z)#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+z#includestrincludestr directivez#includeinclude directivez#[ \t]*definedefine directivez#(?:ifn?def|undef)\bmacro directive
whitespacez([^ \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 bodyz['#]z\)#)r"   
macro bodyz(?:\\(?!#)|[^#\\]|\n)+z\\#z(?<!\\)#z(\$[A-Z_a-z]\w*\.?)(\()macro parameter value listz\$[A-Z_a-z]\w*(?:\.|\b)z(?:[^\'#"{()]|\{(?!\{))+#macro parameter value quoted string\{\{#macro parameter value braced stringz\(#macro parameter value parentheticalz\\[#'()]z[#'()]r$   braced stringz(?:[^\\()]|\\\))+z#push
macro usesz2\d+[Ee][+-]?\d+|(\d+\.\d*|\d*\.\d+)([Ee][+-]?\d+)?z(0[Xx])([0-9A-Fa-f]+)\d+z[^"$]+z[$])r!   preprocessor directivesr   r   r   r&   r(   r*   r    r1   r+   r,   r.   r/   whitespace and macro usesnumbersr$   r0   N)__name__
__module____qualname__urlr   r   	MultilineSingler   r   Preprocr   r   r   r	   r   Floatr
   TypeHexIntegertokens rB   rB   I/root/rtd-docs/venv/lib/python3.8/site-packages/pygments/lexers/csound.pyr      s   



	


	

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%   r4   r3   z[aBbCdefiqstvxy]zz([nNpP][pP])(\d+)z[mn]mark statementr5   z[!+\-*/^%&|<>#~.]z[()\[\]]r#   r$   z\{loop after left bracer'   r"   r2   )r"   loop after repeat count)r"   loopz\}root\}\}z[^}]|\}(?!\}))rJ   rF   rG   rH   rI   r0   N)r6   r7   r8   __doc__namealiases	filenamesversion_addedr   r   r
   Constantr   r   r@   r   r   r   r   r<   r   LabelrA   rB   rB   rB   rC   r      sF   



c                   @   s  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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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d/ejd0fd1ejd2fd3ejjfd4efgedd5ejfd6efded7fgedd8e
d9fded7fgedd:ejfd;efded7fgded7fd<efed=ed>ed?d@efgdAed7fdBefed>ed?dCefgdDejfgdEejfdFejfgedd;ed7fedgeddGejd7fe d7geddedHfe d7gdIejfdJejfedgeddedfdedKfded7fgdAed7fdLe!e"fgeddedfdedMfded7fgdAed7fdLe!e#fgeddedfdedNfded7fgdAed7fdLe!e$fgdOZ%dPS )Qr   z8
    For `Csound <https://csound.com>`_ orchestras.
    zCsound Orchestracsoundz
csound-orcz*.orcz*.udorD   c                 c   s,   | d}| j| | tj|fV  d S )Nr   )groupuser_defined_opcodesaddstartr   Function)lexermatchopcoderB   rB   rC   opcode_name_callback   s    
z)CsoundOrchestraLexer.opcode_name_callbackc                 c   s   t j}|d}|tks(|tks(|tkr<| tj|fV  nv|| j	krZ| tj
|fV  nXt}td|}|r|dt j|dfV  |dt|dfV  n| t|fV  |dr|dt|dfV  |d||dfV  d S )N   z^(g?[afikSw])(\w+)      )r
   r>   rT   r   r   r   rW   r   BuiltinrU   rX   researchr   )rY   rZ   Ztype_annotation_tokenrM   Z
name_matchrB   rB   rC   name_callback   s    


z"CsoundOrchestraLexer.name_callbackr%   z^([ \t]*)(\w+)(:)([ \t]+|$)r4   r3   z	\binstr\b"instrument numbers and identifiersz
\bopcode\bafter opcode keywordz\b(?:end(?:in|op))\bpartial statementsz-\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\br5   u@   \+=|-=|\*=|/=|<<|>>|<=|>=|==|!=|&&|\|\||[~¬]|[=!+\-*/^%&|<>#?:]z	[(),\[\]]r#   r$   r-   r0   )doelseZelseifendifZenduntilfiifZithenZkthenZodZthenZuntilwhilez\b)prefixsuffix)returnZrireturnz\b[ik]?goto\b
goto labelz"\b(r(?:einit|igoto)|tigoto)(\(|\b)z\b(c(?:g|in?|k|nk?)goto)(\(|\b))rp   goto argumentz\b(timout)(\(|\b))rp   rq   rq   z\b(loop_[gl][et])(\(|\b))rp   rq   rq   rq   z\bprintk?s\bprints opcodez"\b(?:readscore|scoreline(?:_i)?)\bCsound score opcodez\bpyl?run[it]?\b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 signaturesz0|[afijkKoOpPStV\[\]]+,z
[^\\"$%)]+r1   escape sequencesformat specifiersz[\\$%)]rK   z(?:[^\\%)}]|\}(?!\}))+z[\\%)]z\\(?:[\\abnrt"]|[0-7]{1,3})z'%[#0\- +]*\d*(?:\.\d+)?[AE-GXac-giosux]z%%z\w+prints quoted stringz\\\\[aAbBnNrRtT]z%[!nNrRtT]|[~^]{1,2}Csound scorez([^}]+)|\}(?!\})PythonLua)rJ   rf   rd   re   rv   r$   r0   rx   ry   rq   rp   rr   rz   rs   r{   rt   r|   ru   r}   N)&r6   r7   r8   rL   rM   rN   rO   rP   setrU   r\   rc   r   r   r   rR   r   r   r
   DeclarationVariableGlobalr   r   r   Pseudor`   InstancerX   r>   EscapeInterpolr   r   r   r   r   rA   rB   rB   rB   rC   r      s   


 




$		



 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.comrD   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>]+)rJ   r   r   r   r   r   N)r6   r7   r8   rL   rM   rN   rO   r9   rP   r   r:   r;   r   r   Tagr   r   r   r   r   	Attributer   rA   rB   rB   rB   rC   r     sD   











)%rL   ra   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   r   r   r   Z pygments.lexers._csound_builtinsr   r   r   Zpygments.lexers.htmlr   Zpygments.lexers.pythonr   Zpygments.lexers.scriptingr   __all__r;   newliner   r   r   r   rB   rB   rB   rC   <module>   s   
 0
nA R