a
    lcf                     @   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 g d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-2022 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 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/inform6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))prefixr;   )2callcopycreateDEBUGdestroyZDICT_CHAR_SIZEZDICT_ENTRY_BYTESZDICT_IS_UNICODEZDICT_WORD_SIZE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   rS   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)rT   _object-headz(?i)property\b)r   rR   rS   property-keyword*z(?i)replace\b)r   rJ   rJ   z(?i)statusline\b)r   rP   z
(?i)stub\b)r   rJ   z(?i)trace\b)r   trace-keyword?r^   z(?i)zcharacter\b)r   rP   rP   z\*"plain-string\]zalias\b)r   rS   z#(?=[,;]|(class|has|private|with)\b))r   r!   r"   z(class|has|private|with)\brQ   class\bclass-segmentz(has|private|with)\b)_object-expressionr"   )r   r   )r   grammar-line_directive-keywordz[/*]z(noun|scope)\b=routinerJ   z(?i)global\b)r   message-string)r   rZ   rP   )r   r`   )%additivealiasbufferclassZcreaturedataerrorZ
fatalerrorfirsthasZheld
individualinitialZinitstrlastlongmetamultiZmultiexceptZ	multiheldZmultiinsideZnounnumberonlyprivatereplacereversescopeZscoreZspecialr2   tableZterminatingtimeZtopicwarningwithzstatic\bz[%s]{1,2}>|[+=]_directive-keyword!)ri   rq   rt   z\b(?!(\s*|(![^%s]*))*;))ZassemblyrL   ZexpressionslinesZlinkerobjectsoffonsymbolstokensZverbsz[;{}])boxbreakcontinuer   ZgiveZ	inversionnew_linequitreadremovereturnZrfalseZrtruespacesr2   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/   rd   r#   rI   r1   r2   r`   rS   rW   rQ   r)   r   r3   r5   r   rJ   r'   r   rR   rV   rU   r\   rT   rc   rX   re   rg   rY   r[   rZ   rh   r   rf   rP   r]   r^   r&   r   r   r   r   r   r   r   c                 c   s   g }d}d }t | |D ]\}}}|tju rF|dkrF|||gg}d}nx|dkrx|tvrf|tvrf|d8 }||||f nF|dkr|d d dkrt|d d< |r|dV  qd}|||fV  |tvr|tvr|}q|r|dV  qd S )Nin   r      ))	r   get_tokens_unprocessedr   Variabler
   r	   appendr   pop)rF   textZobjectloop_queueZobjectloop_token_countZprevious_tokenindextokenr#    r   W/var/www/html/django/DPS/env/lib/python3.9/site-packages/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__rC   urlaliases	filenamesr   	MULTILINEDOTALLflags_name_dash_dquoteZ_squote_newliner
   Preprocr   r	   Singler   r   r   Wordr   Labelr   r   PseudoDeclarationr   Charr   EscapeDoubler   FloatHexBinIntegerr   GlobalFunctionBuiltinr   ConstantOtherClassr   r   r   r   r   r   r   r      s.  

	


	









>	







*

		




		
      Ir   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g d	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d0ej"fde ejdfgdefdejdfd1e ed2fd3e efd4e ejdfedgd(efdejdfd5ed6fedgd(efdejdfd7e ed8fed9gd:e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dAeeef ejfdBeef ejdCfge$d#dDeeeefgdEeee e!d=d>efgdFe eeej%efdGe eee&eeedHfdIe eee&eeefdJeee e!d=d>efgdKejfd@eef ejdfdLeef ejfdBeef ejfdMejfgd@eef ejfdNeeef ejfdBeef ejdCfdOeef e&fdPe ej%fdQe eee&edfdRe efgdSee< ejD ]VZ'e'd
