o
    Zh                     @   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-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroupsusingthisdefaultwords)
TextCommentOperatorKeywordNameStringNumberPunctuationErrorGeneric)Inform6LexerInform6TemplateLexerInform7Lexer
Tads3Lexerc                   @   s	  e Zd ZdZdZdZddgZdgZej	ej
B ZdZdZd	Zd
ZdZi ddeef ejdfedgddefde 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f edfde efde edfgd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,d ed-fd.efd/e edfd(ejfd0ed1fedgd2d!ed3fd4edfedgd5d6edfedgd7d%edfedgd8d9ejdfed7gd:edd;eef e j!dfd<eef e"e j!e j#e j!dfd=eef e"e j!e j#e j!dfd>e e jd?fd>e e j$d@fdAeef e%j&dfdBe%j'dfdCe%j(dfdDe%j)dfdEe e"eedfdFe e"eej*j+dfdGedHfdIe e"eej,dfdJej-dKfe.dLdMdNej-dfdOej-dfe.dPdQdMdRej-dfe.dSdQdMdRej-dfeedfgdTed:edgdUdVe j#fdWe e jfdXe jfdYe j#fdZe j#fd>e e jdfgd[dVe j#fdWe e j$fdXe j$fd\e j#fd]eef e j#fd^eeef e j#fd_eef e j#fd>e e j$dfgd`dae e j$fdbe j$fd\e j#fd>e e j$dfgdcedeej/dfed:gddedd%efdeedTfeej/dTfedgi dfedeej*j+dfed:gd*edeejdfedgdgedeej*dfedgdhdie j0dfgdjedeej-dfgdeddJefd0edfdedkfe.dldQdMdRedfdmednfdoedpfdqedrfdsedtfdue"eefdvedwfdxedyfdzed{fd|ed}fd~edyfdedfdedfdedfdedfdedfdedfdedfdedfeej1dfgdedeej,dfedgdedd0edfdefde j$d`feej*fgdedd0efdedfd4efedgdeddedfedgdeddedfeej1dfgdedd edfedgdd/e efdejdfedfgdedd0ed3fd%efdejdfdejfd4efedgdeddedfeej1fed:gdweddeedfdedfedgdedd0edfdefd/e ed:fdedfedgi deddeedfedgd{edd0edfd%efdedffedfgdedd>e e j$dfedgdedd>e e j$dfedgddVe j#fed`gdede.ddMdNedfdefde edfgdeded:gdededgdede.ddeef dNefedgdede.ddMdNedfedgdeddedfdefe.ddMdN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deddedfde ejdfdeef ej,dfedgdedd edfedgdedd0edfedփgdedd0edfd4efed׃gdedd edfedgdedd>e e j$dfeedfgdd4efed܃giZ2ddބ 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  rootz\A(!%%[^%s]*[%s])+	directive_whitespace\s+![^%s]*r   \[zmany-valuesz:|(?=;)#pop<)
expression_expressionr"   z(?=sp\b)z(?=[%s%s$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[%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?   )8callcopycreateDEBUGdestroyZDICT_CHAR_SIZEZDICT_ENTRY_BYTESZDICT_IS_UNICODEZDICT_WORD_SIZEZDOUBLE_HI_INFINITYZDOUBLE_HI_NANZDOUBLE_HI_NINFINITYZDOUBLE_LO_INFINITYZDOUBLE_LO_NANZDOUBLE_LO_NINFINITYfalseZFLOAT_INFINITYZ	FLOAT_NANZFLOAT_NINFINITYZGOBJFIELD_CHAINZGOBJFIELD_CHILDZGOBJFIELD_NAMEZGOBJFIELD_PARENTZGOBJFIELD_PROPTABZGOBJFIELD_SIBLINGZGOBJ_EXT_STARTZGOBJ_TOTAL_LENGTHZGrammar__VersionZINDIV_PROP_STARTZINFIXZinfix__watchingZMODULE_MODEnameZnothingZNUM_ATTR_BYTESprintZprint_to_arrayZrecreate	remainingselfZsenderZSTRICT_MODEZsw__varZ
sys__glob0Z
sys__glob1Z
sys__glob2Zsys_statusline_flagZTARGET_GLULXZTARGET_ZCODEZtemp__global2Ztemp__global3Ztemp__global4Ztemp_globaltrueZUSE_MODULESZWORDSIZEzvalue?r5   z[~^]+z[^~^\\@({%s]+z[({]z@\{[0-9a-fA-F]*\}z@.{2}r6   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*)*.plain-stringz[^~^\\({\[\]%s]+z
[~^({\[\]]	_constant	constant*=_global	variable?r7   z\S\w*r9   )r   r&   r'   routine-name?)Z
abbreviateendif
dictionaryZifdefZiffalseZifndefZifnotZiftrueZifv3Zifv5releaseserialZswitchesZsystem_fileversionz(?i)(array|global)\b)r   directive-keyword?rP   z(?i)attribute\b)r   alias?rM   z(?i)class\b)object-body
duplicates
class-namez(?i)(constant|default)\b)r   rN   z(?i)(end\b)(.*)z(?i)(extend|verb)\bgrammarz(?i)fake_action\b)r   rM   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)rZ   _object-headz(?i)property\b)r   rY   rM   property-keyword*z(?i)replace\b)r   rR   rR   z(?i)statusline\b)r   rX   z
(?i)stub\b)r   rR   z(?i)trace\b)r   trace-keyword?rc   z(?i)zcharacter\b)r   rX   rX   rR   r'   z\*"\]rY   zalias\b)r   rM   r\   z#(?=[,;]|(class|has|private|with)\b)r[   )r   r!   r"   ra   z(class|has|private|with)\brZ   class\bzclass-segmentz(has|private|with)\b)r3   r"   )r   r   )r   grammar-linez_directive-keywordrg   z[/*]z(noun|scope)\bz=routinez(?i)global\br`   )r   message-string)r   r_   rX   r_   )r   rL   rh   z_directive-keyword!)%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scorespecialr6   tableZterminatingtimeZtopicwarningwithzstatic\bz[%s]{1,2}>|[+=]rX   rb   )ri   rq   rt   z#\b(?=(\s*|(![^%s]*[%s]))*[_a-zA-Z])rc   )ZassemblyrT   ZexpressionslinesZlinkerobjectsoffonsymbolstokensZverbsr&   z[;{}])boxbreakcontinuer   ZgiveZ	inversionnew_linequitreadremovereturnZrfalseZrtruespacesr6   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)r1   rQ   r   zprint(_ret)?\b|(?=[%s])z
print-listz\.@opcodez#(?![agrnw]\$|#)zmove\b)r   r1   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]*))*\))r   r   )r.   r"   )r2   r"   r2   formr   )r   r   )operandsrL   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   get_tokens_unprocessedr   Variabler
   r	   appendr   pop)rJ   textZobjectloop_queueZobjectloop_token_countZprevious_tokenindextokenr#    r   R/var/www/html/lang_env/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   resultr   r   r   analyse_text  s   zInform6Lexer.analyse_textN)5__name__
