o
    	ȷe                     @   s4  d Z ddlZddl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mZmZmZmZmZmZmZ g dZG dd deZG dd	 d	eZG d
d deZe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G dd de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.dsls
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for various domain-specific languages.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)	ExtendedRegexLexer
RegexLexerbygroupswordsincludedefaultthisusingcombined)	TextCommentOperatorKeywordNameStringNumberPunctuation
Whitespace)ProtoBufLexer	ZeekLexerPuppetLexerRslLexerMscgenLexerVGLLexer
AlloyLexerPanLexer
CrmshLexerThriftLexerFlatlineLexerSnowballLexerc                   @   s.  e Zd ZdZdZdZddgZdgZdefde	fd	e
jfd
e
jfeddddefedddejfdejfdeejedfdeejedfdeejedfdefdefdejfdejfdejfdejfdejfdejfdefd eejeefd!efgd"ejd#fed#gd"ejd#fed#gd"ed#fed#gd$Zd%S )&r   zP
    Lexer for Protocol Buffer definition files.

    .. versionadded:: 1.4
    zProtocol Bufferz/https://developers.google.com/protocol-buffers/protobufprotoz*.protoz[ \t]+z[,;{}\[\]()<>]z/(\\\n)?/(\n|(.|\n)*?[^\\]\n)z/(\\\n)?\*(.|\n)*?\*(\\\n)?/)importoptionoptionalrequiredrepeatedreservedr   packedctype
extensionstomaxrpcreturnsoneofsyntax\bprefixsuffix)int32int64uint32uint64sint32sint64fixed32fixed64sfixed32sfixed64floatdoubleboolstringbytesr4   (true|false)\bz(package)(\s+)packagez(message|extend)(\s+)messagez(enum|group|service)(\s+)typez\".*?\"z\'.*?\'z'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*z(\d+\.\d*|\.\d+|\d+[fF])[fF]?z(\-?(inf|nan))\bz0x[0-9a-fA-F]+[LlUu]*z0[0-7]+[LlUu]*z
\d+[LlUu]*z[+-=]z([a-zA-Z_][\w.]*)([ \t]*)(=)z[a-zA-Z_][\w.]*[a-zA-Z_]\w*#pop)rootrF   rG   rH   N) __name__
__module____qualname____doc__nameurlaliases	filenamesr   r   r   Single	Multiliner   r   TypeConstantr   	NamespaceDeclarationr   r   FloatHexOctIntegerr   r   	Attributer   Classtokens ra   ra   K/var/www/ideatree/venv/lib/python3.10/site-packages/pygments/lexers/dsls.pyr      sh    
#

r   c                   @   s  e Zd ZdZdZdZdgZdgZdgZe	de	dd	e
jed
dfde
jed
dfdeejedfdeejedfdeeeejeefe	de	ddefdefdefgdefdefgdefdefdejfgde
jfgd	e
jdfde
jfgd e
jdfd!e
jfgd"ejdfedgd#ejdfedgd$efd%ejfd&ejfed'd(d)ejfed*d(d)ej fed+d(d(d,ej!fgd-e"j#fd.e"j$fd/e"j%fgd0
Z&d1S )2r   zF
    For Thrift interface definitions.

    .. versionadded:: 2.1
    Thriftzhttps://thrift.apache.org/thriftz*.thriftzapplication/x-thrift
