U
    luf&                     @   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-2023 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s4t t| ||S )Nz[\-_^]?	mandatoryz\\optionalz\\?
disallowed)AssertionErrorr   )names	backslashsuffixprefix r&   </tmp/pip-unpacked-wheel-7eq1ciah/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
    ZLilyPondzhttps://lilypond.orgZlilypondz*.lyc                 #   sj   t  |D ]X\}}}|tjjks.|tjjkrB|tkrXtjjj}n|tjjkrXtjjj	}|||fV  qdS )z@Highlight Scheme variables as LilyPond builtins when applicable.N)
superget_tokens_unprocessedr   NameZFunctionVariabler   BuiltinZSchemeFunctionZSchemeBuiltin)selftextindextokenvalue	__class__r&   r'   r*   L   s    
z$LilyPondLexer.get_tokens_unprocessedz\s+z	%\{.*?%\}z%.*?$z#\}#popz[#$]@?r2   zm(?x)
               \\\\
               | (?<= \s ) (?: -- | __ )
               | [{}<>=.,:|]
              z=?[',]*!?\??)r$   z[\-_^]?"stringz
-?\d+\.\d+z	-?\d+/\d+z(?x)
               (?<= \s ) -\d+
               | (?: (?: \d+ | \\breve | \\longa | \\maxima )
                     \.* )
              z\*z[~()[\]]z[\-_^][>^_!.\-+]z[\-_^]?\\?\d+r   r    r   maybe-subpropertiesz[\-_^]?\\.+?zg(?x)
               (?: [^\W\d] | - )+
               (?= (?: [^\W\d] | [\-.] )* \s* = )
              z([^\W\d]|-)+?."z\\.z[^\\"]+z#\{)r5   rootz(\.)((?:[^\W\d]|-)+?))r:   r6   r2   r7   )M__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesreDOTALL	MULTILINEflagsr*   r   Text
WhitespaceCommentZ	MultilineSingleZPunctuationr   r   NAME_END_REZPitchStringNumberZFloatZFractionr+   r-   ZArticulationr(   r   Keywordr   ZPitchLanguager	   ZClefr
   ZScaler   Z
RepeatTyper   r   ZChordModifierr   ZMusicFunctionr   ZDynamicr   r   ZMusicCommandr   ZMarkupCommandr   ZGrobr   Z
Translatorr   Contextr   ZContextPropertyr   ZGrobPropertyr   ZPaperVariabler   ZHeaderVariableZBackslashReferenceZLvalueZEscaper   r   r   tokens__classcell__r&   r&   r3   r'   r   /   s   	







	w



 )%r>   rD   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__rL   r(   r   r&   r&   r&   r'   <module>   s   
\
