U
    luf                     @   s   d Z ddlZddl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mZ ddddg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.int_fiction
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for interactive fiction languages.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroupsusingthisdefaultwords)
TextCommentOperatorKeywordNameStringNumberPunctuationErrorGenericInform6LexerInform6TemplateLexerInform7Lexer
Tads3Lexerc                >   @   s	  e Zd ZdZdZdZddgZdgZej	ej
B ZdZdZd	Zd
ZdZdeef ejdfedgdefde ejfgeddedfdedfdefedgeddedfdeef edfde efde edfgeddedfdedfdedfde efd e efd!ed"fd#e ed"fd$ejd"fd%efd&ejd'fd(efedgded)fd*efd+e ed"fd%ejfd,ed-fed.gded/fd0edfed.gd1ed"fed.gd!edfed.gd2ejdfed3gedd4eef e j!dfd5eef e"e j!e j#e j!dfd6eef e"e j!e j#e j!dfd7e e jd8fd7e e j$d9fd:eef e%j&dfd;e%j'dfd<e%j(dfd=e%j)dfd>e e"eedfd?e e"eej*j+dfd@edAfdBe e"eej,dfdCej-dDfe.dEdFdGej-dfdHej-dfe.dIdJdFdKej-dfe.dLdJdFdKej-dfeedfgedMedgdNe j#fdOe e jfdPe jfdQe j#fdRe j#fd7e e jdfgdNe j#fdOe e j$fdPe j$fdSe j#fdTeef e j#fdUeeef e j#fdVeef e j#fd7e e j$dfgdWe e j$fdXe j$fdSe j#fd7e e j$dfgedeej/dfedMgedd!efdYedZfeej/dZfedgedeej*j+dfedMgedeejdfedgedeej*dfedgd[e j0dfgedeej-dfgeddCefd,edfded\fe.d]dJdFdKed^fd_ed`fdaedbfdceddfdeedffdge"eefdhedifdjedkfdledmfdnedofdpedkfdqedrfdsedtfduedvfdwedxfdyedzfd{ed|fd}ed~fdedfeej1dtfgedeej,dfedgedd,edfdefde j$dfeej*fgedd,efdedfd0efedgeddedfedgeddedfeej1dfgeddedfedgd+e efdejdfedgedd,ed/fd!efdejdfdejfd0efedgeddedfeej1fedMgeddYedfdedfedgedd,edfdefd+e edMfdedfedgeddYedfedgedd,edfd!efdedfedgedd7e e j$dfedgedd7e e j$dfedgdNe j#fedgede.ddFdGedfdefde edfgededMgededgede.ddeef dGefedgede.ddFdGedfedgeddedfdefe.ddFdGed^fdefdedfdedfdedfdedfdedfde edfdejd'fdedfdedfded^fdedfedgeddedfde ejdfdeef ej,dfedgeddedfedgedd,edfedgedd,edfd0efedgeddedfedgedd7e e j$dfeedfgd0efedgd4Z2dd Z3ddÄ Z4dS )r   z>
    For Inform 6 source code.

    .. versionadded:: 2.0
    zInform 6zhttp://inform-fiction.org/Zinform6Zi6z*.infz[a-zA-Z_]\w*u	   \-‐-—u   "“”u   '‘’u
   \n  z\A(!%%[^%s]*[%s])+	directive\s+![^%s]*_whitespace\[many-valuesz:|(?=;)#pop<)
expression_expressionz(?=sp\b)z(?=[%s%s$0-9#a-zA-Z_]))r   valuez\+\+|[%s]{1,2}(?!>)|~~?z(?=[()\[%s,?@{:;])\(\))r   
statementslocalsz>(?=(\s+|(![^%s]*))*[>;])z\+\+|[%s]{2}(?!>),r    z6&&?|\|\|?|[=~><]?=|[%s]{1,2}>?|\.\.?[&#]?|::|[<>+*/%%]z*(has|hasnt|in|notin|ofclass|or|provides)\bzsp\bz\?~?label?z[@{])#pushr    z[\[\]]z[%s]>;#pop:3r   #pop:2:z(from|near|to)\bzhas\b_list-expressionz[%s][^@][%s]z([%s])(@\{[0-9a-fA-F]*\})([%s])z([%s])(@.{2})([%s])[%s])r   dictionary-word)r   stringz.\$[<>]?[+%s][0-9]*\.?[0-9]*([eE][+%s]?[0-9]+)?z\$[0-9a-fA-F]+z	\$\$[01]+z[0-9]+z(##|#a\$)(%s)z
(#g\$)(%s)z#[nw]\$)r   obsolete-dictionary-wordz
(#r\$)(%s)#)r   system-constant)childchildrenZelderZeldestZglkZindirect	metaclassparentrandomZsiblingZyoungerZyoungestz\b)suffixz#(?i)(Class|Object|Routine|String)\b)2ZBox__RoutineZCA__PrZCDefArtZ	CInDefArtZCl__MsZCopy__PrimitiveZCP__TabZDA__PrZDB__PrZDefArtZDynam__StringZEnglishNumberZ	Glk__WrapZIA__PrZIB__PrZInDefArtZMain__ZMeta__classZOB__MoveZ
OB__RemoveZOC__ClZOP__PrZPrint__AddrZPrint__PNameZPrintShortNameZRA__PrZRA__ScZRL__PrZ	R_ProcessZRT__ChGZRT__ChGtZ	RT__ChLDBZ	RT__ChLDWZRT__ChPRZRT__ChPrintAZRT__ChPrintCZRT__ChPrintOZRT__ChPrintSZRT__ChPSZRT__ChRZ	RT__ChSTBZ	RT__ChSTWZRT__ChTZRT__ErrZRT__TrPSZRV__PrZ	Symb__TabZUnsigned__CompareZWV__PrZ	Z__Regionz(?i))prefixr9   )8callcopycreateDEBUGdestroyZDICT_CHAR_SIZEZDICT_ENTRY_BYTESZDICT_IS_UNICODEZDICT_WORD_SIZEZDOUBLE_HI_INFINITYZDOUBLE_HI_NANZDOUBLE_HI_NINFINITYZDOUBLE_LO_INFINITYZDOUBLE_LO_NANZDOUBLE_LO_NINFINITYfalseZFLOAT_INFINITYZ	FLOAT_NANZFLOAT_NINFINITYZGOBJFIELD_CHAINZGOBJFIELD_CHILDZGOBJFIELD_NAMEZGOBJFIELD_PARENTZGOBJFIELD_PROPTABZGOBJFIELD_SIBLINGZGOBJ_EXT_STARTZGOBJ_TOTAL_LENGTHZGrammar__VersionZINDIV_PROP_STARTZINFIXZinfix__watchingZMODULE_MODEnameZnothingZNUM_ATTR_BYTESprintZprint_to_arrayZrecreate	remainingselfZsenderZSTRICT_MODEZsw__varZ
sys__glob0Z
sys__glob1Z
sys__glob2Zsys_statusline_flagZTARGET_GLULXZTARGET_ZCODEZtemp__global2Ztemp__global3Ztemp__global4Ztemp_globaltrueZUSE_MODULESZWORDSIZEr!   z[~^]+z[^~^\\@({%s]+z[({]z@\{[0-9a-fA-F]*\}z@.{2}z\\z(@(\\\s*[%s]\s*)*@((\\\s*[%s]\s*)*[0-9])*zE@(\\\s*[%s]\s*)*[({]((\\\s*[%s]\s*)*[0-9a-zA-Z_])*(\\\s*[%s]\s*)*[)}]z!@(\\\s*[%s]\s*)*.(\\\s*[%s]\s*)*.z[^~^\\({\[\]%s]+z
[~^({\[\]]=value?z\S\w*)r   r$   r%   routine-name?)Z
abbreviateendif
dictionaryZifdefZiffalseZifndefZifnotZiftrueZifv3Zifv5releaseserialZswitchesZsystem_fileversionr   z(?i)(array|global)\b)r   directive-keyword?_globalz(?i)attribute\b)r   alias?	_constantz(?i)class\b)object-body
duplicates
class-namez(?i)(constant|default)\b)r   	constant*z(?i)(end\b)(.*)z(?i)(extend|verb)\bgrammarz(?i)fake_action\b)r   rQ   z(?i)import\bmanifestz(?i)(include|link|origsource)\b)r   before-plain-string?z(?i)(lowstring|undef)\bz(?i)message\b)r   
diagnosticz(?i)(nearby|object)\b)rR   _object-headz(?i)property\b)r   rP   rQ   property-keyword*z(?i)replace\b)r   rH   rH   z(?i)statusline\b)r   rN   z
(?i)stub\b)r   rH   z(?i)trace\b)r   trace-keyword?r\   z(?i)zcharacter\b)r   rN   rN   z\*"plain-string\]zalias\b)r   rQ   z#(?=[,;]|(class|has|private|with)\b))r   r   r    z(class|has|private|with)\brO   class\bclass-segmentz(has|private|with)\b)_object-expressionr    )r   r   )r   grammar-line_directive-keywordz[/*]z(noun|scope)\b=routinerH   z(?i)global\b)r   message-string)r   rX   rN   )r   r^   )%additivealiasbufferclassZcreaturedataerrorZ
fatalerrorfirstZhasZheld
individualinitialZinitstrlastlongmetaZmultiZmultiexceptZ	multiheldZmultiinsideZnounnumberonlyprivatereplacereverseZscopeZscorespecialr0   tableZterminatingtimeZtopicwarningwithzstatic\bz[%s]{1,2}>|[+=]_directive-keyword!)rg   rn   rq   z#\b(?=(\s*|(![^%s]*[%s]))*[_a-zA-Z]))ZassemblyrJ   ZexpressionslinesZlinkerZobjectsoffonsymbolstokensZverbsz[;{}])Zboxbreakcontinuer   ZgiveZ	inversionnew_linequitreadremovereturnZrfalseZrtruespacesr0   Zuntilz(do|else)\bz(font|style)\b)r   miscellaneous-keyword?zfor\b)for(?z(if|switch|while))r   r    r   z(jump|save|restore)\b)r   r'   zobjectloop\b)_keyword-expression	variable?r   zprint(_ret)?\b|(?=[%s])
print-listz\.@opcodez#(?![agrnw]\$|#)zmove\b)r   r   r    z:(bold|fixed|from|near|off|on|reverse|roman|to|underline)\bzX(a|A|an|address|char|name|number|object|property|string|the|The)\b(?=(\s+|(![^%s]*))*\))z%s(?=(\s+|(![^%s]*))*\)))_for-expressionr    )r-   r    r-   form)r   r   )operandsr^   r   )_assembly-expressionr    )4rootr   r   r    r   r   r   r   r-   rb   r!   rG   r/   r0   r^   rQ   rU   rO   r'   r   r1   r3   r   rH   r%   r   rP   rT   rS   rZ   rR   ra   rV   rc   re   rW   rY   rX   rf   r}   rd   rN   r[   r\   r$   r   r   r   r   r   r   r   c                 c   s   g }d}d }t | |D ]\}}}|tjkrF|dkrF|||gg}d}nx|dkrx|tkrf|tkrf|d8 }||||f nF|dkr|d d dkrt|d d< |r|dV  qd}|||fV  |tkr|tkr|}q|r|dV  qd S )Nin   r      ))	r   get_tokens_unprocessedr   Variabler
   r	   appendr   pop)rD   textZobjectloop_queueZobjectloop_token_countZprevious_tokenindextokenr!    r   ?/tmp/pip-unpacked-wheel-7eq1ciah/pygments/lexers/int_fiction.pyr     s0    z#Inform6Lexer.get_tokens_unprocessedc                 C   s    d}t d| t jr|d7 }|S )zWe try to find a keyword which seem relatively common, unfortunately
        there is a decent overlap with Smalltalk keywords otherwise here..r   zorigsourceg?)research