whitespacecomments"stringescapedqsz\'sqsz(namespace)(\s+)	namespacez*(enum|union|struct|service|exception)(\s+)classzE((?:(?:[^\W\d]|\$)[\w.\[\]$<>]*\s+)+?)((?:[^\W\d]|\$)[\w$]*)(\s*)(\()keywordsnumbersz[&=]z[:;,{}()<>\[\]]z[a-zA-Z_](\.\w|\w)*\n\s+#.*$z//.*?\n/\*[\w\W]*?\*/z\\([\\nrt"\'])rJ   z	[^\\"\n]+'z
[^\\\'\n]+z[a-z*](\.\w|\w)*rI   z1(async|oneway|extends|throws|required|optional)\brE   z(const|typedef)\b)cpp_namespacecpp_includecpp_typejava_packagecocoa_prefixcsharp_namespacedelphi_namespacephp_namespace	py_moduleperl_packageruby_namespacesmalltalk_categorysmalltalk_prefixxsd_allxsd_optionalxsd_nillablexsd_namespace	xsd_attrsr   r1   rD   )voidrA   bytei16i32i64r@   rB   binarymaplistsetslistsenum)eBEGINEND	__CLASS____DIR____FILE____FUNCTION____LINE__
__METHOD____NAMESPACE__abstractaliasandargsasassertbeginbreakcasecatchrl   clonecontinuedeclaredefr   deldeletedodynamicelifelseelseifelsifend
enddeclareendfor
endforeachendif	endswitchendwhileensureexceptexecfinallyr?   forforeachfunctionglobalgotoif
implementsr"   ininline
instanceof	interfaceislambdamodulenativenewnextnilnotorpasspublicprintprivate	protectedraiseredorescueretryregisterreturnselfsizeofstaticsuperswitchsynchronizedthenr   throw	transienttryundefunlessunsigneduntilusevarvirtualvolatilewhenwhilewithxoryieldr2   z1[+-]?(\d+\.\d+([eE][+-]?\d+)?|\.?\d+[eE][+-]?\d+)z[+-]?0x[0-9A-Fa-f]+z[+-]?[0-9]+)
rK   re   rf   rh   ri   rj   rk   rl   rm   rn   N)'rL   rM   rN   rO   rP   rQ   rR   rS   	mimetypesr   r   Doubler
   rT   r   r   rX   r   rY   r	   r   r   Functionr   r   r   rU   Escaper   r_   rW   r   rV   Reservedr   rZ   r[   r]   r`   ra   ra   ra   rb   r   U   s    



'
r   c                   @   s`  e Zd ZdZdZdZddgZddgZdZd	Z	d
Z
edededededededededdejfedgdefdefdeeefgdefgdejfdejfdeejeejfgedddd ejfged!dd"ejfd#eejeejeejfd$eeeejeeeejfd%eeeeeefd&eeeejeejfged'dd"efd(efd)ejfd*eejeejfgd+ed,fd-ejd.fd/ejfd0efd1efd2efd3e d4 ej fe	d5 ej!fe	d ej!fd6ej"fe
d7 e
 d8 efgd9efd:efd;ejfd<efgd=e#fd>e#fgd?eee#fd@efgdAej$fdBej$fd+edCfdDefgdAej$fdEejdCfdDejfgdFZ%dGS )Hr   z6
    For Zeek scripts.

    .. versionadded:: 2.5
    Zeekzhttps://www.zeek.org/zeekbroz*.zeekz*.broz[0-9a-fA-F]z(((\d*\.?\d+)|(\d+\.?\d*))([eE][-+]?\d+)?z[A-Za-z0-9][-A-Za-z0-9]*re   rf   
