
    |e                         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e      Z G d d	e      Z G d
 de      Z G d de      Zy)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                   :   e Zd ZdZdZdZddgZdgZej                  ej                  z  ZdZdZd	Zd
ZdZi ddededej$                  df ed      gddefdez  ej*                  fgd ed      dedfdedfdef ed      gd ed      dedfdeededfd ez  efd!ez  edfgd" ed      d#edfd$edfded%fd&ez  efd'ez  efd(edfd)ez  edfd*ej2                  dfd+efd,ej6                  d-fd.ef ed      gd/d#ed0fd1efd2ez  edfd+ej<                  fd3ed4f ed"      gd5d$ed6fd7edf ed"      gd8d9edf ed"      gd:d(edf ed"      gd;d<ej>                  df ed:      gd= ed      d>ed?ed@e jB                  dfdAedBedC e"e jB                  e jF                  e jB                        dfdAedDedC e"e jB                  e jF                  e jB                        dfdEez  e j*                  dFfdEez  e jH                  dGfdHedIedJe%jL                  dfdKe%jN                  dfdLe%jP                  dfdMe%jR                  dfdNez   e"ee      dfdOez   e"eejT                  jV                        dfdPedQfdRez   e"eejX                        dfdSejZ                  dTf e.dUdVW      ejZ                  dfdXejZ                  df e.dYdZdV[      ejZ                  df e.d\dZdV[      ejZ                  dfeedfgd] ed=       ed      gd^d_e jF                  fd`ez  e j*                  fdae j*                  fdbe jF                  fdce jF                  fdEez  e j*                  dfgddd_e jF                  fd`ez  e jH                  fdae jH                  fdee jF                  fdfedgedhe jF                  fdfediedjedke jF                  fdfedledme jF                  fdEez  e jH                  dfgdndoez  e jH                  fdpe jH                  fdee jF                  fdEez  e jH                  dfgdq ed      eej^                  df ed=      gdr ed      d(efdsed]feej^                  d]f ed      gi dt ed      eejT                  jV                  df ed=      gd- ed      eej6                  df ed      gdu ed      eejT                  df ed      gdvdwe j`                  dfgdx ed      eejZ                  dfgd ed      dSefd3edfdedyf e.dzdZdV[      edfd{ed|fd}ed~fdedfdedfd e"ee      fdedfdedfdedfdedfdedfdedfdedfdedfdedfdedfdedfdedfdedfeejb                  dfgd ed      eejX                  df ed      gd ed      d3edfdefde jH                  dnfeejT                  fgd ed      d3efdedfd7ef ed      gd ed      dedf ed      gd ed      dedfeejb                  dfgd ed      d#edf ed      gdd2ez  efdej>                  df edt      gd ed      d3ed6fd(efdej>                  dfdej>                  fd7ef ed      gd ed      dedfeejb                  f ed=      gd ed      dsedfdedf ed      gd ed      d3edfdefd2ez  ed=fdedf ed      gi d ed      dsedf ed      gd ed      d3edfd(efdedtf edt      gd ed      dEez  e jH                  df ed      gd ed      dEez  e jH                  df ed      gdd_e jF                  f edn      gd ed       e.ddVW      edfdefdez  edfgd ed       ed=      gd ed       ed      gd ed       e.ddededƝW      ef ed      gd ed       e.ddVW      edf ed      gd ed      dedfdef e.ddVW      edfdefdedfdedfdedfdedfdedfdez  edfdej6                  d-fdedfdedfdedfdedf edޫ      gd ed      dedfdez  ej<                  dfededejX                  df ed      gd ed      d#edf ed      gd ed      d3edf ed      gd ed      d3edfd7ef ed      gd ed      d#edf ed      gd ed      dEez  e jH                  dfeedfgdd7ef ed      giZ2d Z3d Z4y)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  rootz\A(!%[^z]*[])+	directive_whitespace\s+![^%s]*r   \[zmany-valuesz:|(?=;)#pop<)
expression_expressionr%   z(?=sp\b)z(?=[z$0-9#a-zA-Z_]))r"   valuez\+\+|[%s]{1,2}(?!>)|~~?z(?=[()\[%s,?@{:;])r$   \(\))r"   
statementslocalsz>(?=(\s+|(![^%s]*))*[>;])z\+\+|[%s]{2}(?!>),z6&&?|\|\|?|[=~><]?=|[%s]{1,2}>?|\.\.?[&#]?|::|[<>+*/%%]z*(has|hasnt|in|notin|ofclass|or|provides)\bzsp\bz\?~?label?z[@{]_assembly-expression)#pushr%   z[\[\]]z[%s]>;#pop:3_for-expression#pop:2:_keyword-expressionz(from|near|to)\b_list-expression_object-expressionzhas\br&   [z][^@][]z([z])(@\{[0-9a-fA-F]*\})([z])z])(@.{2})([[%s])r"   dictionary-word)r"   stringz	\$[<>]?[+z][0-9]*\.?[0-9]*([eE][+z
]?[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childreneldereldestglkindirect	metaclassparentrandomsiblingyoungeryoungestz\b)suffixz#(?i)(Class|Object|Routine|String)\b)2Box__RoutineCA__PrCDefArt	CInDefArtCl__MsCopy__PrimitiveCP__TabDA__PrDB__PrDefArtDynam__StringEnglishNumber	Glk__WrapIA__PrIB__PrInDefArtMain__Meta__classOB__Move
OB__RemoveOC__ClOP__PrPrint__AddrPrint__PNamePrintShortNameRA__PrRA__ScRL__Pr	R_ProcessRT__ChGRT__ChGt	RT__ChLDB	RT__ChLDWRT__ChPRRT__ChPrintART__ChPrintCRT__ChPrintORT__ChPrintSRT__ChPSRT__ChR	RT__ChSTB	RT__ChSTWRT__ChTRT__ErrRT__TrPSRV__Pr	Symb__TabUnsigned__CompareWV__Pr	Z__Regionz(?i))prefixrK   )8callcopycreateDEBUGdestroyDICT_CHAR_SIZEDICT_ENTRY_BYTESDICT_IS_UNICODEDICT_WORD_SIZEDOUBLE_HI_INFINITYDOUBLE_HI_NANDOUBLE_HI_NINFINITYDOUBLE_LO_INFINITYDOUBLE_LO_NANDOUBLE_LO_NINFINITYfalseFLOAT_INFINITY	FLOAT_NANFLOAT_NINFINITYGOBJFIELD_CHAINGOBJFIELD_CHILDGOBJFIELD_NAMEGOBJFIELD_PARENTGOBJFIELD_PROPTABGOBJFIELD_SIBLINGGOBJ_EXT_STARTGOBJ_TOTAL_LENGTHGrammar__VersionINDIV_PROP_STARTINFIXinfix__watchingMODULE_MODEnamenothingNUM_ATTR_BYTESprintprint_to_arrayrecreate	remainingselfsenderSTRICT_MODEsw__var
sys__glob0
sys__glob1
sys__glob2sys_statusline_flagTARGET_GLULXTARGET_ZCODEtemp__global2temp__global3temp__global4temp_globaltrueUSE_MODULESWORDSIZEzvalue?r:   z[~^]+z[^~^\\@({%s]+z[({]z@\{[0-9a-fA-F]*\}z@.{2}r;   z\\z@(\\\s*[z]\s*)*@((\\\s*[z]\s*)*[0-9])*z]\s*)*[({]((\\\s*[z]\s*)*[0-9a-zA-Z_])*(\\\s*[z
]\s*)*[)}]z]\s*)*.(\\\s*[z]\s*)*.plain-stringz[^~^\\({\[\]%s]+z
[~^({\[\]]	_constant	constant*=_global	variable?r<   z\S\w*r>   )r   r)   r*   routine-name?)
abbreviateendif
dictionaryifdefiffalseifndefifnotiftrueifv3ifv5releaseserialswitchessystem_fileversionz(?i)(array|global)\b)r   directive-keyword?r   z(?i)attribute\b)r   alias?r   z(?i)class\b)object-body
duplicates
class-namez(?i)(constant|default)\b)r   r   z(?i)(end\b)(.*)z(?i)(extend|verb)\bgrammarz(?i)fake_action\b)r   r   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)r   _object-headz(?i)property\b)r   r   r   property-keyword*z(?i)replace\b)r   r   r   z(?i)statusline\b)r   r   z
(?i)stub\b)r   r   z(?i)trace\b)r   trace-keyword?r   z(?i)zcharacter\b)r   r   r   r   r*   z\*"\]r   zalias\b)r"   r   r   z#(?=[,;]|(class|has|private|with)\b)r   )r"   r$   r%   r   z(class|has|private|with)\br   class\bzclass-segmentz(has|private|with)\b)r6   r%   )r"   r   )r"   grammar-linez_directive-keywordr   z[/*]z(noun|scope)\bz=routinez(?i)global\br   )r"   message-string)r"   r   r   r   )r"   r   r   z_directive-keyword!)%additivealiasbufferclasscreaturedataerror
fatalerrorfirsthasheld
individualinitialinitstrlastlongmetamultimultiexcept	multiheldmultiinsidenounnumberonlyprivatereplacereversescopescorespecialr;   tableterminatingtimetopicwarningwithzstatic\bz[%s]{1,2}>|[+=]r   r   )r   r   r   z\b(?=(\s*|(![^z]))*[_a-zA-Z])r   )assemblyr   expressionslineslinkerobjectsoffonsymbolstokensverbsr)   z[;{}])boxbreakcontinuer   give	inversionnew_linequitreadremovereturnrfalsertruespacesr;   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)r4   r   r  zprint(_ret)?\b|(?=[%s])z
print-listz\.@opcodez#(?![agrnw]\$|#)zmove\b)r   r4   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+|(![^z]*))*\))r  r  )r1   r%   )r5   r%   r5   formr  )r"   r  )operandsr   r   )r-   r%   c              #     K   g }d}d }t        j                  | |      D ]  \  }}}|t        j                  u r|dk(  r	|||gg}d}nl|dkD  r*|t        vr|t
        vr|dz  }|j                  |||f       n=|dk(  r1|d   d   dk(  rt        |d   d<   |r|j                  d       |rd}|||f |t        vs|t
        vs|} |r|j                  d       |ry y w)Nin   r      ))	r   get_tokens_unprocessedr   Variabler   r
   appendr   pop)r   textobjectloop_queueobjectloop_token_countprevious_tokenindextokenr&   s           =/usr/lib/python3/dist-packages/pygments/lexers/int_fiction.pyr'  z#Inform6Lexer.get_tokens_unprocessed  s$     !##-#D#DTEI$K 	'E5%.5D=%*E5$9#: )*&'!+'E,=*a/* ''u(=>)Q.'+A.#518(+A.*.22155 +-/*UE))G#T(9!&%	'& "&&q)) s   B&C")C";C"C" C"c                 ^    d}t        j                  d| t         j                        r|dz  }|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+  results     r1  analyse_textzInform6Lexer.analyse_text  s,     99%tR]];dNF    N)5__name__
__module____qualname____doc__r   urlaliases	filenamesr3  	MULTILINEDOTALLflags_name_dash_dquote_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'  r8   r9  r1  r   r      s    D
&C$G	ILL299$EE
 EGG&HF&.97??K 
F 	TN("GNN3
F 	M"K/f-;12
F& 	M"$'*17;T '%/:"U*D&9
'F6 	M"K!>?K(K!AB)H4kB!E)84;.FN}&:HMMdOdjj(+eFO
7FX 	K!9:${M:gnn%;)L!!
YFh 	K*;'L!
iFr 	 '=9L! 
sFz 	;'L!
{FB 	w**F3&'
CFN 	M" '16;;G3:GDfkk6==&++>H'.8fkk6==&++>Hw/JKw/ABBGO\\6#

F36::v./%x$'?HU"h 4 45v?#GHU"HXt}}$EvN4<<!<= FNSU \\6#
 4T\\6J 	I e
- \\6#  S e- \\6#  D&!y=
OFJ 	GFO
KFT 	v}}%'7fmm$!6==1v}}%wv6
UFd 	v}}%'7fmm$FMM""#)==2 (08E]] 6>xH]]wv6
eF@ 	 7*FMM:FMM*FMM"wv6	
AFN 	M"DMM6*G
OFX 	M";;)DMM8,FO
YFf 	M"DMM((&1G
gFp 	M"DJJ'FO
qFz 	M"DMM6*FO
{FF 	#v||V,%
GFL 	M"DLL&)
MFX 	M";;'KAC  $*%9 i	!
 %g9;*LMW8:('%''4!89#Wi8!7,DEgz2/02'2JKw(AB%w,.DFw:< '+LMG%ABW<> 'DFDJJ ?@M'
YFj 	M"DMM6*FO
kFt 	M";'K 6==.1DMM"
uFD 	M";K(5M12
EFT 	M""78FO
UF` 	M"3T6BDJJ'
aFj 	M"K!FGFO
kFt 	{+*G,?,?HI
uF~ 	M";);,,o>$g&9&9:5M9:
FP	 	M"3T6BDJJG	
Q	F^	 	M"; 34K!9:()	
_	Fj	 	M";'k"{G44()
k	Fz	 	M";0FO
{	FF
 	M";';gy1I
G
FV
 	M"w/IJJK
W
F`
 	M"w/GHFO!
a
Fj
 	v}}%N#
k
Fv
 	M" C
 LQR f '"%'f= 
w
FN 	)*G
OFV 	)*FO
WF^ 	M"5AI8TV FO
_Fl 	M" FNSU f FO
mF@ 	M"K({# - 6;< i	!
 W%24w.!702%w0EFg79''17LIDJJ)7H% +{;;	*>@EF3
AFv 	!M"Jf-/789@ -28<dmmFO
#
wFL 	M"K(FO
MFV 	M"; BC67
WF` 	M";'5MST	
aFl 	M"K!CDFO
mFz 	M"w/KLGZ(
{FD 	5M;<
EFFP*>r9  r   c                   X
   e Zd ZdZdZdZddgZddgZej                  ej                  z  Zej                  Zej                  Zej                  Zdez  Zi Zg d	ZeD ]  Zi d
 eej"                  d         ddej                  z  ej,                  dfgddefdej0                  dfdez  ej4                  df ed      gddez  ej4                  fdez  ej4                  dfgddej0                  dfdededej4                  fdez  ej4                  dfdedededed fd!ez  edfd"ez  ej4                  fgd#d$ed%edefdez  ej:                  d&fd'ed(fd)ed*fdej0                  dfd+ed,ed- ee e e!d.d/0      e      fd1ed2ed3ed4ed5fd6ez  efgd(d7efdej0                  dfd+ed,ed- ee e e!d8d90      e      df ed      gd*d7efdej0                  dfd+ed,ed- ee e e!d.d:0      e      df ed      gdd;ej0                  fdej0                  d<fd=ej0                  dfgd&d>ez  ej:                  fd?ejD                  fdez  ej:                  dfgd5defdej0                  dfd@ez  edAfdBez  efdCez  ej4                  df ed      gdAd7efdej0                  dfdDedEf ed      gdEd7efdej0                  dfdFez  edGf edH      gdGdIedJedKej4                  fdIedLedKejF                  fdMedNedO e e!d#P      fdedQedRefdej0                  dfgd/d1edSedTej,                  fd1edUedVedKej,                  fd1edWedTej4                  dXfgd: e$d/      dY eeee      fgd9dZ ee e e!d#P      e      fgd[ez   eeejJ                  e      fd\ez   eee&eee      d]fd^ez   eee&eee      fd_ ee e e!d#P      e      fgd`ej,                  fd1edSedTej,                  dfd1edUedaej,                  fd1edWedTej4                  fdbej,                  fgd1edSedTej,                  fd1edUedcedKej,                  fd1edWedTej4                  dXfd1eddede&fdeez  ejJ                  fdfez   eee&e      dfdgez  efgdhee<   ej"                  D ]N  Z'e'dk(  r	 eej"                  e'         ee   e'<   e'jQ                  di      r6 e$dj       e$e      gee   e'   dkdl P  dm Z)yk)nr   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-option+i6-rootr   	+i6t-rootz[^%s]*)r   +pz(\|?\s)+r!   z+commentr9   )+main+titling+titling-string)rf  	+heading?rh  z[^%s]+r"   rg  z[^z.;:|z]+r7   z]{2}|(?<=[\sz])\|[\sr8   )r"   ri  z[.;:]|(?<=[\s%s])\|z[|%s]rf  z(?i)[^z:a\[(|z+textr3   z+phrase-definitionz
(?i)\bas\bz+use-optionz(\([z	])(.*?)([z]\)))rc  r   r`  )statei6t(z|(?<=[\s;:.z	]))\|\s|[z]{2,}ri  z(?i)[a(|%s]r   )rc  r   r   r)   ra  rb  z[^\[\]]+r.   r   z[^\[%s]+z\[.*?\]z
[%s]{4}\s+z+documentation-headingz	[%s]{1,3}z.(?i)(volume|book|part|chapter|section)\b[^%s]*z(?i)documentation\s+z+documentation-heading2z	[%s]{4}\sz+documentationr2   z(?i)(z)\s*(chapter|example)\s*:[^z]*z)\s*section\s*:[^z((z)\t.*?[r   rj  z\[]+|[z\[]z)@c( .*?)?([z]|\Z)z)@([z]+|Purpose:)[^z)@p( .*?)?([re  z(\{)(N)(\})z(\{)(\S[^}]*)?(\})z(\{[%s])(![^}]*)(\}?)z(\{[%s])(lines)(:)([^}]*)(\}?)+linesz (\{[%s])([^:}]*)(:?)([^}]*)(\}?)z(\(\+)(.*?)(\+\)|\Z)z[^@]+z]|Purpose:)r  z]|Purpose:)[^z)@\w*[ r    z(\{)([%s]endlines)(\})z[^@!{]+?([%s]|\Z)|.)+i6tre  rn  _ro  Nr   c                     |j                  dd      }|| j                  vr!| j                  j                  |      | _        n| j                  |   | _        t        j                  | fi | y )Nrk  r`  )get_all_tokens	__class__process_tokendef_tokensr   __init__)r   optionslevels      r1  rw  zInform7Lexer.__init__  s\    E#45(((>>::5ADL++E2DLD,G,r9  )*r:  r;  r<  r=  r   r>  r?  r@  r3  rA  rB  rC  r   rE  rF  rH  _startr
  token_variantsry  listr   rI  r
   	Multiliner   Headingr   r   rQ  r   r   r   r   Interpol
Subheadingr   rJ  r   r0  
startswithrw  r\  r9  r1  r   r     s    D
C$G!ILL299$EE""G$$Hx'F FJN fMX
\0089X
\222GOO$&X
 d#)):67"GOO9;./X
 W$goo67"GOOV< X
" )):6$+X6H7"GOO5FG3;WgN,.''14@H$goo6#X
4 *18<dC7"FMM7;t12m4)):6-2E:+,E$578CEF
 '8-.2KA(*D15X
P !)):6-2E:+ -F$134?A CI	J
 	#QX