IGNORECASEr   resultr   r   r   analyse_text  s    zInform6Lexer.analyse_textN)5__name__
__module____qualname____doc__rA   urlaliases	filenamesr   	MULTILINEDOTALLflags_name_dash_dquoteZ_squote_newliner
   Preprocr   r	   Singler   r   r   Wordr   Labelr   r   PseudoZDeclarationr   Charr   EscapeDoubler   FloatHexZBinIntegerr   ZGlobalFunctionBuiltinr   ConstantOtherClassr   r   r   r   r   r   r   r      sR  

	

 
	

 
 
 


 
 

    ?	






  
*

		




		 
  
       Kc                   @   s  e Zd ZdZdZdZddgZddgZej	ej
B ZejZejZejZde Zi Zd	d
dgZeD ]Zeejd dej ejdfgdefdejdfde ejdfedgde ejfde ejdfgdejdfdeef ejfde ejdfdeeef edfde edfde ejfgdeef efde ejdfded fd!ed"fdejdfd#eef eee e!d$d	d%efd&eeef ed'fd(e efgd)efdejdfd#eef eee e!d*d
d%edfedgd)efdejdfd#eef eee e!d$dd%edfedgd+ejfdejd,fd-ejdfgd.e ejfd/ej"fde ejdfgdefdejdfd0e ed1fd2e efd3e ejdfedgd)efdejdfd4ed5fedgd)efdejdfd6e ed7fed8gd9eef ejfd:eef ej#fd;eef e e!d<d=fd>eef efdejdfgd?eef ejfd@eeef ejfdAeef ejdBfge$d	dCeeeefgdDeee e!d<d=efgdEe eeej%efdFe eee&eeedGfdHe eee&eeefdIeee e!d<d=efgdJejfd?eef ejdfdKeef ejfdAeef ejfdLejfgd?eef ejfdMeeef ejfdAeef ejdBfdNeef e&fdOe ej%fdPe eee&edfdQe efgdRee< ejD ]VZ'e'dkrqeeje' ee e'< e'(dSse$dTe$egee e' dUdV< qq\dWdX Z)dUS )Yr   z>
    For Inform 7 source code.

    .. versionadded:: 2.0
    zInform 7zhttp://inform7.com/Zinform7Zi7z*.niz*.i7xz\A|(?<=[%s])+i6t-not-inline+i6t-inline+i6t-use-optionr   z[^%s]*)r   +pz(\|?\s)+r   +commentr.   )+main+titling+titling-string)r   	+heading?z[^%s]+r   z[^%s.;:|%s]+r   z[%s]{2}|(?<=[\s%s])\|[\s%s])r   r   z[.;:]|(?<=[\s%s])\|z[|%s]z(?i)[^%s:a\[(|%s]++textr,   +phrase-definitionz