directives
attributestypesrm   literals	operatorspunctuationz2((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)(?=\s*\()identifiersro   rp   z(\\)(\n)rq   z)@(load-plugin|load-sigs|load|unload)\b.*$z=@(DEBUG|DIR|FILENAME|deprecated|if|ifdef|ifndef|else|endif)\bz(@prefixes)(\s*)((\+?=).*)$)redefprioritylogr$   r   add_funcdelete_funcexpire_funcread_expirewrite_expirecreate_expirer   
persistentrotate_intervalrotate_sizeencrypt
raw_output	mergeableerror_handlertype_column
deprecated&r1   r2   )anyenumrecordr   tablevectorr   hookeventaddrrA   countr@   fileintintervalpatternportrB   subnettimerD   zA(opaque)(\s+)(of)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)\bzR(type)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)(\s*)(:)(\s*)\b(record|enum)\bz<(type)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)(\s*)(:)zI(redef)(\s+)(record|enum)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)\b)r   exportr   r   r   r   r   r   r   r   fallthroughr   r   r   addr   r   timeoutschedulez	(print)\bz(global|local|const|option)\bz4(module)(\s+)(([A-Za-z_]\w*)(?:::([A-Za-z_]\w*))*)\brg   rB   z/(?=.*/)regexz(T|F)\bz \d{1,5}/(udp|tcp|icmp|unknown)\bz(\d{1,3}.){3}(\d{1,3})\bzH\[([0-9a-fA-F]{0,4}:){2,7}([0-9a-fA-F]{0,4})?((\d{1,3}.){3}(\d{1,3}))?\]z0[xX]z+\bz!\s*(day|hr|min|sec|msec|usec)s?\bz(\d+)\bz(\.z)+z[!%*/+<=>~|&^-]z([-+=&|]{2}|[+=!><-]=)z(in|as|is|of)\bz\??\$z[{}()\[\],;.]z[?:]z([a-zA-Z_]\w*)(::)rI   z\\.z%-?[0-9]*(\.[0-9]+)?[DTd-gsx]rJ   ./)rK   re   rf   r   r   r   rm   r   r   r   r   rB   r(  N)&rL   rM   rN   rO   rP   rQ   rR   rS   _hex_float_hr   r   r   r   r   r   r   Preprocr   r   PseudorV   r   Wordr_   rY   rX   r   RegexrW   r   r[   rZ   r]   r   r   r`   ra   ra   ra   rb   r      s    


 
r   c                   @   s   e Zd ZdZdZdZdgZdgZedededed	ed
edde	fde
fgdee
efdejfgdefdejfgdejfdeeje	ee	fdejfgdejfdejfdejfdejfdejjfdejfgeddddefgdefd efgd!Zd"S )#r   zB
    For Puppet configuration DSL.

    .. versionadded:: 1.6
    Puppetzhttps://puppet.com/puppetz*.pprf   rm   namesrn   r   stringsz[]{}:(),;[]rp   z(\s*)(#.*)$z/(\\\n)?[*](.|\n)*?[*](\\\n)?/z(=>|\?|<|>|=|\+|-|/|\*|~|!|\|)z(in|and|or|not)\brI   z(\$\S+)(\[)(\S+)(\])z\$\S+z'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?z\d+[eE][+-]?[0-9]+j?z	0[0-7]+j?z0[xX][a-fA-F0-9]+z\d+Lz\d+j?)mabsentalertr   auditaugeasbeforer   checkrl   computer
configured	containedcreate_resourcescritcrondebugr   definedefined	directoryr   r   emergerrr   	extlookupfailfalser  
filebucket	fqdn_randgeneratehostr   r"   r   infoinheritsinline_template	installedr   k5loginlatestlinkloglevelmacauthorization	mailaliasmaillistmcxmd5mountmountednagios_commandnagios_contactnagios_contactgroupnagios_hostnagios_hostdependencynagios_hostescalationnagios_hostextinfonagios_hostgroupnagios_servicenagios_servicedependencynagios_serviceescalationnagios_serviceextinfonagios_servicegroupnagios_timeperiodnodenoopnoticenotifyrF   presentpurgedrealizeregsubst	resourcesrolerouterrunningr'  scheduled_tasksearch
selboolean	selmoduleservicesha1
shellquotesplitsprintfssh_authorized_keysshkeystagestopped	subscribetagtaggedtemplatetidytruer   	unmounteduser
versioncmpvlanwarningyumrepozfszonezpoolz(?i)r1   r2   z	"([^"])*"z'(\\'|[^'])*')rK   rf   r   r4  rn   rm   r5  N)rL   rM   rN   rO   rP   rQ   rR   rS   r   r   r   r   r   rU   r   r0  r   r^   Variabler   r   rZ   r\   r[   r]   Longr   r   r`   ra   ra   ra   rb   r   a  sX    
	