d )):6-2E:+,E$578CEFLN eX
v g//0))73))62wX
@ w&6V__-7"FMM6:AX
J d#)):6&.FG%t,BXM&*KX
\ %)):6($0IJ	']X
h &)):6%t-=>!	(iX
t ($%,__64:HE##%(.9t7+-'/:DA)):6	uX
H .4h?"395(K".4h?$( IX
X )*+t[!IJ YX
` &+uT'A%'(aX
l *E1+w~~{CE2U:+wT%'(02 5u<+wT%'( )+uT'A%'( 7??+.4h?&*,2E:GOOL.4h?"w' /5h?"28%J".4h?$(%+X6@h&7*U2+w<fF'(2D9WX
u@ "(( 	ME#'(;(;E(B#CF5M% ##C(,3FOWU^+Lue$Ra(	MCfMP-r9  r   c                   (    e Zd ZdZdZdgZdgZddZy)r   z@
    For Inform 6 template code.

    .. versionadded:: 2.0
    zInform 6 templaterk  z*.i6tc                 0    t         j                  | ||      S )N)r   r'  )r   r+  stacks      r1  r'  z+Inform6TemplateLexer.get_tokens_unprocessed  s    224uEEr9  N))rd  )r:  r;  r<  r=  r   r?  r@  r'  r\  r9  r1  r   r     s"     DgG	IFr9  r   c                      e Zd ZdZdZdgZdgZej                  ej                  z  Z
dZdZdZdZd	Zd
ZdededZdededZdefdZefdZefdZi ddefdedfdefdedfdeded eej4                   eed      e      df ed      d efd!efd"ed#fg	d# ed$       ed%      gd&d'ed(fded)f ed      gdd'efded*fd+ed(fd,ed-fded.ed eej4                   eed      e      d/fdeded0 eej4                   eed      e      dfdeded1 eej@                   eed      e      d2f ed      d3ez  ed4f ed5      g
d5 ed$      deded6 eej@                   eed      e      d7f ed8      gd9ded:f ed      d;ed<f ed=      gd>ded:f ed       ed(      gd?d@efded*fd+ed(fdAe!jD                  fdeded1 eejF                   eed      e      f ed      gd ed?      d"edBfgdCdDe$jJ                  d(f ed?      d"edEfgd$g  ed      dFed7fdGedHfdedIfdJed(fdKe&jN                  d(fdLe&jP                  d(fdMe&jR                  d(fdNe&jT                  d(fdOe$jV                  dPfdQe$jX                  dRfdSe$jV                  dTfdUe$jX                  dVfdWe$jZ                  dXfdYe$jZ                  dZfd[e$jZ                  d\fd]e$jZ                  d^fd_ez   ee!jD                   eed      e!jD                        fd`ez   ee!jD                   eed      e      dafdbez   ee!jD                   eed      e!jD                        dcfddez   ee!jD                   eed            fdeez   ee!jD                   eed      e!jD                        dffdgez   ee! eed      e!jD                        dhfdiej\                  d(fdje!jD                  dkfdle!jD                  fdme!jD                  dnfdoe!jD                  dpfdqe!jD                  d(fdre!jD                  dsfdte!jD                  dufdve!jD                  dwfdxe!jD                  dyfdze!jD                  d{fd|e!jD                  d}fd~e!jD                  dfde!jD                  dfde!jD                  d(fde!jD                  dfde!j^                  d(fde!jD                  d=fde!jD                  dfde!jD                  dfdej\                  j`                  d(fde!jD                  dffdez   ee1jd                   eed      e1      dfde1jd                  fdej\                  d(fd4 ed$      eed(f ed(      gddFedfdGedBfdefded4fded(f ed      ee1d4fde1dfdez   ee1jd                   eed      e1jd                        fdefg
d ed       ed(      gdde1d(f ed      gddDe$jJ                  d8f ed      gddFedyfde!jD                  df ed4      gi dd+ed(fdedfde!df ed      gdeej@                  d(f ed      gddedf ed      gdded4f ed      gddeded eej@                   eed            d(fdededed eejf                   eed      ej@                        d(fdef ed$      eej@                  d(f ed(      gddez   ee eed            fdefdedfdedfdedf ed      gdded(f ed      gdde!d(f ed       ed(      gddedfde1d(f ed      gdde!d(f ed      gddefeejh                  df ed      gd ed      de!dsf eds      gddefdFedfd,edfeejf                  f ed      gd ed      de$jj                  d(fgd edī       ed      dez   ee eed      e!      d4fdez  efeej^                  f ed8      gd,d,ed(fgdde$jJ                  fdeded˝ed(feej4                  d(f ed      gi ddedf ed      eejf                  d(f ed(      gdde1jd                  d(f ed      ee1f ed(      gddFedfded)f ed      gdded(f edī      d~e!jD                  f ed      dez  efeej@                  fgddJed(fde!jD                  d(fde!jD                  feejf                  d(f ed       ed(      gddedf ed      ded(f ed(      gddefd'ed(fde!jD                  feej^                  f ed      gdeejF                  d(f ed       ed(      gddefded(f ed      eej@                  fgddedede6jn                  fee6jX                  fee6jp                  fdez  efgddOe$jV                  dfdQe$jX                  dfdSe$jV                  dfdUe$jX                  dfgddez  e$jr                  fgdde$jJ                  fdedede$jJ                  dfgddejt                  fgd edd      d edd      d edd      i d edd      d eddd      d eddd      d eddd      d eddd      d eddd      d eddd      d eddd      d eddd      d edd      d edd      d  edd      d edd      d edSdd      d edSdd      d edSdd      d edSdd       edUdd       edUdd       edUdd       edUdd       eedd       eedd       eedd       eedd      de$jZ                  fde$jZ                  fde$jZ                  d(fdSe$jZ                  fgd	e$jZ                  fd
e$jZ                  fde$jZ                  d(fdUe$jZ                  fgde$jZ                  fde$jZ                  fdSe$jZ                  d(fgd	e$jZ                  fde$jZ                  fdUe$jZ                  d(fgdZ;d Z<d Z=y(  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||r&  z(?:\\\n|[^\S\n]|Nc                    |rhdj                  |D cg c]M  }dt        j                  |j                               dt        j                  |j	                               dO c}      }|rdnd}|rt
        j                  nt
        j                  }| r	d|d|d	nd}| rd
nd|rdnd}d|z  }	g }
| r$|
d|z  |dfd|z  t
        j                  f||fgz  }
n|
j                  ||df       |
t        d      d|z  |fgz  }
|r0|
j                  d|d|dt        j                  dd|z  |	ff       nz|
d|d||d|dt        j                  fdt        j                  dd|z  |	ffdt        j                  dd|z  |	ffd|d||d|dt        j                  |	ft        d       gz  }
|
t        d!      d"|d||d|d#t
        j                  fd$|fgz  }
|
S c c}w )%N z(?:r  r&  r   '+|(?!{2})tdsz%sqtz%s{3,}r"   z\\%s+
s/verbatimz[^\\<&{}%s]+z\\?<(/|\\\\|(?!z)\\)z
(?=[\s=>])z%sqsz\\?<!([^><\\]|<(?!<)|\\z|\\.)*>?z(?i)\\?<listing(?=[\s=>]|\\>)z%sqs/listingz(?i)\\?<xmp(?=[\s=>]|\\>)z%sqs/xmpz\\?<([^\s=><\\z|\\.)*s/entitys/escape	\{([^}<\\|\\.)*\}z[\\&{}<])joinr3  escapelowerupperr   rQ  rJ  rP  r)  r   r   Tagr   r}  r  )tripledoubleverbatim_escapeccharr0  escaped_quotesr~   tag_state_namerj  s              r1  _make_string_statezTads3Lexer._make_string_state  s%   ww)1 3$% 02yy/C/1yy/C!E  3 4H t4!'V]]<BT48"(3b0#S2HI&T!5&1D&--0u E LL$v./L!t#U+
 	
  LL"H.((VVf_n$MO P ng78?8I8IK1488.61>BD-txx*v-~>@ ng78<! 
# E 	JD.'34:OOE% 	
 	
 ] 3s   AG!c                 P   |rdnd}| rdnd}| rdnd|rdndd}|rt         j                  nt         j                  }| r	d	|d
|dnd}|||dfdt        fdt	        t
        t         j                        d|z  fdt	        t
        t         j                        d|z  fdt
        d|z  fdt        j                  dfd|d||d|dt         j                  fd|d||d|dt        j                  ft        d      t        d      t        d      dt        j                  fgS ) Nr   r  {3,}r  r  r  r  qtr  r  r  r2   z
(\s|\\\n)+z	(=)(\\?")zdqs/%sz	(=)(\\?')zsqs/%sr   zuqs/%sz\\?>r"   r  r  r  r  z
([^\s=><\\z|\\.)+r  r  r  z[\\{}&])r   rQ  rJ  r
   r   r   r   r  r  	Attributer   )r  r  r  r  
quantifier
state_namer0  r  s           r1  _make_tag_statezTads3Lexer._make_tag_stateB  s   t4 &WC
(.B!6v38NO
!'V]]<BT48j)5(;D!8K?
"$8K?
"$;: 56dhh'D.'34:OOE D.'348NNDJL!J(!
 	
r9  c                    | dk(  rt         j                  n$| dk(  rt         j                  nt         j                  }|rdnd}|rdnd}|rt         j                  nt         j                  }|r	d|d|dnd}|||df|t         j                  u rdnd	| |d
ft	        d      t	        d      d|d||d|dt         j
                  fd|t         j                  u rdndz  |ft	        d      d|fgS )Nr   r  r  r  r  r  r  r0   z\\?r"   r  r  r  r  r  r  z([^\s"\'<%s{}\\&])+>r  z["\'\s&{<}\\])r   rQ  rJ  rZ  r   r  )	
terminatorhost_triplehost_doubler  r0  	host_charhost_quantifier
host_tokenr  s	            r1  _make_attribute_value_statez&Tads3Lexer._make_attribute_value_state[  s    ","4","4&,, 	'DT	%0'c&1V]]v}}
( /8C.1 	 "?3ZJ$4&@*MFL!JNG=>DooO#u/Dt#NJu%
 	
r9  r   u   ﻿z\{r   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)blockrl  z)(z*)(\()
whitespacerm  )block?/rootmore/parametersmain/parametersz\++z[^\s!"%-(*->@-_a-z{-~]+z(?!\Z)z	main/rootz
main/basic)r"   object-body/no-bracesclassesr   r  r/   r"   )r"   r   r.   z\}r3   )r  r   z?)()block?r  r  z*)(\{)z*)(:))r  r  r   z->|%smainzmain/object-bodyz*)(=?))r"   morer  r2   r  )r"   r  z(?=[\[\'"<(:]))r"   r  r   grammar-rules)r"   r  r  zblock/basicz[;:]+z	default\b)r  r  block/embedz>>)
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  r3   r   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  r   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  r   zinherited\b)r"   	inheritedzlocal\b)r"   
more/local
main/localz)(modify|replace|switch|throw|transient)\bznew\b)r"   r   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)\bz
more/basic)r  r  z\.{3}z->|\.\.z(?=;)|[:)\]]z\?)r  more/conditionalr  z(is|not)(%s+)(in\b)z[^\s!"%-_a-z{-~]+r  r  z:(?!:)r  r  )r"   r  r  r+   z(in|step)\br  r  r  z[,:]r  z*)(?=:)z+)(z\[+r  z(:)(%s*(?=[?=,:)]))z[?\]]+z[:)])r"   multimethod?r   )more/parameterr  r  z(?=[,)])r  zmultimethod\br  moder(   z(error|warn)\br  z\(+)r"   	variablesr  ztoken\br   z\)+zgrammar-tagr  a!  """([^\\"<]|""?(?!")|\\"+|\\.|<(?!<))+("{3,}|<<)|R"""([^\\"]|""?(?!")|\\"+|\\.)+"{3,}|'''([^\\'<]|''?(?!')|\\'+|\\.|<(?!<))+('{3,}|<<)|R'''([^\\']|''?(?!')|\\'+|\\.)+'{3,}|"([^\\"<]|\\.|<(?!<))+("|<<)|R"([^\\"]|\\.)+"|'([^\\'<]|\\.|<(?!<))+('|<<)|R'([^\\']|\\.)+'|([^)\s\\/]|/(?![/*]))+|\)r;   z(\[)(%s*)(badness)z
->|%s|[()]r  z(<<([^>]|>>>|>(?!>))*>>)+z(?=?z*[({])r  r#   )r"   r  r   r  znegate\br  )r  r  r  z(?=;)z->|\?|%sr   ztransient\br  z[:,]r  r  z,+z
property\br  r  ^z*#(z|[^\n]|(?<=\\)\n)*\n?z\\+\n+%s*#?|\n+|([^\S\n]|\\)+r  r  r  r  r  z\{\{|\}\}|%sr  z<<\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<<(%(_(z$|\\?.)|[\-+ ,#]|\[\d*\]?)*\d*\.?\d*(z/|\\?.)|\s*((else|otherwise)\s+)?(if|unless)\b)?)r  r  r  r  z'(?i)&(#(x[\da-f]+|\d+)|[a-z][\da-z]*);?TFztdqs/listinglistingztsqs/listingzdqs/listingzsqs/listingztdqs/xmpxmpztsqs/xmpzdqs/xmpzsqs/xmptdqttsqtdqtsqtzdqs/tdqtzdqs/tsqtzdqs/dqtzdqs/sqtz[^\\"]+z\\"*z"{3,}z[^\\']+z\\'*z'{3,}z\\"?z\\'?)zsqs/tdqtzsqs/tsqtzsqs/dqtzsqs/sqtzuqs/tdqtzuqs/tsqtzuqs/dqtzuqs/sqtr  r  r  r  c           	   +      K   d| j                   d| j                   d}d}t        j                  | |fi |D ]  \  }}}|dk(  rH|t        j                  u rt        j                  |d| j                   d| j                   d|      rzd}nw|t        j                  u r_|dk(  rt        j                  d	|z  |      rd}nDt        j                  d
|z  |      r|dz  }n%t        j                  d|z  |      r|dz  }nt        }|||f  y w)Nr  z*#*r   ifz+(0|nil)z*$\n?r%  z%sel(if|se)\bz%sifz	%sendif\b)_ws_ppr   r'  r   rI  r3  match)r   r+  kwargsppif_false_levelr/  r0  r&   s           r1  r'  z!Tads3Lexer.get_tokens_unprocessedC  s      KK5--dDCFC	&E5%"W__,HH $++t{{<=BD%&NGOO+&!+((#3b#8%@)*'B,6&!+,"3U;&!+#E%%%	&s   DDc                 >    d}d| v sd| v r|dz  }d| v r	d| v r|dz  }|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   __TADSGameMainDefg?versionInfoIFIDg?r\  r6  s     r1  r8  zTads3Lexer.analyse_textZ  s?     t}4cMF D Vt^cMFr9  )>r:  r;  r<  r=  r   r?  r@  r3  rB  rA  rC  _comment_single_comment_multiliner  rD  	_no_quote	_operator_wsr  r  r  r  r
   r   r   r   rW  r   r   r   r   r   r(  r   ReservedrL  r   r  r   rS  rR  OctrU  rQ  rJ  RegexrX  rY  rM  r   rK  r[  	ExceptionrZ  r   rI  r}  rP  Entityr
  r'  r8  r\  r9  r1  r   r     s    DiGIII$E6O7%GEI3I /1C
DC*9;MNF48' 0d 18 
4 -4
.OtK/K > @DWN "',dmmU4|%D!#BD L![!'/k*
O$ 	L!IJ
%O, 	 ;'K!89M""
-O6 	;K)K(; 45"'-dmmU4|%D!#=? "',dmmU4|%D!#$+- !&s+dmmU4|%D!#:< L!	!;7&'%
7O^ 	L!!&,dmmU4|%D!#$<> H
_Ol 	K!23L!JL 56
mO| 	K!23L!FO
}OF 	{#K)K(7++, %s+djj%L"A!#$ L!	
GOZ 	M"./
[Ob 	FOOV,M"45
cOl 	 U
L!U
K!9:U
 K!>?U
 K "H I	U
 +v.U
 

F3U
 F\\6#U
 V,U
 V^^V,U
 V]]$45U
 V]]$45U
 6==/2U
 6==/2U
  fll$45!U
" fll$45#U
$ FLL/2%U
& FLL/2'U
* (#-g&&d,(G&&()+U
0 +S0g&&d,(G!#EG1U
8 )3.g&&d,(G&&(>@9U
@ 4c9g&&d,(GHJAU
D *C/g&&d,(G&&()=?EU
J *C/guT>&&()BDKU
R O\\6#SU
V ()9)9;LMWU
X AYU
\ ))+<=]U
^ ))79_U
b 01A1A6JcU
d ()9)9"$eU
h ((*:;iU
j '**,<=kU
l  !1!113mU
p $W%5%502qU
t 7++9;uU
x W--/DEyU
z ))13{U
~ :7;K;KU
B w''):;CU
D g..7EU
F '**,MNGU
H G,,.BCIU
J w//,.KU
N ++V4OU
P G,,.BCQU
T ,c1hmmU4|%D !BDUU
Z X]]+[U
^8
 :>vO_U
mOX 	L!D&!FO
YOb 	K!67K!12{#f-k62L!&)HBC#c)hmmU4|%Dmm%& "5)
cO~ 	L!FO
OH 	&)FO
IOR 	FOOX.FO
SO\ 	K!EF))+ABFO
]Of 	K(;-Wl3FO	
gOt 	DMM6*L!
uO| 	;-FO
}OF 	k6*FO
GOP 	"'-dmmU4|%DEvO!&U3djj%L"Amm%&,. [!L!DMM6*FO

QOf 	#c)k5\#BCE$k#;<; 12; :;FO
gOx 	$'FO
yO@ 	w/L!FO
AON 	;'Hf%FO
OOX 	0L!
YO` 	[!DNN$9:L!
aOj 	L!"78)*
kOt 	[!K/;0DJJL!
uOB	 	L!* ,2<<A	
C	OV	 	HL!"S(k5\#BGL Y&4DMM"H	
W	Oj	 	;'
k	Op	 	)6??;"'-tV<DMM6*L!	
q	O|	 	; <=L!DJJ'FO	
}	OH
 	(--0L!!FO	
I
OT
 	K!GHK!89L!
U
O^
 	tV$HW--.L!9$k2DMM"
_
Or
 	+v.'**F3W--.DJJ'L!FO
s
OB 	k7+L!;'FO	
CON 	K ;'G,,-DMM"L!
OO\ 	DJJ'L!FO
]Of 	K K(L!DMM"	
gOv 	179KL__gnn-!2!23-6=
wOH 	V]]F+V]]F+6==%(6==%(	
IOT 	w&6
UOZ 	8 :@J
 =DWN__CE
[Ol 	7E
mOr 	"4.sOt 	"4/uOv 	!%.wOx 	!%/yOz 	*4yA{O| 	*4	B}O~ 	)%yAO@ 	)%	BAOB 	&tT59COD 	&tUE:EOF 	%eT59GOH 	%eUE:ION 	d+OOP 	e,QOR 	ud+SOT 	ue,UOV 	/dDAWOX 	/dEBYOZ 	.tUDA[O\ 	.tUEB]O^ 0dDA/dEB.tUDA.tUEB/	4F/	4G.y%F.y%G &fll#v||V,6<< 	
 &fll#v||V,6<< 	
 &fll#6<<(
 &fll#6<<(
UOFb&.r9  r   )r=  r3  pygments.lexerr   r   r   r   r   r   r	   pygments.tokenr
   r   r   r   r   r   r   r   r   r   __all__r   r   r   r   r\  r9  r1  <module>r      sn    
  ( ( (F: FRI-: I-XF< Fl	 l	r9  