o
    3Ih                     @   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-2025 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dZe	j
e	jB 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 d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 d#efd$e d%edfgd&edd'edfd(edfded)fd*e d+efd"e d,efd-edfd.e d/edfd0ejdfd1efd2ejd3fd4efedgd5d'ed6fd7efd8e d9edfd1ejfd:ed;fed&gd<d(ed=fd>edfed&gd?d@edfed&gdAd-edfed&gdBdCej dfedAgdDedd8e dEe dFe!j"dfdGe dHe dIe#e!j"e!j$e!j"dfdGe dJe dIe#e!j"e!j$e!j"dfd8e dFe!jdKfd8e dFe!j%dLfdMe dNe dOe&j'dfdPe&j(dfdQe&j)dfdRe&j*dfdSe dTe#eedfdUe dTe#eej+j,dfdVedWfdXe dTe#eej-dfdYej.dZfe/d[d\d]ej.dfd^ej.dfe/d_d`d\daej.dfe/dbd`d\daej.dfeedfgdcedDedgdddee de!j$fdfe dge!jfdhe!jfdie!j$fdje!j$fd8e dFe!jdfgdkdle!j$fdme dge!j%fdne!j%fdoe!j$fdpe dqe dre!j$fdpe dse dte due!j$fdpe dve dwe!j$fd8e dFe!j%dfgdxdye dge!j%fdze!j%fdoe!j$fd8e dFe!j%dfgd{edeej0dfedDgd|edd-efd}edcfeej0dcfedgi d~edeej+j,dfedDgd3edeejdfedgdedeej+dfedgdde!j1dfgdedeej.dfgdeddYefd:edfdedfe/dd`d\daedfdedfdedfdedfdedfde#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j2dfgdedeej-dfedgdedd:edfdefde!j%dxfeej+fgdedd:efdedfd>efedgdeddedfedgdeddedfeej2dfgdedd'edfedgdd8e d9efdej dfed~gdedd:ed=fd-efdej dfdej fd>efedgdeddedfeej2fedDgdedd}edfdedfedgdedd:edfdefd8e d9edDfdedfedgi dedd}edfedgdedd:edfd-efded~fed~gdedd8e dFe!j%dfedăgdedd8e dFe!j%dfedgddle!j$fedxgdede/dd\d]edfdefd8e d˝edfgdedȃedDgdedȃedgdede/dde de dНd]efedgdede/dd\d]edfedgdeddedfdefe/dd\d]edfdefdedfdedfdedfdedfdedfde dIedfdejd3fdedfdedfdedfdedfedgdeddedfde dejdfe de dej-dfedgdedd'edfedgdedd:edfedgdedd:edfd>efedgdedd'edfedgdedd8e dFe!j%dfd8e dedfeedfgdd>efedgiZ3dd Z4dd Z5dS )r   z#
    For Inform 6 source code.
    zInform 6zhttp://inform-fiction.org/inform6i6z*.inf2.0z[a-zA-Z_]\w*u	   \-‐-—u   "“”u   '‘’u
   \n  rootz\A(!%[^z]*[])+	directive_whitespace\s+![^]*r   \[zmany-valuesz:|(?=;)#pop<)
expression_expressionr%   z(?=sp\b)z(?=[z$0-9#a-zA-Z_]))r"   valuez\+\+|[z]{1,2}(?!>)|~~?z(?=[()\[z,?@{:;])r$   \(\))r"   
statementslocalsz>(?=(\s+|(![^z
]*))*[>;])z	]{2}(?!>),z&&?|\|\|?|[=~><]?=|[z]{1,2}>?|\.\.?[&#]?|::|[<>+*/%]z*(has|hasnt|in|notin|ofclass|or|provides)\bzsp\bz\?~?label?z[@{]_assembly-expression)#pushr%   z[\[\]][z]>;#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])(@.{2})([)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\$)()z(#g\$)(z#[nw]\$)r"   obsolete-dictionary-wordz(#r\$)(#)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))prefixrL   )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
[^~^/\\@({]+z[/({]z@\{[0-9a-fA-F]*\}z@.{2}r;   z[~^]+z	[^~^\\@({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[^~^\\({\[\]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)r7   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]{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)r5   r   r  zprint(_ret)?\b|(?=[z
print-listz\.@opcodez#(?![agrnw]\$|#)zmove\b)r   r5   r%   r  z:(bold|fixed|from|near|off|on|reverse|roman|to|underline)\bzN(a|A|an|address|char|name|number|object|property|string|the|The)\b(?=(\s+|(![^z]*))*\))z(?=(\s+|(![^r  r  )r2   r%   )r6   r%   r6   formr"  )r"   r  )operandsr   z]{1,2}>r#  )r-   r%   c                 c   s    g }d}d }t | |D ]^\}}}|tju r$|dkr$|||gg}d}n=|dkr=|tvr4|tvr4|d8 }||||f n$|dkr[|d d dkrOt|d d< |rY|dV  |sQd}|||fV  |tvrk|tvrk|}q|rx|dV  |snd S d S )Nin   r      r<   )	r   get_tokens_unprocessedr   Variabler
   r	   appendr   pop)r   textobjectloop_queueobjectloop_token_countprevious_tokenindextokenr&    r2  [/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/pygments/lexers/int_fiction.pyr(    s8   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,  resultr2  r2  r3  analyse_text  s   zInform6Lexer.analyse_textN)6__name__
__module____qualname____doc__r   urlaliases	filenamesversion_addedr4  	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(  r9  r2  r2  r2  r3  r      s*   


,49=A
G






          '
  ,
  3  8
  =
  C
  F
  L
  u
  z
           
        
     
    )    0    6    >    D    L    Q    V    \    h    l    p    w     
            (      -      2      8      ?      E      Kr   c                   @   s&  e Zd ZdZdZdZddgZddgZdZe	j
e	jB ZejZejZejZd	e d
Zi Zg dZeD ]Zi deejd ddej dejdfgddefdejdfde dejdfedgdde dejfde dejdfgddejdfde de dejfde dejdfde de de ded fd!e d"edfd#e dejfgd$d%e d&e defde dejd'fd(ed)fd*ed+fdejdfd,e d-e d.ee e!e"d/d0d1e fd2e d3e d4e d5ed6fd7e defgd)d8efdejdfd,e d-e d.ee e!e"d9d:d1e dfedgd+d8efdejdfd,e d-e d.ee e!e"d/d;d1e dfedgdd<ejfdejd=fd>ejdfgd'd?e dejfd@ej#fde dejdfgd6defdejdfde dAedBfde dCefdDe dejdfedgdBd8efdejdfdEedFfedgdFd8efdejdfde dGedHfedIgdHdJe dKe dejfdJe dLe dej$fdMe dNe dOe!e"d$dPfde dQe dRefdejdfgd0d2e dSe dTejfd2e dUe dVe dejfd2e dWe dTejdXfgd;e%d0dYee ee fgd:dZee e!e"d$dPe fgd[e d\ee ej&e fd[e d]ee e'e ee d^fd[e d_ee e'e ee fd`ee e!e"d$dPe fgdaejfd2e dSe dTejdfd2e dUe dbejfd2e dWe dTejfdcejfgd2e dSe dTejfd2e dUe dde dejfd2e dWe dTejdXfd2e dee de'fdfe dej&fdge dhee e'e dfdie djefgdkee< ejD ]+Z(e(dkrqeeje( ee e(< e()dls
e%dme%egee e( dndo< qq1dpdq Z*dnS )rr   z#
    For Inform 7 source code.
    zInform 7zhttp://inform7.com/inform7i7z*.niz*.i7xr   z\A|(?<=[r9   )+i6t-not-inline+i6t-inline+i6t-use-option+i6-rootr   	+i6t-rootz[^r    )r   +pz(\|?\s)+r!   z+commentr/   r8   )+main+titling+titling-string)re  	+heading?rg  r   r"   rf  z.;:|z]{2}|(?<=[\sz])\|[\s)r"   rh  z[.;:]|(?<=[\sz])\|z[|re  z(?i)[^z:a\[(|z+textr4   z+phrase-definitionz
(?i)\bas\bz+use-optionz(\([z	])(.*?)([z]\)))rb  r   r_  )statei6t(z|(?<=[\s;:.z	]))\|\s|[z]{2,}rh  z(?i)[a(|r   )rb  r   r   r)   r`  ra  z[^\[\]]+r.   r   z[^\[z\[.*?\]z]{4}\s+z+documentation-headingz]{1,3}z*(?i)(volume|book|part|chapter|section)\b[^z(?i)documentation\s+z+documentation-heading2z]{4}\sz+documentationr3   z(?i)(z)\s*(chapter|example)\s*:[^z)\s*section\s*:[^z((z)\t.*?[r   ri  z\[]+|[z\[]z)@c( .*?)?([z]|\Z)z)@([z]+|Purpose:)[^z)@p( .*?)?([rd  z(\{)(N)(\})z(\{)(\S[^}]*)?(\})z(\{[z])(![^}]*)(\}?)z])(lines)(:)([^}]*)(\}?)+linesz])([^:}]*)(:?)([^}]*)(\}?)z(\(\+)(.*?)(\+\)|\Z)z[^@]+z]|Purpose:)r   z]|Purpose:)[^z)@\w*[ r   z(\{)([z]endlines)(\})z
[^@!{]+?([z]|\Z)|.)+i6trd  rm  _rn  Nr   c                 K   sH   | dd}|| jvr| j|| _n| j| | _tj| fi | d S )Nrj  r_  )get_all_tokens	__class__process_tokendef_tokensr   __init__)r   optionslevelr2  r2  r3  ru    s
   
zInform7Lexer.__init__)+r:  r;  r<  r=  r   r>  r?  r@  rA  r4  rB  rC  rD  r   rF  rG  rI  _startr  token_variantsrw  listr
   rJ  r	   	Multiliner   Headingr   r   rR  r   r   r   r   Interpol
Subheadingr   rK  r   r1  
startswithru  r2  r2  r2  r3  r     s   



'
1
:

?D

M
S
Y

bjn
t





  

 r   c                   @   s.   e Zd ZdZdZdgZdgZdZd
ddZd	S )r   z%
    For Inform 6 template code.
    zInform 6 templaterj  z*.i6tr   rc  c                 C   s   t | ||S )N)r   r(  )r   r,  stackr2  r2  r3  r(    s   z+Inform6TemplateLexer.get_tokens_unprocessedN)r  )	r:  r;  r<  r=  r   r?  r@  rA  r(  r2  r2  r2  r3  r     s    r   c                   @   s  e Zd ZdZdZdgZdgZdZdZe	j
e	jB 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dZefddZefd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jeed"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d0ed-fd1ed2fde d3e d!eejeed"d#ed4fde d e d5eejeed"d#edfde d e d6eej"eed"d#ed7fed"d8e ed9fe!d:g
d:ed)de d e d;eej"eed"d#ed<fe!d=gd>ded?fed"d@edAfe!dBgdCded?fed"e!d-gdDdEefded/fd0ed-fdFe#j$fde d e d6eej%eed"d#efed"gdedDd'edGfgdHdIe&j'd-fedDd'edJfgd)g ed"dKed<fdLedMfdedNfdOed-fdPe(j)d-fdQe(j*d-fdRe(j+d-fdSe(j,d-f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/dafdbe&j/dcfdde deee#j$eed"d#e#j$fdfe d!ee#j$eed"d#edgfdhe diee#j$eed"d#e#j$djfdke dlee#j$eed"d#fdme dnee#j$eed"d#e#j$dofdpe dnee#eed"d#e#j$dqfdrej0d-fdse#j$dtfdue#j$fdve#j$dwfdxe#j$dyfdze#j$d-fd{e#j$d|fd}e#j$d~fde#j$dfde#j$dfde#j$dfde#j$dfde#j$dfde#j$dfde#j$d-fde#j$dfde#j1d-fde#j$dBfde#j$dfde#j$dfdej0j2d-fde#j$dofde d!ee3j4eed"d#e3dfde3j4fdej0d-fd9ed)eed-fe!d-gddKedfdLedGfdefded9fded-fed"ee3d9fde3dfde dee3j4eed"d#e3j4fde fg
dede!d-gdde3d-fedgddIe&j'd=fedgddKedfde#j$dfed9gi dd0ed-fdedfde#dfedgdeej"d-fed"gddedfedgdded9fedgdde d e deej"eed"d#d-fde d e de deej5eed"d#ej"d-fdefed)eej"d-fe!d-gdde deeeed"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de3d-fedgdde#d-fed"gddefeej6dfed"gded"de#d|fe!d|gddefdKedfd1edfeej5fed"gded"de&j7d-fgdedσed"de dѝeeeed"d#e#d9fd8e dҝefeej1fe!d=gd1d1ed-fgdde&j'fde de dםed-feejd-fed"gi ddedfed"eej5d-fe!d-gdde3j4d-fed"ee3fe!d-gddKedfded.fed"gdded-fedσde#j$fed"de efeej"fgddOed-fde#j$d-fde#j$feej5d-fed"e!d-gddedfed"ded-fe!d-gddefd,ed-fde#j$feej1fed"gdeej%d-fed"e!d-gddefded-fed"eej"fgd"de de de8j9fee8j.fee8j:fde defgddTe&j-dfdVe&j.dfdXe&j-dfdZe&j.dfgdde e&j;fgdde&j'fde de de&j'dfgddej<fgdedddedd ded di ded d deddddedd dded ddded d ddeddddedd dd	ed ddd
ed d ddedddedd ded dded d dedXdddedXdd dedXd ddedXd d edZddedZdd edZd dedZd d eeddeedd eed deed d de&j/fde&j/fde&j/d-fdXe&j/fgde&j/fde&j/fde&j/d-fdZe&j/fgde&j/fde&j/fdXe&j/d-fgde&j/fde&j/fdZe&j/d-fgdZ=dd Z>dd Z?dS (   r   z!
    For TADS 3 source code.
    zTADS 3tads3z*.tzhttps://www.tads.org z(?://(?:[^\\\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           
      C   s  |rd dd |D }|rdnd}|rtjntj}| r%d| d| dnd}d	| r-d
nd|r2dnd}| d}g }	| rU|	| d|dfd| dtjf||fg7 }	n|	||df |	tdd| d|fg7 }	|r|	d| d| dtj	d| d|ff n>|	d| d| | d| dt
jfdtj	d| d|ffdtj	d| d |ffd!| d| | d| d"tj	|ftd#g7 }	|	td$d%| d| | d| d&tjfd'|fg7 }	|	S )(Nr  c              	   S   s2   g | ]}d t |  dt |  dqS )z(?:r  r<   )r4  escapelowerupper).0cr2  r2  r3  
<listcomp>  s    *z1Tads3Lexer._make_string_state.<locals>.<listcomp>r   '+|(?!{2}){}{}tdsqt{3,}r"   r   +
s/verbatimz[^\\<&{}r   z\\?<(/|\\\\|(?!z)\\)z
(?=[\s=>])qsz\\?<!([^><\\]|<(?!<)|\\r  z|\\.)*>?z(?i)\\?<listing(?=[\s=>]|\\>)z
qs/listingz(?i)\\?<xmp(?=[\s=>]|\\>)zqs/xmpz\\?<([^\s=><\\z|\\.)*s/entitys/escape	\{([^}<\\|\\.)*\}z[\\&{}<])joinr   rR  rK  formatrQ  r*  r   r   Tagr
   r{  r}  )
tripledoubleverbatim_escapecharr1  escaped_quotesr   tag_state_nameri  r2  r2  r3  _make_string_state  sX   

 
 zTads3Lexer._make_string_statec                 C   s  |rdnd}| r
dnd}d | rdnd|rdnd}|rtjntj}| r-d	| d
| dnd}| | |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| 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  r  r  z{}{}qtr  r  r  r  r  r  r3   z
(\s|\\\n)+z	(=)(\\?")zdqs/z	(=)(\\?')zsqs/r   zuqs/z\\?>r"   r  r  r  r  z
([^\s=><\\z|\\.)+r  r  r  z[\\{}&])r  r   rR  rK  r	   r   r   r   r  r}  	Attributer   )r  r  r  r  
quantifier
state_namer1  r  r2  r2  r3  _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}|rdnd}|r"t jnt j}|r0d| d| dnd}| | |dfd	|t ju rCdnd
| |dftdtdd| d| | d| dt jfd|t ju rgdnd |ftdd|fgS )Nr   r  r  r  r  r  r  r1   r  z\\?r"   r  r  r  r  r  r  z([^\s"\'<%s{}\\&])+>r  z["\'\s&{<}\\])r   rR  rK  r[  r  r   r}  )	
terminatorhost_triplehost_doubler  r1  	host_charhost_quantifier
host_tokenr  r2  r2  r3  _make_attribute_value_stateQ  s.    z&Tads3Lexer._make_attribute_value_stater   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)blockrk  z)(z*)(\()
whitespacerl  )block?/rootmore/parametersmain/parametersz\++z[^\s!"%-(*->@-_a-z{-~]+z(?!\Z)z	main/rootz
main/basic)r"   object-body/no-bracesclassesr   r  r0   r"   )r"   r   r.   z\}r4   )r  r   z?)()block?r  r  z*)(\{)z*)(:))r  r  r   z->|mainzmain/object-bodyz*)(=?))r"   morer  r3   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)(z+)(object\b)z(function|method)()r"   r  r  r  z	(modify)(z+)(grammar\b))r"   r  r4   r   z(new)(z+(?=(?:function|method)\b))z	(object)(z+)(template\b))r"   templatez	(string)()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)()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)(z+)(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(:)(z*(?=[?=,:)]))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(\[)(z*)(badness)z|[()]r  z(<<([^>]|>>>|>(?!>))*>>)+z(?=?z*[({])r  r#   )r"   r  r   r  znegate\br  )r  r  r  z(?=;)z->|\?|r   ztransient\br  z[:,]r  r  z,+z
property\br  r  ^z*#(z|[^\n]|(?<=\\)\n)*\n?z\\+\n+z*#?|\n+|([^\S\n]|\\)+r  r  r  r  r  z
\{\{|\}\}|r  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   s    d| j  d| j  d}d}tj| |fi |D ][\}}}|dkr:|tju r9t| d| j  d| j  d|r9d}n3|tju rk|dkrOt| d	|rOd}nt| d|r]|d7 }nt| d
|rj|d8 }nt}|||fV  qd S )Nr  z*#*r   ifz+(0|nil)z*$\n?r'  zel(if|se)\bzendif\b)_ws_ppr   r(  r
   rJ  r4  match)r   r,  kwargsppif_false_levelr0  r1  r&   r2  r2  r3  r(  8  s0   
 

z!Tads3Lexer.get_tokens_unprocessedc                 C   s8   d}d| v s
d| v r|d7 }d| v rd| v r|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   __TADSGameMainDefg?versionInfoIFIDg?r2  r7  r2  r2  r3  r9  N  s   zTads3Lexer.analyse_text)@r:  r;  r<  r=  r   r?  r@  r>  rA  r4  rC  rB  rD  _comment_single_comment_multiliner  rE  	_no_quote	_operator_wsr  r  r  r  r	   r   r   r   rX  r   r   r   r   r   r)  r   ReservedrM  r   r}  r   rT  rS  OctrV  rR  rK  RegexrY  rZ  rN  r   rL  r\  	Exceptionr[  r
   rJ  r{  rQ  Entityr  r(  r9  r2  r2  r2  r3  r     s   -
/6>CMQ
V















 
"
%)
+,
./
12
4
568:
<=?
A
B
C
DEG
H
JMO -  2
  @  E  J
  O
  T  [
  _  d  i
  t
  }       	        
            #    -
    7    :
    @
    F
    L    Q    [

    c    i    p
    u    }     



                        
                               !      "      #      $      %      &      '      *      +      ,      -      .      /      0      1      
2










   
   Tr   )r=  r4  pygments.lexerr   r   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   r   r   __all__r   r   r   r   r2  r2  r2  r3  <module>   s    
$0     J