r   c                   @   s   e Zd ZdZdZdZdgZdgZdgZe	j
e	jB Zdedd	d	d
efdejfdefdefdefdefdeeejeejfdeeejeeeefdejfdejfdefdejfdefdejfdejfdejfdefdefgiZdd Z dS )r   z
    RSL is the formal specification
    language used in RAISE (Rigorous Approach to Industrial Software Engineering)
    method.

    .. versionadded:: 2.0
    RSLz"http://en.wikipedia.org/wiki/RAISErslz*.rslztext/rslrK   )JBoolCharIntNatRealr   Unitabsallalwaysr  r   axiomcardr   channelchaosrl   devt_relationdomelemsr   r   r   existsextendrJ  r   hdhider   r   r   inds
initialiser  interisinlenletlocalltl_assertionobjectofoutpostprereadrealrngschemeskipstopswapr   theory	test_casetltransition_systemr  rH   unionr   r   valuevariabler   r   writez~isinz-inflistz-infsetz-listz-setr1   r2   z(variable|value)\bz--.*?\nz<:.*?:>z	\{!.*?!\}	/\*.*?\*/z^([ \t]*)([\w]+)([ \t]*)(:[^:])z5(^[ \t]*)([\w]+)([ \t]*)(\([\w\s,]*\))([ \t]*)(is|as)z\b[A-Z]\w*\brE   z".*"z\'.\'zq(><|->|-m->|/\\|<=|<<=|<\.|\|\||\|\^\||-~->|-~m->|\\/|>=|>>|\.>|\+\+|-\\|<->|=>|:-|~=|\*\*|<<|>>=|\+>|!!|\|=\||#)z [0-9]+\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-f]+[0-9]+rp   r)  c                 C   s   t d| t jdurdS dS )zP
        Check for the most common text in the beginning of a RSL file.
        zscheme\s*.*?=\s*class\s*typeNg      ?)rery  I)textra   ra   rb   analyse_text  s   zRslLexer.analyse_textN)!rL   rM   rN   rO   rP   rQ   rR   rS   r   r  	MULTILINEDOTALLflagsr   r   rY   r   r   r   r   r   r   rV   rW   r   r  r   r   rZ   r[   r]   r`   r  ra   ra   ra   rb   r     sT    
(r   c                   @   s   e Zd ZdZdZdZddgZdgZdZde	j
fd	ejfd
ejfde	fdefdejfeejfdedfdefedg
dedfed e eejeeeefdefedgdejfdejfdefgdZdS )r   z6
    For Mscgen files.

    .. versionadded:: 1.6
    Mscgenz!http://www.mcternan.me.uk/mscgen/mscgenmscz*.mscz(\w+|"(?:\\"|[^"])*")zmsc\bzO(hscale|HSCALE|width|WIDTH|wordwraparcs|WORDWRAPARCS|arcgradient|ARCGRADIENT)\bz)(abox|ABOX|rbox|RBOX|box|BOX|note|NOTE)\bz(\.|-|\|){3}zT(?:-|=|\.|:){2}|<<=>>|<->|<=>|<<>>|<:>|->|=>>|>>|=>|:>|-x|-X|<-|<<=|<<|<=|<:|x-|X-|=z\*z\[attrsz	\{|\}|,|;rf   z\]rJ   z(\s*)(=)(\s*),z(?://|#).*?\nz/\*(?:.|\n)*?\*/z
[ \t\r\n]+)rK   r  rf   N)rL   rM   rN   rO   rP   rQ   rR   rS   _varr   rV   r   Propertyr   r0  Builtinr  r   r   r   r^   r   r   r   rT   rU   r`   ra   ra   ra   rb   r     sH    
	
