a
    U_A                     @   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 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-2020 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)	HtmlLexer)PythonLexer)LuaLexer)CsoundScoreLexerCsoundOrchestraLexerCsoundDocumentLexerz((?:(?:;|//).*)*)(\n)c                   @   s  e 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d/ejfd0eejejfd1ejfgdedfd2efe
d.d3efgg d4Zd5S )6CsoundLexerz[ \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   r0   r*   r+   r-   r.   whitespace and macro usesnumbersr#   r/   N)__name__
__module____qualname__r   r   	MultilineSingler   r   Preprocr   r   r   r	   r   ZFloatr
   TypeZHexIntegertokens r>   r>   8/usr/lib/python3/dist-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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   zO
    For `Csound <https://csound.com>`_ scores.

    .. versionadded:: 2.1
    zCsound Scorezcsound-scorez
csound-scoz*.scor$   r3   r2   z[aBbCdefiqstvxy]zz([nNpP][pP])(\d+)z[mn]mark statementr4   z[!+\-*/^%&|<>#~.]z[()\[\]]r"   r#   z\{loop after left bracer&   r!   r1   )r!   loop after repeat count)r!   loopz\}root\}\}z[^}]|\}(?!\}))rE   rA   rB   rC   rD   r/   N)r5   r6   r7   __doc__namealiases	filenamesr   r   r
   ZConstantr   r   r<   r   r   r   r   r:   r   Labelr=   r>   r>   r>   r?   r      sD   



r   c                   @   s
  e Zd ZdZdZddgZddg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d/fd0ejd1fd2ejjfd3e
fgedd4ejfd5efded6fgedd7e	d8fded6fgedd9ejfd:efded6fgded6fd;efed<ed=ed>d?efgd@ed6fdAefed=ed>dBefgdCejfgdDejfdEejfgedd:ed6fedgeddFejd6fed6geddedGfed6gdHejfdIejfedgeddedfdedJfded6fgd@ed6fdKe e!fgeddedfdedLfded6fgd@ed6fdKe e"fgeddedfdedMfded6fgd@ed6fdKe e#fgdNZ$dOS )Pr   zS
    For `Csound <https://csound.com>`_ orchestras.

    .. versionadded:: 2.1
    zCsound OrchestraZcsoundz
csound-orcz*.orcz*.udoc                 c   s,   | d}| j| | tj|fV  d S )Nr   )groupuser_defined_opcodesaddstartr   Function)lexermatchZopcoder>   r>   r?   opcode_name_callback   s    
z)CsoundOrchestraLexer.opcode_name_callbackc                 c   s   t j}|d}|tv s |tv r4| tj|fV  nv|| jv rR| 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;   rL   r   r   rO   r   BuiltinrM   rP   researchr   )rQ   rR   Ztype_annotation_tokenrH   Z
name_matchr>   r>   r?   name_callback   s    


z"CsoundOrchestraLexer.name_callbackr$   z^([ \t]*)(\w+)(:)([ \t]+|$)r3   r2   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)\br4   u@   \+=|-=|\*=|/=|<<|>>|<=|>=|==|!=|&&|\|\||[~¬]|[=!+\-*/^%&|<>#?:]z	[(),\[\]]r"   r#   r,   r/   )ZdoelseZelseifZendifZenduntilZ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))rd   goto argumentz\b(timout)(\(|\b))rd   re   re   z\b(loop_[gl][et])(\(|\b))rd   re   re   re   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
[^\\"$%)]+r0   escape sequencesformat specifiersz[\\$%)]rF   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)rE   r]   r[   r\   rj   r#   r/   rl   rm   re   rd   rf   rn   rg   ro   rh   rp   ri   rq   N)%r5   r6   r7   rG   rH   rI   rJ   setrM   rS   rZ   r   r   r   rK   r   r   r
   ZDeclarationZVariableZGlobalr   r   r   ZPseudorW   ZInstancerP   r;   ZEscapeZInterpolr   r   r   r   r   r=   r>   r>   r>   r?   r      s   







$		



 r   c                   @   s   e Zd ZdZdZddgZdg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   zR
    For `Csound <https://csound.com>`_ documents.

    .. versionadded:: 2.1
    zCsound Documentzcsound-documentz
csound-csdz*.csdz/[*](.|\n)*?[*]/r   z[^/;<]+|/(?!/)z<\s*CsInstruments)	orchestratagz<\s*CsScore)scorert   z<\s*[Hh][Tt][Mm][Ll])HTMLrt   z<\s*[\w:.-]+rt   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>]+)rE   rs   ru   rv   rt   rw   N)r5   r6   r7   rG   rH   rI   rJ   r   r8   r9   r   r   ZTagr   r   r   r   Z	Attributer   r=   r>   r>   r>   r?   r     s@   











r   )$rG   rX   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   Zpygments.lexers.htmlr   Zpygments.lexers.pythonr   Zpygments.lexers.scriptingr   __all__r9   newliner   r   r   r   r>   r>   r>   r?   <module>   s   
 0lB S