U
    lufQ                     @   s   d Z ddlZddl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 ddgZG dd deZG d	d deZG d
d deZdS )z
    pygments.lexers.vip
    ~~~~~~~~~~~~~~~~~~~

    Lexers for Visual Prolog & Grammar files.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerinheritwordsinclude)	TextCommentOperatorKeywordNameStringNumberPunctuation
WhitespaceVisualPrologLexerVisualPrologGrammarLexerc                   @   s  e Zd ZdZdZdZdefeedddej	fdefeedd	ej	fd
e
fde
fdejjfdejfdejfdefdedfdedfdejdfdejdfdejdfdefdefdefgeedddejfdefgeddefd ed!fgedd"efded#fd$ed!fd%efgd&ejfd'ejfged(dejd!fd)efd*ejjd!fged(dejd!fd+efd*ejjd!fgd,ejfdejd!fd-efgd.Zd/S )0VisualPrologBaseLexer)tryforeachif)andZcatchZdoelseelseif	erroneous
externallyfailurefinallyr   r   ororelse	otherwisethenr   divmodremquot)shortZdetailendZ
withdomainz\s+z\bend\s+\bprefixsuffixr%   r)   z0[xo][\da-fA-F_]+z(((\d[\d_]*)?\.)?\d[\d_]*([eE][\-+]?\d+)?z_\w*z[A-Z]\w*z@\w+z[a-z]\w*z/\*commentz\%commentline"stringz\'stringsinglez@"atstringz[\-+*^/!?<>=~:]+z[$,.[\]|(){}\\]+.@
commentdocz[^@\n]+$z#popz[^@*/]+z#pushz\*/z[*/]z\\u[0-9a-fA-F]{4}z\\[\'"ntr\\]stringescapez
[^\'\\\n]+z\nz	[^"\\\n]+z""z[^"]+)rootr3   r,   r+   r5   r/   r.   r0   N)__name__
__module____qualname__Z
minorendkwZ
minorkwexpZdockwr   r   r	   Minorr   r
   VariableZ	Anonymousr   r   ZSymbolr   r   r   ZPreprocr   ZEscapeErrortokens r>   r>   7/tmp/pip-unpacked-wheel-7eq1ciah/pygments/lexers/vip.pyr      sj   






r   c                   @   sz   e Zd ZdZdZdZdgZddddd	gZd
ZdZ	dZ
dee	ddejfeeddefee
dddejfegiZdd ZdS )r   z7Lexer for VisualProlog

    .. versionadded:: 2.17
    zVisual Prologhttps://www.visual-prolog.com/Zvisualprologz*.proz*.clz*.iz*.packz*.ph)Zgoal	namespaceZ	interfaceclassZ	implementwhereopenZinheritsZsupportsresolveZdelegateZmonitor	constantsdomainsZ
predicatesconstructorsZ
propertiesZclausesZfacts)ZalignZanyflowasZbitsizeZdetermdigitsr   r   r   fromZguardZmultiZ	nondetermr   r   r   Z	procedurerE   ZsingleZ
suspending)
binincluder   r   endiferrorexportr   rK   ZgrammargenerateZgrammarincluder   r   messageoptionsZ
orrequiresrequiresstringincluder   r6   r&   r*   #r'   c                 C   s   t d| rdS dS dS )zMCompetes with IDL and Prolog on *.pro; div. lisps on*.cl and SwigLexer on *.izc^\s*(end\s+(interface|class|implement)|(clauses|predicates|domains|facts|constants|properties)\s*$)\(\?r   Nresearchtextr>   r>   r?   analyse_texto   s    zVisualPrologLexer.analyse_textN)r7   r8   r9   __doc__nameurlaliases	filenamesmajorkwZminorkwdirectivekwr   r	   r:   	Directiver   r=   r[   r>   r>   r>   r?   r   V   s    	c                   @   s^   e Zd ZdZdZdZdgZdgZdZdZ	de
ed	d
efe
e	dd	dejfegiZdd ZdS )r   z?Lexer for VisualProlog grammar

    .. versionadded:: 2.17
    zVisual Prolog Grammarr@   Zvisualprologgrammarz*.vipgrm)rD   rA   ZgrammarZnonterminalsZstartsymbolsZ	terminalsrules
precedence)rL   rS   r6   r&   r*   rT   r'   c                 C   s   t d| rdS dS dS )zNo competditors (currently)zN^\s*(end\s+grammar|(nonterminals|startsymbols|terminals|rules|precedence)\s*$)rU   r   NrV   rY   r>   r>   r?   r[      s    z%VisualPrologGrammarLexer.analyse_textN)r7   r8   r9   r\   r]   r^   r_   r`   ra   rb   r   r	   rc   r   r=   r[   r>   r>   r>   r?   r   z   s   )r\   rW   Zpygments.lexerr   r   r   r   Zpygments.tokenr   r   r   r	   r
   r   r   r   r   __all__r   r   r   r>   r>   r>   r?   <module>   s   
,B$