r   c                   @   s   e Zd ZdZdZdZdgZdgZej	ej
B ejB Zddejfdejfd	efd
ejfdefdefdeeejfdefdefdefdefgiZdS )r   zG
    For SampleManager VGL source code.

    .. versionadded:: 1.6
    VGLz-http://www.thermoscientific.com/samplemanagervglz*.rpfrK   z	\{[^}]*\}r   z(if|then|else|endif|while|do|endwhile|and|or|prompt|object|create|on|line|with|global|routine|value|endroutine|constant|global|set|join|library|compile_option|file|exists|create|copy|delete|enable|windows|name|notprotected)(?! *[=<>.,()])z$(true|false|null|empty|error|locked)z[~^*#!%&\[\]()<>|+=:;,./?-]z"[^"]*"z(\.)([a-z_$][\w$]*)z&[0-9][0-9]*(\.[0-9]+(e[+\-]?[0-9]+)?)?z[a-z_$][\w$]*z[\r\n]+rp   N)rL   rM   rN   rO   rP   rQ   rR   rS   r  r  r  
IGNORECASEr  r   rU   r   rW   r   r   r   r   r^   r   r   r`   ra   ra   ra   rb   r   +  s.    r   c                   @   s(  e Zd ZdZdZdZdgZdgZdgZe	j
e	jB ZdZdefZd	ed
feefedefded
fgeeed
fgeded
feed
fgdejfdejfdejfedeejedfdeejedfdejfdejfdefdefdefdejfdeeedfdefdefeefdefdejfd efd!efgd"Z d#S )$r   z;
    For Alloy source code.

    .. versionadded:: 2.0
    Alloyzhttp://alloy.mit.edualloyz*.alsztext/x-alloyz[a-zA-Z_][\w\']*z[^\S\n]+z(extends)\brJ   r  \{z--.*?$z//.*?$r  z(module|open)(\s+)r   z(sig|enum)(\s+)sigz(iden|univ|none)\bz(int|Int)\bz.(this|abstract|extends|set|seq|one|lone|let)\bz"(all|some|no|sum|disj|when|else)\bz'(run|check|for|but|exactly|expect|as)\bz(and|or|implies|iff|in)\bz(fun|pred|fact|assert)(\s+)funz!!|#|&&|\+\+|<<|>>|>=|<=>|<=|\.|->z[-+/*%=<>&!^|~{}\[\]().]z[:,]r  "(\\\\|\\[^\\]|[^"\\])*"ro   )r  r   r  rK   N)!rL   rM   rN   rO   rP   rQ   rR   rS   r   r  r  r  r  iden_rexr   
text_tupler   r   r   r   r   rT   rU   r   rX   rY   rW   rV   r0  r   r]   r   r`   ra   ra   ra   rb   r   M  s^    
r   c                
   @   s   e Zd ZdZdZdZdgZdgZedde	dfd	e	d
fedge
dddde	fe
ddddejfdefdejfdeejeefdefdefdefgdejfdejfdefdefdefgde	dfde	fdejfdefd efed!gd"e	dfed!gd#Zd$S )%r   zZ
    Lexer for pan source files.

    Based on tcsh lexer.

    .. versionadded:: 2.0
    Panzhttps://github.com/quattor/pan/panz*.panbasicz\(parenr  curlydata)r   r   r   r   rH   bindr   validfinalr3   uniquer  r   r   r  r   r  	structure
extensibledeclarationr1   r2   )4file_contentsformatindexlengthmatchmatchesreplacesplicer  substrto_lowercaseto_uppercaserB  error	tracebackr  base64_decodebase64_encodedigestescapeunescapeappendcreatefirstnlistkeyr   merger   prepend
is_boolean
is_defined	is_doubleis_listis_longis_nlistis_null	is_numberis_propertyis_resource	is_string
to_boolean	to_doubleto_long	to_stringr   r   r  path_exists	if_existsr   r  z#.*z\\[\w\W]z(\b\w+)(\s*)(=)z[\[\]{}()=]+z<<\s*(\'?)\\?(\w+)[\w\W]+?\2;z!(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"z!(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'rp   z[^=\s\[\]{}()$"\'`\\;#]+z\d+(?= |\Z)z\}rJ   z:-z\w+z[^}:"\'`$]+:rK   \))rK   r  r  r  r  N)rL   rM   rN   rO   rP   rQ   rR   rS   r   r   r   r   r  r   r   r   r   r  r   r   r   r   rT   r   r   r`   ra   ra   ra   rb   r     sZ    
	
