o
    	ȷe!                     @   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sJ t | ||S )Nz[\-_^]?	mandatoryz\\optionalz\\?
disallowed)r   )names	backslashsuffixprefix r%   O/var/www/ideatree/venv/lib/python3.10/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g 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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                 #   sl    t  |D ],\}}}|tjju s|tjju r"|tv r!tjjj}n|tjju r-t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   BuiltinSchemeFunctionSchemeBuiltin)selftextindextokenvalue	__class__r%   r&   r+   C   s   

z$LilyPondLexer.get_tokens_unprocessedz\s+z	%\{.*?%\}z%.*?$z#\}#popz[#$]@?r6   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#\{)r9   rootz(\.)((?:[^\W\d]|-)+?))r>   r:   r6   r;   )M__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesreDOTALL	MULTILINEflagsr+   r   Text
WhitespaceComment	MultilineSinglePunctuationr   r   NAME_END_REPitchStringNumberFloatFractionr,   r/   Articulationr'   r   Keywordr   PitchLanguager	   Clefr
   Scaler   
RepeatTyper   r   ChordModifierr   MusicFunctionr   Dynamicr   r   MusicCommandr   MarkupCommandr   Grobr   
Translatorr   Contextr   ContextPropertyr   GrobPropertyr   PaperVariabler   HeaderVariableBackslashReferenceLvalueEscaper   r   r   tokens__classcell__r%   r%   r7   r&   r   &   s    	




"
%
(
),.158;<=>?@ABCEFGHIKLMSTX
\ab
e


)%rB   rH   pygments.lexerr   r   r   r   pygments.lexers.lispr   "pygments.lexers._lilypond_builtinsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pygments.tokenr   __all__rR   r'   r   r%   r%   r%   r&   <module>   s    
\