(?i)\bas\b+use-optionz(\([%s])(.*?)([%s]\)))+i6-rootr   )statei6tz (%s|(?<=[\s;:.%s]))\|\s|[%s]{2,}r   z(?i)[a(|%s]r   )r   r   r   r$   z[^\[\]]+r(   r_   z[^\[%s]+z\[.*?\]z
[%s]{4}\s++documentation-headingz	[%s]{1,3}z.(?i)(volume|book|part|chapter|section)\b[^%s]*z(?i)documentation\s++documentation-heading2z	[%s]{4}\s+documentationr+   z&(?i)(%s)\s*(chapter|example)\s*:[^%s]*z(?i)(%s)\s*section\s*:[^%s]*z((%s)\t.*?[%s])+r   r   z[^%s\[]+|[%s\[]z(%s)@c( .*?)?([%s]|\Z)z(%s)@([%s]+|Purpose:)[^%s]*z(%s)@p( .*?)?([%s]|\Z)r   z(\{)(N)(\})z(\{)(\S[^}]*)?(\})z(\{[%s])(![^}]*)(\}?)z(\{[%s])(lines)(:)([^}]*)(\}?)+linesz (\{[%s])([^:}]*)(:?)([^}]*)(\}?)z(\(\+)(.*?)(\+\)|\Z)z[^@]+z(%s)@([%s]|Purpose:)r   z(%s)@([%s]|Purpose:)[^%s]*z(%s)@\w*[ %s]r   z(\{)([%s]endlines)(\})z[^@!{]+?([%s]|\Z)|.)r   	+i6t-rootr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   +i6tr   r   _r   Nr   c                 K   sD   | dd}|| jkr&| j|| _n| j| | _tj| f| d S )Nr   r   )getZ_all_tokens	__class__Zprocess_tokendefZ_tokensr   __init__)rD   optionslevelr   r   r   r     s
    