r   c                   @   s2  e Zd ZdZdZdZddgZddgZg Ze	dd	d
Z
e	dd	d
Ze	dd	d
Ze	dd	d
Ze	dd	d
Ze	dd	d
ZdZdZdZdZddeeefdeejeefdeeeeefdefe
efeefeefdeef ejfeejfeejfeejfdejfde eeeefde eeeejfdefdefgiZ dS ) r   z`
    Lexer for crmsh configuration files for Pacemaker clusters.

    .. versionadded:: 2.1
    Crmshzhttp://crmsh.github.io/crmshpcmkz*.crmshz*.pcmk)rl  	primitivegroupr   mslocation
colocationorderfencing_topology
rsc_ticketrsc_templatepropertyrsc_defaultsop_defaults
acl_target	acl_groupr  ru  r  z(?![\w#$-])rD   )paramsmeta
operationsopruler   utilization)r  r  deny)r   r   )rD  not_defined)in_rangedatespecr   z*(?:tag|ref|reference|attribute|type|xpath)z(?:lt|gt|lte|gte|eq|ne)z(?:string|version|number)z:(?:Master|Started|Slave|Stopped|start|promote|demote|stop)rK   z^(#.*)(\n)?z!([\w#$-]+)(=)("(?:""|[^"])*"|\S+)z(node)(\s+)([\w#$-]+)(:)z([+-]?([0-9]+|inf)):z(?:%s:)?(%s)(?![\w#$-])z#[a-z]+(?![\w#$-])z(%s)(:)("(?:""|[^"])*"|\S+)z!([\w#$-]+)(?:(:)(%s))?(?![\w#$-])z(\\(?=\n)|[\[\](){}/:@])z\s+|\nN)!rL   rM   rN   rO   rP   rQ   rR   rS   r   r   elemsubaclbin_relun_opsdate_expacl_modbin_opsval_qualrsc_role_actionr   r   r   r   r^   r   r   r   r   r   r0  r  r`   ra   ra   ra   rb   r     s`    
r   c                   @   s   e Zd ZdZdZdZdgZg ZdgZdZ	dZ
dZd	d
efdefdejfdejfdejfdefdejfdejfee	ddefee
ddejfde ejfeejfdefgiZdS )r   zD
    Lexer for Flatline expressions.

    .. versionadded:: 2.2
    Flatlinez$https://github.com/bigmlcom/flatlineflatlineztext/x-flatline)r  )z!=*+-<z<==>z>=r  acosr  zall-butzall-with-defaultszall-with-numeric-defaultr   asinatanavgz
avg-windowz
bin-centerz	bin-countcallzcategory-countceilcondzcond-windowconscoscoshr  zdiff-windowdivzensure-valuezensure-weighted-valueepochz	epoch-dayzepoch-fieldsz
epoch-hourzepoch-millisecondzepoch-minutezepoch-monthzepoch-secondzepoch-weekdayz
epoch-yearexpffieldz
field-propfieldsfilterr  floorheadr   r   integerlanguager  levenshteinzlinear-regressionr   lnr  log10r   r  zmatches?r,   maximumr[  meanmedianminminimummissingzmissing-countzmissing?missing_countmodmode	normalizer   nthoccurrencesr   
percentilezpercentile-label
populationzpopulation-fractionpow	preferredz
preferred?zquantile-labelrandzrand-intzrandom-valuezre-quoter  r  zreplace-firstrestroundz
row-numberzsegment-labelr}  sha256sinsinhsqrtsquarezstandard-deviationstandard_deviationstrsubssumzsum-squaresz
sum-windowsum_squaressummaryz
summary-nozsummary-strtailtantanhz
to-degreesz
to-radiansvariance	vectorizezweighted-random-valuewindowwinnowzwithin-percentiles?zz-scorez(?!#)[\w!$%*+<=>?/.#-]+rK   z[,]+rp   z
-?\d+\.\d+z-?\d+z0x-?[a-f\d]+r  z\\(.|[a-z]+)_ rD   z(?<=\()z(\(|\))N)rL   rM   rN   rO   rP   rQ   rR   rS   r   special_formsbuiltins
valid_namer   r   r   rZ   r]   r[   r   r  Symbolr   r   r   r  r   r  r   r`   ra   ra   ra   rb   r     s4    r   c                   @   sR  e Zd ZdZdZdZdgZdgZdZdd Z	d	d
 Z