krqeeje' ee e'< e'(dTse$dUe$egee e' dVdW< qqZdXdY Z)dVS )Zr   z>
    For Inform 7 source code.

    .. versionadded:: 2.0
    zInform 7zhttp://inform7.com/inform7i7z*.niz*.i7xz\A|(?<=[%s]))+i6t-not-inline+i6t-inline+i6t-use-optionr   z[^%s]*)r   +pz(\|?\s)+r   +commentr0   )+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   r   )statei6tz (%s|(?<=[\s;:.%s]))\|\s|[%s]{2,}r   z(?i)[a(|%s]r   )r   r   r   r&   r   r   z[^\[\]]+r*   ra   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   sH   | dd}|| jvr&| j|| _n| j| | _tj| fi | d S )Nr   r   )get_all_tokens	__class__process_tokendef_tokensr   __init__)rF   optionslevelr   r   r   r     s
    
zInform7Lexer.__init__)*r   r   r   r   rC   r   r   r   r   r   r   r   r   r   r   r   _startr   token_variantsr   listr
   r   r	   	Multiliner   Headingr   r   r   r   r   r   r   Interpol
Subheadingr   r   r   r   
startswithr   r   r   r   r   r     s  

























	







 
 !

&r   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   )rF   r   stackr   r   r   r     s    z+Inform6TemplateLexer.get_tokens_unprocessedN)r   )r   r   r   r   rC   r   r   r   r   r   r   r   r     s
   r   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 3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  sr    




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/%srH   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_state@  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u r~dnd| f |d	ftd
tdd||||f t jfd|t ju 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_stateY  s6    
z&Tads3Lexer._make_attribute_value_stateu   ﻿z\{rT   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classesrl   r+   r   )r   rT   r*   z\}r.   )r&  rl   z(%s?)(%s*)(\())block?r!  r"  z(%s)(%s*)(\{)z(%s)(%s*)(:))r%  r&  rl   z->|%smainmain/object-bodyz(%s)(%s*)(=?))r   morer(  r-   )r   r  z(?=[\[\'"<(:]))r   r%  rX   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.   rX   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   catchrb   )r   r%  rl   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/  r0  z(function|method)\b)r   r'  r:  z	grammar\b)r   r%  rX   zinherited\b)r   	inheritedzlocal\b)r   
more/local
main/localz)(modify|replace|switch|throw|transient)\bznew\b)r   rl   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   rA  r(   r0  z(in|step)\brA  z[,:]z(%s)(%s*)(?=:)z(%s)(%s+)(%s)z\[+z(:)(%s*(?=[?=,:)]))z[?\]]+z[:)])r   multimethod?r"  rH   )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\\/]|/(?![/*]))+|\)r2   z(\[)(%s*)(badness)z
->|%s|[()]z(<<([^>]|>>>|>(?!>))*>>)+z(?=%s?%s*[({])r    )r   r&  rl   znegate\b)r!  r"  z(?=;)z->|\?|%sztransient\bz[:,]rl   r  z,+z
property\bz^%s*#(%s|[^\n]|(?<=\\)\n)*\n?z\\+\n+%s*#?|\n+|([^\S\n]|\\)+r1  r2  r3  r4  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]*);?TFZlistingZxmpz[^\\"]+z\\"*z"{3,}z[^\\']+z\\'*z'{3,}z\\"?z\\'?)Pr   r#  r%  rT   r)  r   r'  r,  r  rL  r$  r(  rF  r*  rE  r-  r0  r/  rA  r@  r.  r"  r!  rH  rG  rD  rI  r<  r>  rX   rK  r+  r.   r:  r?  rB  rC  r9  rl   r&  r=  r;  rJ  r  r2   r  r  r  r1  r2  r3  r4  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/sqtr5  r6  r7  r8  c                 k   s   d| j | j f }d}tj| |fi |D ]\}}}|dkrd|tju rtd|| j | j f |rd}n`|tju 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)rF   r   kwargsppZif_false_levelr   r   r#   r   r   r   r   A  s0    



z!Tads3Lexer.get_tokens_unprocessedc                 C   s8   d}d| v sd| v r|d7 }d| v r4d| v 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   X  s    zTads3Lexer.analyse_text)>r   r   r   r   rC   r   r   r   r   r   r   Z_comment_singleZ_comment_multiliner  r   Z	_no_quote	_operator_wsrM  r  r  r  r	   r   r   r   r   r   r   r   r   r   r   r   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   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