__module____qualname____doc__rG   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.   




,49=A
G








     
  !  (
  -
  4  9
  >
  D
  G
  M
  v
  {
           
        

    !
    *    1    7    ?    E    M    R    W    ]    i    m    q
    x     
            )      .      3      9      @      E      K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 ]iZi d
eejd ddej ejdfgddefdejdfde ejdfedgdde ejfde ejdfgd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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"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$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d0ejfdejd1fd2ejdfgd d3e ejfd4ej"fde ejdfgd*defdejdfd5e ed6fd7e efd8e ejdfedgd6d,efdejdfd9ed:fedgd:d,efdejdfd;e ed<fed=gd<d>eef ejfd?eef ej#fd@eef e e!ddAfdBeef efdejdfgd'dCeef ejfdDeeef ejfdEeef ejdFfgd/e$d'dGeeeefgd.dHeee e!ddAefgdIe eeej%efdJe eee&eeedKfdLe eee&eeefdMeee e!ddAefgdNejfdCeef ejdfdOeef ejfdEeef ejfdPejfgdCeef ejfdQeeef ejfdEeef ejdFfdReef e&fdSe ej%fdTe eee&edfdUe efgdVee< ejD ]+Z'e'dkrtqkeeje' ee e'< e'(dWse$dXe$egee e' dYdZ< qkq-d[d\ Z)dYS )]r   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+commentr4   )+main+titling+titling-string)r   	+heading?r   z[^%s]+r   r   z[^%s.;:|%s]+z[%s]{2}|(?<=[\s%s])\|[\s%s])r   r   z[.;:]|(?<=[\s%s])\|z[|%s]r   z(?i)[^%s:a\[(|%s]+z+textr0   z+phrase-definitionz
(?i)\bas\bz+use-optionz(\([%s])(.*?)([%s]\)))r   r   r   )statei6tz (%s|(?<=[\s;:.%s]))\|\s|[%s]{2,}r   z(?i)[a(|%s]r   )r   r   r   r&   r   r   z[^\[\]]+r+   re   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+documentationr/   z&(?i)(%s)\s*(chapter|example)\s*:[^%s]*z(?i)(%s)\s*section\s*:[^%s]*z((%s)\t.*?[%s])+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)|.)+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__)rJ   optionslevelr   r   r   r     s
   