dd Zdd Zedddejfedgde efdejfdejdfdefdejfdejfdefedddejfedddejdfedddejfedddejfd eef eejeejfd!eef efd"efgd#ed$feddded%fedgd&ed'fgd&ed(fgd)Zd-d+d,Z d*S ).r   zD
    Lexer for Snowball source code.

    .. versionadded:: 2.2
    Snowballzhttp://snowballstem.org/snowballz*.sblz\n\r\t c                 K   s   |    tj| fi | d S N)_reset_stringescapesr   __init__)r   optionsra   ra   rb   r  p  s   zSnowballLexer.__init__c                 C   s   d| _ d| _d S )Nrs   )_start_end)r   ra   ra   rb   r  t  s   
z"SnowballLexer._reset_stringescapesc                    s    fdd}|S )Nc           	      3   sJ   |  }| }tdt| j j}tdt| j j}d} }|t|k r|rp|||}|| d t	j
|dfV  |ddkr]|| d t	j
|dfV  |j  n?|| d t	j|dfV  | }|||}||   t	j| fV  |d| jkrd|jd< n| }d}|t|k s+||  |_d S )	Nz([^%s]*)(.)r         rs   r  T)startr"  r  compiler  r  r  r  r  r   rT   stackpopr   r   pos)	lexerr  ctxsr  rB   r  r  	do_stringdo_string_firstra   rb   callbacky  s4   



z'SnowballLexer._string.<locals>.callbackra   )r  r  ra   r  rb   _stringx  s   zSnowballLexer._stringc                 C   s6   | d| _| d| _ttjttjttj| ||S )N      )	r"  r  r  r   r   r   r   r   r   )r  r  r  ra   ra   rb   _stringescapes  s   zSnowballLexer._stringescapes)r  lenofr1   rD   root1z[%s]+z\d+rs   rB   z[()]rr   z//.*z)[!*+\-/<=>]=|[-=]>|<[+-]|[$*+\-/<=>?\[\]])r   gethexamongrC  decimalbackwardmode)r5  booleansintegersroutines	externals	groupingsr  )!r   r   r   r   hopnonr   r   r   rI  r   loopr   testr  rJ  unsetatmarkattachr   gopastinsertrepeatr   tomarkatleastatlimitreversesetmarktolimitsetlimit	backwards	substring)sizelimitcursormaxintminintz(stringdef\b)([%s]*)([^%s]+)z%(stringescapes\b)([%s]*)(.)([%s]*)(.)z[A-Za-z]\w*r  rJ   )r  r  z[^']*'TF)rK   r  r  rB   r  Nc                 C   s   |    t| ||S r  )r  r   get_tokens_unprocessed)r   r  contextra   ra   rb   r    s   z$SnowballLexer.get_tokens_unprocessed)NN)!rL   rM   rN   rO   rP   rQ   rR   rS   _wsr  r  r  r  r   r   r0  r   r   r   r]   r   rT   r   r   rU   r   r   r   r  r   r   r`   r  ra   ra   ra   rb   r   b  sz    





1r   )$rO   r  pygments.lexerr   r   r   r   r   r   r   r	   r
   pygments.tokenr   r   r   r   r   r   r   r   r   __all__r   r   r   BroLexerr   r   r   r   r   r   r   r   r   ra   ra   ra   rb   <module>   s&    
,,>j  X@2"=EFM