a
    lc!                     @   s   d Z ddlZddlmZmZmZmZ ddl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mZ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  dgZ!dZ"e"fd	d
Z#G dd deZ$dS )z
    pygments.lexers.lilypond
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for LilyPond.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)bygroupsdefaultinheritwords)SchemeLexer)keywordspitch_language_namesclefsscalesrepeat_typesunitschord_modifierspitchesmusic_functionsdynamicsarticulationsmusic_commandsmarkup_commandsgrobstranslatorscontextscontext_propertiesgrob_propertiesscheme_functionspaper_variablesheader_variables)TokenLilyPondLexerz(?=\d|[^\w\-]|[\-_][\W\d])c                 C   s@   d}|dkr|d7 }n|dkr(|d7 }n|dks4J t | ||S )Nz[\-_^]?	mandatoryz\\optionalz\\?
disallowed)r   )namesZ	backslashsuffixprefix r$   T/var/www/html/django/DPS/env/lib/python3.9/site-packages/pygments/lexers/lilypond.pybuiltin_words   s    

r&   c                '       s  e Zd ZdZdZdZdgZdgZg Ze	j
e	jB Z fddZdejjfd	ejjfd
ejjfdejdfdejdfdejfeede dejfdejdfdejjfdejjfdejfdejfdejjjfdejjjfdejjjfe e!dej"fe e#dejj$fe e%dejjj&fe e'dejjj(fe e)dejjj*fe e+dejfe e,dej-fe e.dejjj/fe e0dejjj1fe e2dejjjfe e3dejjj4fe e5dejjj6fe e7dejjj8fe e9dejjj:fe e;dejjj<fe e=dejjj>fe e?dejjj@dfe eAdejjjBfe eCdejjjDfde ejjEfd ejjFfd!e ejfd"ejfg&d#ejdfd$ejjGfd%ejfgd&ejd'feHgdejjfd(e eIejejjj@feJdgd)ZK  ZLS )*r   z
    Lexer for input to LilyPond, a text-based music typesetter.

    .. important::

       This lexer is meant to be used in conjunction with the ``lilypond`` style.

    .. versionadded:: 2.11
    LilyPondzhttps://lilypond.orglilypondz*.lyc                 #   sj   t  |D ]X\}}}|tjju s.|tjju rB|tv rXtjjj}n|tjju rXtjjj	}|||fV  qdS )z@Highlight Scheme variables as LilyPond builtins when applicable.N)
superget_tokens_unprocessedr   NameFunctionVariabler   BuiltinZSchemeFunctionZSchemeBuiltin)selftextindextokenvalue	__class__r$   r%   r*   C   s    
z$LilyPondLexer.get_tokens_unprocessedz\s+z	%\{.*?%\}z%.*?$z#\}#popz[#$]@?r3   z\\\\|--|[{}<>=.,:|]z=?[',]*!?\??)r"   z[\-_^]?"stringz
-?\d+\.\d+z	-?\d+/\d+z-?(\d+|\\longa|\\breve)\.*z\*z[~()[\]]z[\-_^][>^_!.\-+]z[\-_^]?\\?\d+r   r    r   maybe-subpropertiesz[\-_^]?\\.+?z$([^\W\d]|-)+(?=([^\W\d]|[\-.])*\s*=)z([^\W\d]|-)+?."z\\.z[^\\"]+z#\{)r6   rootz(\.)((?:[^\W\d]|-)+?))r;   r7   r3   r8   )M__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesreDOTALL	MULTILINEflagsr*   r   Text
WhitespaceComment	MultilineSinglePunctuationr   r   NAME_END_REZPitchStringNumberFloatFractionr+   r.   ZArticulationr&   r   Keywordr   ZPitchLanguager	   ZClefr
   ZScaler   Z
RepeatTyper   r   ZChordModifierr   ZMusicFunctionr   Dynamicr   r   ZMusicCommandr   ZMarkupCommandr   ZGrobr   Z
Translatorr   Contextr   ZContextPropertyr   ZGrobPropertyr   ZPaperVariabler   ZHeaderVariableZBackslashReferenceZLvalueEscaper   r   r   tokens__classcell__r$   r$   r4   r%   r   &   s   	








e



)%r?   rE   Zpygments.lexerr   r   r   r   Zpygments.lexers.lispr   Z"pygments.lexers._lilypond_builtinsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpygments.tokenr   __all__rO   r&   r   r$   r$   r$   r%   <module>   s   
\