zInform7Lexer.__init__)*r   r   r   r   rA   r   r   r   r   r   r   r   r   r   r   r   _startr   Ztoken_variantsr   listr
   r   r	   	Multiliner   ZHeadingr   r   r   r   r   r   r   InterpolZ
Subheadingr   r   r   r   
startswithr   r   r   r   r   r     s  




 


 









 








 	


 



 
 
 
 !

&c                   @   s*   e Zd ZdZdZdgZdgZd	ddZdS )
r   z@
    For Inform 6 template code.

    .. versionadded:: 2.0
    zInform 6 templater   z*.i6tr   c                 C   s   t | ||S )N)r   r   )rD   r   stackr   r   r   r     s    z+Inform6TemplateLexer.get_tokens_unprocessedN)r   )r   r   r   r   rA   r   r   r   r   r   r   r   r     s
   c                T   @   s  e Zd ZdZdZdgZdgZejej	B Z
dZdZdZdZd	Zd
Zdeef Zdeef ZdefddZefddZefddZdefdedfdefdedfdeef eejeeddedfeddefdefd ed!fg	ed"ed#gd$ed%fded&fedgd$efded'fd(ed%fd)ed*fd+eef eejeedded,fd-eef eejeeddedfd.eef eej eedded/fedd0e ed1fed2g
ed"d3eef eej eedded4fed5gded6fedd7ed8fed9gded6feded%gd:efded'fd(ed%fd;e!j"fd.eef eej#eeddefedged<d ed=fgd>e$j%d%fed<d ed?fgedd@ed4fdAedBfdedCfdDed%fdEe&j'd%fdFe&j(d%fdGe&j)d%fdHe&j*d%fdIe$j+dJfdKe$j,dLfdMe$j+dNfdOe$j,dPfdQe$j-dRfdSe$j-dTfdUe$j-dVfdWe$j-dXfdYe ee!j"eedde!j"fdZe ee!j"eedded[fd\e ee!j"eedde!j"d]fd^e ee!j"eeddfd_e ee!j"eedde!j"d`fdae ee!eedde!j"dbfdcej.d%fdde!j"defdfe!j"fdge!j"dhfdie!j"djfdke!j"d%fdle!j"dmfdne!j"dofdpe!j"dqfdre!j"dsfdte!j"dufdve!j"dwfdxe!j"dyfdze!j"d{fd|e!j"d%fd}e!j"d~fde!j/d%fde!j"d9fde!j"dfde!j"dfdej.j0d%fde!j"d`fde ee1j2eedde1dfde1j2fdej.d%fg0ed"eed%fed%gd@edfdAed=fdefded1fded%fedee1d1fde1dfde ee1j2eedde1j2fdefg
eded%gde1d%fedgd>e$j%d5fedgd@edsfdze!j"dfed1gd(ed%fdedfde!dfedgeej d%fedgdedfedgded1fedgdeef eej eeddd%fdeeef eej3eeddej d%fdefed"eej d%fed%gde eeeeddfdefdedfdedfdedfedgded%fedgde!d%feded%gdedfde1d%fedgde!d%fedgdefeej4dfedgedde!dmfedmgdefd@edfd)edfeej3fedgedde$j5d%fgededde eeeedde!d1fde efeej/fed5gd)ed%fgde$j%fdeef ed%feejd%fedgdedfedeej3d%fed%gde1j2d%fedee1fed%gd@edfded&fedgded%feddxe!j"fedde efeej fgdDed%fde!j"d%fde!j"feej3d%feded%gdedfedded%fed%gdefd$ed%fde!j"feej/fedgeej#d%feded%gdefded%fedeej fgdeef e6j7fee6j,fee6j8fde efgdIe$j+dfdKe$j,dfdMe$j+dfdOe$j,dfgde e$j9fgde$j%fdeef e$j%dfgdej:fgedd΃eddσedd΃eddσedddЃedddЃedddЃedddЃedddуedddуedddуedddуedd΃eddσedd΃eddσedMdd΃edMddσedMdd΃edMddσedOdd΃edOddσedOdd΃edOddσeedd΃eeddσeedd΃eeddσde$j-fde$j-fde$j-d%fdMe$j-fgde$j-fde$j-fde$j-d%fdOe$j-fgde$j-fde$j-fdMe$j-d%fgde$j-fde$j-fdOe$j-d%fgdڜPZ;dd܄ Z<ddބ Z=dS )r   z!
    For TADS 3 source code.
    zTADS 3Ztads3z*.tz(?://(?:[^\\\n]|\\+[\w\W])*$)z(?:/\*(?:[^*]|\*(?!/))*\*/)zM(?:\\(?:[\n\\<>"\'^v bnrt]|u[\da-fA-F]{,4}|x[\da-fA-F]{,2}|[0-3]?[0-7]{1,2}))z(?:[_a-zA-Z]\w*)z(?=\s|\\?>)zD(?:&&|\|\||\+\+|--|\?\?|::|[.,@\[\]~]|(?:[=+\-*/%!&|^]|<<?|>>?>?)=?)z(?:\\|\s|%s|%s)z(?:\\\n|[^\S\n]|%s|%s)Nc           
   	   C   sz  |rd dd |D }|r dnd}|r.tjntj}| rDd||f nd}d| rRdnd|r\d	nd
