o
    	ȷef                     @   s   d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZ g dZG dd deZG dd	 d	eZG d
d deZG dd deZdS )z
    pygments.lexers.int_fiction
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for interactive fiction languages.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroupsusingthisdefaultwords)
TextCommentOperatorKeywordNameStringNumberPunctuationErrorGeneric)Inform6LexerInform6TemplateLexerInform7Lexer
Tads3Lexerc                   @   s	  e Zd ZdZdZdZddgZdgZej	ej
B ZdZdZd	Zd
ZdZ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 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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))prefixrF   )2callcopycreateDEBUGdestroyDICT_CHAR_SIZEDICT_ENTRY_BYTESDICT_IS_UNICODEDICT_WORD_SIZE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?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?)
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)r3   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specialr6   tableterminatingtimetopicwarningwithzstatic\bz[%s]{1,2}>|[+=]r   r   )r   r   r   z\b(?!(\s*|(![^%s]*))*;)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spacesr6   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   r   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  )operandsr   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)r   textobjectloop_queueobjectloop_token_countprevious_tokenindextokenr#    r%  R/var/www/ideatree/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  resultr%  r%  r&  analyse_text  s   zInform6Lexer.analyse_textN)5__name__
__module____qualname____doc__r   urlaliases	filenamesr'  	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  r,  r%  r%  r%  r&  r      s*   




,49=A
G








   
  
     '
  ,
  3  8
  =
  C
  F
  L
  u
  z
           
        

     
    )    0    6    >    D    L    Q    V    \    h    l    p    v     
            '      ,      1      7      >      C      Ir   c                   @   s<  e Zd ZdZdZdZddgZddgZej	ej
B ZejZejZejZde Zi Zg d	ZeD ]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)rW  	+heading?rY  z[^%s]+r   rX  z[^%s.;:|%s]+z[%s]{2}|(?<=[\s%s])\|[\s%s])r   rZ  z[.;:]|(?<=[\s%s])\|z[|%s]rW  z(?i)[^%s:a\[(|%s]+z+textr0   z+phrase-definitionz
(?i)\bas\bz+use-optionz(\([%s])(.*?)([%s]\)))rT  r   rQ  )statei6tz (%s|(?<=[\s;:.%s]))\|\s|[%s]{2,}rZ  z(?i)[a(|%s]r   )rT  r   r   r&   rR  rS  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+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)rV  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)|.)+i6trV  r^  _r_  Nr   c                 K   sH   | dd}|| jvr| j|| _n| j| | _tj| fi | d S )Nr\  rQ  )get_all_tokens	__class__process_tokendef_tokensr   __init__)r   optionslevelr%  r%  r&  rf    s
   
zInform7Lexer.__init__)*r-  r.  r/  r0  r   r1  r2  r3  r'  r4  r5  r6  r   r8  r9  r;  _startr   token_variantsrh  listr
   r<  r	   	Multiliner   Headingr   r   rD  r   r   r   r   Interpol
Subheadingr   r=  r   r$  
startswithrf  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rU  c                 C   s   t | ||S )N)r   r  )r   r  stackr%  r%  r&  r    s   z+Inform6TemplateLexer.get_tokens_unprocessedN)rq  )r-  r.  r/  r0  r   r2  r3  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>r   '+|%s(?!%s{2})%s%stdsz%sqtz%s{3,}r   z\\%s+
s/verbatimz[^\\<&{}%s]+z!\\?<(/|\\\\|(?!%s)\\)%s(?=[\s=>])z%sqsz(\\?<!([^><\\%s]|<(?!<)|\\%s%s|%s|\\.)*>?z(?i)\\?<listing(?=[\s=>]|\\>)z%sqs/listingz(?i)\\?<xmp(?=[\s=>]|\\>)z%sqs/xmpz(\\?<([^\s=><\\%s]|<(?!<)|\\%s%s|%s|\\.)*s/entitys/escape%\{([^}<\\%s]|<(?!<)|\\%s%s|%s|\\.)*\}z[\\&{}<])joinr   rD  r=  rC  r  r   r   Tagr
   rl  rn  )
tripledoubleverbatim_escapecharr$  escaped_quotesry   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 )Nr   r{  {3,}rt  z%s%sqtr~  r  r  r|  r}  r/   z
(\s|\\\n)+z	(=)(\\?")zdqs/%sz	(=)(\\?')zsqs/%sr   zuqs/%sz\\?>r   r  z$([^\s=><\\%s]|<(?!<)|\\%s%s|%s|\\.)+r  r  r  z[\\{}&])r   rD  r=  r	   r   r   r   r  rn  	Attributer   )r  r  r  r  
quantifier
state_namer$  r  r%  r%  r&  _make_tag_state@  s<   


zTads3Lexer._make_tag_statec           	   	   C   s   | dkrt jn	| dkrt jnt j}|rdnd}|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 )Nr   r{  r  rt  r|  r}  r-   z\\?r   r  r  r  z([^\s"\'<%s{}\\&])+>r  z["\'\s&{<}\\])r   rD  r=  rM  r   rn  )	
terminatorhost_triplehost_doubler  r$  	host_charhost_quantifier
host_tokenr  r%  r%  r&  _make_attribute_value_stateY  s6   
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)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classesr   r  r,   r   )r   r   r+   z\}r0   )r  r   z(%s?)(%s*)(\())block?r  r  z(%s)(%s*)(\{)z(%s)(%s*)(:))r  r  r   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   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  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   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(%s)(%s*)(?=:)z(%s)(%s+)(%s)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\\/]|/(?![/*]))+|\)r6   z(\[)(%s*)(badness)z
->|%s|[()]r  z(<<([^>]|>>>|>(?!>))*>>)+z(?=%s?%s*[({])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^%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/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 | 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)r   r  kwargsppif_false_levelr#  r$  r#   r%  r%  r&  r  A  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   __TADSGameMainDefg?versionInfoIFIDg?r%  r*  r%  r%  r&  r,  X  s   zTads3Lexer.analyse_text)>r-  r.  r/  r0  r   r2  r3  r'  r5  r4  r6  _comment_single_comment_multiliner  r7  	_no_quote	_operator_wsr  r  r  r  r	   r   r   r   rJ  r   r   r   r   r   r  r   Reservedr?  r   rn  r   rF  rE  OctrH  rD  r=  RegexrK  rL  r@  r   r>  rN  	ExceptionrM  r
   r<  rl  rC  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   )r0  r'  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%  r%  r%  r&  <module>   s    
$0     M