zInform7Lexer.__init__)*r   r   r   r   rG   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   






(

2

;

@E

N
T
Z



d

lpv







  
!
 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   )rJ   r   stackr   r   r   r     s   z+Inform6TemplateLexer.get_tokens_unprocessedN)r   )r   r   r   r   rG   r   r   r   r   r   r   r   r     s    r   c                   @   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i d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	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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d0eef eej eedded1fedd2e ed3fed4g
d4ed#d5eef eej eedded6fed7gd8ded9fedd:ed;fed<gd=ded9feded'gd>d?efded)fd*ed'fd@e!j"fd0eef eej#eeddefedgded>d!edAfgdBdCe$j%d'fed>d!edDfgd#g eddEed6fdFedGfdedHfdIed'fdJe&j'd'fdKe&j(d'fdLe&j)d'fdMe&j*d'f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 ee!j"eedde!j"fd_e ee!j"eedded`fdae ee!j"eedde!j"dbfdce ee!j"eeddfdde ee!j"eedde!j"defdfe ee!eedde!j"dgfdhej.d'fdie!j"djfdke!j"fdle!j"dmfdne!j"dofdpe!j"d'fdqe!j"drfdse!j"dtfdue!j"dvfdwe!j"dxfdye!j"dzfd{e!j"d|fd}e!j"d~fde!j"dfde!j"d'fde!j"dfde!j/d'fde!j"d<fde!j"dfde!j"dfdej.j0d'fde!j"defde ee1j2eedde1dfde1j2fdej.d'fd3ed#eed'fed'gddEedfdFedAfdefded3fded'fedee1d3fde1dfde ee1j2eedde1j2fdefg
deded'gdde1d'fedgddCe$j%d7fedgddEedxfde!j"dfed3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d3fedgdde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dde 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de1d'fedgdde!d'fedgddefeej4dfedgdedde!drfedrgddefdEedfd+edfeej3fedgdedde$j5d'fgdedÃedde eeeedde!d3fde efeej/fed7gd+d+ed'fgdde$j%fdeef ed'feejd'fedgi ddedfedeej3d'fed'gdde1j2d'fedee1fed'gddEedfded(fedgdded'fedÃd}e!j"fedde efeej fgddIed'fde!j"d'fde!j"feej3d'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j/f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ef e6j7fee6j,fee6j8fde efgddNe$j+dfdPe$j,dfdRe$j+dfdTe$j,dfgdde e$j9fgdde$j%fdeef e$j%dfgddej:fgdedddedddeddi dedddeddddeddddeddddeddddeddddeddddeddddeddddedddedddedddedddedRdddedRdddedRdddedRddedTddedTddedTddedTddeeddeeddeeddeeddde$j-fd e$j-fde$j-d'fdRe$j-fgde$j-fde$j-fde$j-d'fdTe$j-fgde$j-fde$j-fdRe$j-d'fgde$j-fde$j-fdTe$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(?://(?:[^\\\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}| r"d||f nd}d| r)dnd|r.d	nd
f }d| }g }	| rN|	d| |dfd| tjf||fg7 }	n|	||df |	tdd| |fg7 }	|rw|	d||f tjdd| |ff n0|	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>rd   '+|%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}| r*d	||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 )Nrd   r   {3,}r   z%s%sqtr   r   r   r   r   r/   z
(\s|\\\n)+z	(=)(\\?")zdqs/%sz	(=)(\\?')zsqs/%srO   zuqs/%sz\\?>r   r  z$([^\s=><\\%s]|<(?!<)|\\%s%s|%s|\\.)+r  r   r   z[\\{}&])r   r   r   r	   r   r   r   r  r   	Attributer   )r  r  r  r  Z
quantifierZ
state_namer   r	  r   r   r   _make_tag_stateB  s<   


zTads3Lexer._make_tag_statec           	   	   C   s   | dkrt jn	| dkrt jnt j}|rdnd}|rdnd}|r"t jnt j}|r-d||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 r^dnd |ftdd|fgS )Nrd   r   r  r   r   r   r-   z\\?r   r   r   r  z([^\s"\'<%s{}\\&])+>r  z["\'\s&{<}\\])r   r   r   r   r   r   )	
terminatorZhost_tripleZhost_doubler  r   Z	host_charZhost_quantifierZ
host_tokenr	  r   r   r   _make_attribute_value_state[  s6   
z&Tads3Lexer._make_attribute_value_stater   u   ﻿z\{rZ   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)z	main/rootz
main/basic)r   object-body/no-bracesclassesrl   r  r,   r   )r   rZ   r+   z\}r0   )r  rl   z(%s?)(%s*)(\())block?r  r  z(%s)(%s*)(\{)z(%s)(%s*)(:))r  r  rl   z->|%smainzmain/object-bodyz(%s)(%s*)(=?))r   morer  r/   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   tsqsrd   )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  r0   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   catchrf   )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  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   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)\bz
more/basic)r  r  z\.{3}z->|\.\.z(?=;)|[:)\]]z\?)r  more/conditionalr  z(is|not)(%s+)(in\b)z[^\s!"%-_a-z{-~]+r  r5  z:(?!:)r  r   )r   r1  r  r(   z(in|step)\br1  r0  r  z[,:]r  z(%s)(%s*)(?=:)z(%s)(%s+)(%s)z\[+r  z(:)(%s*(?=[?=,:)]))z[?\]]+z[:)])r   multimethod?rO   )more/parameterr  r7  z(?=[,)])r6  zmultimethod\br4  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\\/]|/(?![/*]))+|\)r6   z(\[)(%s*)(badness)z
->|%s|[()]r*  z(<<([^>]|>>>|>(?!>))*>>)+z(?=%s?%s*[({])r/  r    )r   r  rl   r2  znegate\br3  )r  r  r)  z(?=;)z->|\?|%srl   ztransient\br  z[:,]r  r-  z,+z
property\br+  r9  z^%s*#(%s|[^\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_<<(%%(_(%s|\\?.)|[\-+ ,#]|\[\d*\]?)*\d*\.?\d*(%s|\\?.)|\s*((else|otherwise)\s+)?(if|unless)\b)?)r  r  r  r   z'(?i)&(#(x[\da-f]+|\d+)|[a-z][\da-z]*);?TFztdqs/listingZlistingztsqs/listingzdqs/listingzsqs/listingztdqs/xmpZxmpztsqs/xmpzdqs/xmpzsqs/xmpZtdqtZtsqtZdqtZ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 | j f }d}tj| |fi |D ]T\}}}|dkr3|tju r2td|| j | j f |r2d}n0|tju ra|dkrGtd| |rGd}ntd| |rT|d7 }nt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)rJ   r   kwargsppZif_false_levelr   r   r#   r   r   r   r   C  s8   


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   Z__TADSZGameMainDefg?ZversionInfoZIFIDg?r   r   r   r   r   r   Z  s   zTads3Lexer.analyse_text)>r   r   r   r   rG   r   r   r   r   r   r   Z_comment_singleZ_comment_multiliner  r   Z	_no_quote	_operator_wsr:  r
  r  r  r	   r   r   r   r   r   r   r   r   r   r   r   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




/
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   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