f }d| }g }	| r|	d| |dfd| tjf||fg7 }	n|	||df |	tdd| |fg7 }	|r|	d||f tjdd| |ff n`|	d||||f t	j
fdtjdd| |ffdtjdd| |ffd||||f tj|ftdg7 }	|	tdd||||f tjfd|fg7 }	|	S )N c                 S   s,   g | ]$}d t | t | f qS )z	(?:%s|%s))r   escapelowerupper).0cr   r   r   
<listcomp>  s   z1Tads3Lexer._make_string_state.<locals>.<listcomp>r]   '+|%s(?!%s{2})%s%stdsz%sqtz%s{3,}r   z\\%s+
s/verbatimz[^\\<&{}%s]+z!\\?<(/|\\\\|(?!%s)\\)%s(?=[\s=>])z%sqsz(\\?<!([^><\\%s]|<(?!<)|\\%s%s|%s|\\.)*>?z(?i)\\?<listing(?=[\s=>]|\\>)z%sqs/listingz(?i)\\?<xmp(?=[\s=>]|\\>)z%sqs/xmpz(\\?<([^\s=><\\%s]|<(?!<)|\\%s%s|%s|\\.)*s/entitys/escape%\{([^}<\\%s]|<(?!<)|\\%s%s|%s|\\.)*\}z[\\&{}<])joinr   r   r   r   r   r   r   Tagr
   r   r   )
tripledoubleZverbatim_escapecharr   escaped_quotesr:   Ztag_state_namer   r   r   r   _make_string_state  st    

 


zTads3Lexer._make_string_statec                 C   s   |rdnd}| rdnd}d| r"dnd|r,dndf }|r>t jnt j}| rTd	||f nd}d
||f |dfdtfdttt jd| fdttt jd| fdtd| fdtjdfd||||f t jfd||||f tj	ft
dt
dt
ddtj	fgS )Nr]   r   {3,}r   z%s%sqtr   r   r   r   r   r+   z
(\s|\\\n)+z	(=)(\\?")zdqs/%sz	(=)(\\?')zsqs/%srF   zuqs/%sz\\?>r   r   z$([^\s=><\\%s]|<(?!<)|\\%s%s|%s|\\.)+r   r   r   z[\\{}&])r   r   r   r	   r   r   r   r   r   	Attributer   )r   r  r  r  Z
quantifierZ
state_namer   r  r   r   r   _make_tag_stateB  s<    


zTads3Lexer._make_tag_statec           	   	   C   s   | dkrt jn| dkrt jnt j}|r*dnd}|r6dnd}|rDt jnt j}|rZd||f nd}d||f |dfd|t jkr~dnd| f |d	ftd
tdd||||f t jfd|t jkrdnd |ftdd|fgS )Nr]   r   r  r   r   r   r*   z\\?r   r   r   r   z([^\s"\'<%s{}\\&])+>r   z["\'\s&{<}\\])r   r   r   r   r   r   )	
terminatorZhost_tripleZhost_doubler  r   Z	host_charZhost_quantifierZ
host_tokenr  r   r   r   _make_attribute_value_state[  s8     
z&Tads3Lexer._make_attribute_value_stateu   ﻿z\{rR   z;+z(?=(argcount|break|case|catch|continue|default|definingobj|delegated|do|else|for|foreach|finally|goto|if|inherited|invokee|local|nil|new|operator|replaced|return|self|switch|targetobj|targetprop|throw|true|try|while)\b)blockz(%s)(%s*)(\()
whitespacer   )block?/rootmore/parametersmain/parametersz\++z[^\s!"%-(*->@-_a-z{-~]+z(?!\Z)	main/root
main/basic)r   object-body/no-bracesclassesrj   r)   r   )r   rR   r(   z\}r,   )r  rj   z(%s?)(%s*)(\())block?r  r  z(%s)(%s*)(\{)z(%s)(%s*)(:))r  r  rj   z->|%smainmain/object-bodyz(%s)(%s*)(=?))r   morer  r+   )r   r  z(?=[\[\'"<(:]))r   r  rV   grammar-rules)r   r  z[;:]+z	default\bblock/basic)r  r  z>>)
more/embedr  r"   r   )r   	more/listr  )r   
more/inner
main/innerr  r  z\*|\.{3}z(?i)0x[\da-f]+z5(\d+\.(?!\.)\d*|\.\d+)([eE][-+]?\d+)?|\d+[eE][-+]?\d+z0[0-7]+z\d+z""")r   tdqsz''')r   tsqsr]   )r   dqsr   )r   sqszR""")r   tdqrzR''')r   tsqrzR")r   dqrzR')r   sqrz(extern)(%s+)(object\b)z(function|method)(%s*)(\())r   r  r  r  z(modify)(%s+)(grammar\b))r   r  r,   rV   z#(new)(%s+(?=(?:function|method)\b))z(object)(%s+)(template\b))r   templatez(string)(%s+)(template\b))r   function-namez>(argcount|definingobj|invokee|replaced|targetobj|targetprop)\bz(break|continue|goto)\b)r   labelz0(case|extern|if|intrinsic|return|static|while)\bzcatch\b)r   catchr`   )r   r  rj   z(default|do|else|finally|try)\bz(dictionary|property)\b)r   	constantszenum\b)r   enumzexport\b)r   r  z(for|foreach)\b)r   r  r  z(function|method)\b)r   r  r(  z	grammar\b)r   r  rV   zinherited\b)r   	inheritedzlocal\b)r   
more/local
main/localz)(modify|replace|switch|throw|transient)\bznew\b)r   rj   z(nil|true)\bzobject\bz
operator\b)r   operatorzpropertyset\b)r   propertysetr  zself\bz
template\bz(__objref|defined)(%s*)(\())r   more/__objrefr  zdelegated\ba*  (__DATE__|__DEBUG|__LINE__|__FILE__|__TADS_MACRO_FORMAT_VERSION|__TADS_SYS_\w*|__TADS_SYSTEM_NAME|__TADS_VERSION_MAJOR|__TADS_VERSION_MINOR|__TADS3|__TIME__|construct|finalize|grammarInfo|grammarTag|lexicalParent|miscVocab|sourceTextGroup|sourceTextGroupName|sourceTextGroupOrder|sourceTextOrder)\b)r  r  z\.{3}z->|\.\.z(?=;)|[:)\]]z\?)r  more/conditionalr  z(is|not)(%s+)(in\b)z[^\s!"%-_a-z{-~]+
more/basicz:(?!:)r  )r   r/  r&   r  z(in|step)\br/  z[,:]z(%s)(%s*)(?=:)z(%s)(%s+)(%s)z\[+z(:)(%s*(?=[?=,:)]))z[?\]]+z[:)])r   multimethod?r  rF   )more/parameterr  z(?=[,)])zmultimethod\bmoder#   z(error|warn)\bz\(+)r   	variablesztoken\bz\)+grammar-tagr  a!  """([^\\"<]|""?(?!")|\\"+|\\.|<(?!<))+("{3,}|<<)|R"""([^\\"]|""?(?!")|\\"+|\\.)+"{3,}|'''([^\\'<]|''?(?!')|\\'+|\\.|<(?!<))+('{3,}|<<)|R'''([^\\']|''?(?!')|\\'+|\\.)+'{3,}|"([^\\"<]|\\.|<(?!<))+("|<<)|R"([^\\"]|\\.)+"|'([^\\'<]|\\.|<(?!<))+('|<<)|R'([^\\']|\\.)+'|([^)\s\\/]|/(?![/*]))+|\)r0   z(\[)(%s*)(badness)z
->|%s|[()]z(<<([^>]|>>>|>(?!>))*>>)+z(?=%s?%s*[({])r   )r   r  rj   znegate\b)r  r  z(?=;)z->|\?|%sztransient\bz[:,]rj   r	  z,+z
property\bz^%s*#(%s|[^\n]|(?<=\\)\n)*\n?z\\+\n+%s*#?|\n+|([^\S\n]|\\)+r  r   r!  r"  z\{\{|\}\}|%sz<<\s*(as\s+decreasingly\s+likely\s+outcomes|cycling|else|end|first\s+time|one\s+of|only|or|otherwise|(sticky|(then\s+)?(purely\s+)?at)\s+random|stopping|(then\s+)?(half\s+)?shuffled|\|\|)\s*>>z_<<(%%(_(%s|\\?.)|[\-+ ,#]|\[\d*\]?)*\d*\.?\d*(%s|\\?.)|\s*((else|otherwise)\s+)?(if|unless)\b)?)block/embedr  r  z'(?i)&(#(x[\da-f]+|\d+)|[a-z][\da-z]*);?TFlistingxmpz[^\\"]+z\\"*z"{3,}z[^\\']+z\\'*z'{3,}z\\"?z\\'?)Pr   r  r  rR   r  r  r  r  r  r:  r  r  r4  r  r3  r  r  r  r/  r.  r  r  r  r6  r5  r2  r7  r*  r,  rV   r9  r  r,   r(  r-  r0  r1  r'  rj   r  r+  r)  r8  r  r0   r   r   r   r  r   r!  r"  ztdqs/listingztsqs/listingzdqs/listingzsqs/listingztdqs/xmpztsqs/xmpzdqs/xmpzsqs/xmpZtdqtZtsqtZdqtZsqtzdqs/tdqtzdqs/tsqtzdqs/dqtzdqs/sqtzsqs/tdqtzsqs/tsqtzsqs/dqtzsqs/sqtzuqs/tdqtzuqs/tsqtzuqs/dqtzuqs/sqtr#  r$  r%  r&  c                 k   s   d| j | j f }d}tj| |f|D ]\}}}|dkr`|tjkrtd|| j | j f |rd}n`|tjkr|dkrtd| |rd}qtd| |r|d7 }qtd| |r|d8 }nt}|||fV  q$d S )Nz^%s*#%s*r   z%sif%s+(0|nil)%s*$\n?r   z%sel(if|se)\bz%sifz	%sendif\b)_ws_ppr   r   r
   r   r   match)rD   r   kwargsppZif_false_levelr   r   r!   r   r   r   r   C  s0    



z!Tads3Lexer.get_tokens_unprocessedc                 C   s8   d}d| ksd| kr|d7 }d| kr4d| kr4|d7 }|S )zThis is a rather generic descriptive language without strong
        identifiers. It looks like a 'GameMainDef' has to be present,
        and/or a 'versionInfo' with an 'IFID' field.r   Z__TADSZGameMainDefg?ZversionInfoZIFIDg?r   r   r   r   r   r   Z  s    zTads3Lexer.analyse_text)>r   r   r   r   rA   r   r   r   r   r   r   Z_comment_singleZ_comment_multiliner  r   Z	_no_quote	_operator_wsr=  r  r  r  r	   r   r   r   r   r   r   r   r   r   r   r   ZReservedr   r   r   r   r   r   Octr   r   r   Regexr   r   r   r   r   r   	Exceptionr   r
   r   r   r   Entityr   r   r   r   r   r   r   r     s  2
 




	


 









 










 W



 


 






	
	






 
























      T)r   r   Zpygments.lexerr   r   r   r   r   r   r   Zpygments.tokenr	   r
   r   r   r   r   r   r   r   r   __all__r   r   r   r   r   r   r   r   <module>   s   
$0     M