B
    `F                 @   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 ddddg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-2021 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dgZdgZejej	B ej
B ZdZdZdZd	Zd
Zdeef ejdfedgdefde ejfgeddedfdedfdefedgeddedfdeef edfde efde edfgeddedfdedfdedfde efde efd ed!fd"e ed!fd#ejd!fd$efd%ejd&fd'efedgded(fd)efd*e ed!fd$ejfd+ed,fed-gded.fd/edfed-gd0ed!fed-gd edfed-gd1ejdfed2gedd3eef e j!dfd4eef e"e j!e j#e j!dfd5eef e"e j!e j#e j!dfd6e e jd7fd6e e j$d8fd9eef e%j&dfd:e%j'dfd;e%j(dfd<e%j)dfd=e e"eedfd>e e"eej*j+dfd?ed@fdAe e"eej,dfdBej-dCfe.dDdEdFej-dfdGej-dfe.dHdIdEdJej-dfe.dKdIdEdJej-dfeedfgdLe j#fdMe e jfdNe jfdOe j#fdPe j#fd6e e jdfgdLe j#fdMe e j$fdNe j$fdQe j#fdReef e j#fdSeeef e j#fdTeef e j#fd6e e j$dfgdUe e j$fdVe j$fdQe j#fd6e e j$dfgedeej/dfedWgedeej*j+dfedWgedeejdfedgedeej*dfedgdXe j0dfgedeej-dfgeddBefd+edfdedYfe.dZdIdEdJed[fd\ed]fd^ed_fd`edafdbedcfdde"eefdeedffdgedhfdiedjfdkedlfdmedhfdnedofdpedqfdredsfdtedufdvedwfdxedyfdzed{fd|ed}feej1dqfgedeej,dfedgedd+edfd~efde j$dfeej*fgedd+efdedfd/efedgeddedfedgeddedfeej1dfgeddedfedgd*e efdejdfedgedd+ed.fd efdejdfdejfd/efedgeddedfeej1fedWgeddedfd~edfedgedd+edfdefd*e edWfdedfedgeddedfedgedd+edfd efdedfedgedd6e e j$dfedgedd6e e j$dfedgdLe j#fedgede.ddEdFedfdefde edfgededWgededgeddefedgede.ddEdFedfedgeddedfdefe.ddEdFed[fdefdedfdedfdedfdedfdedfde edfdejd&fdedfdedfded[fdedfedgeddedfde ejdfdeef ej,dfedgeddedfedgedd+edfedgedd+edfd/efedgeddedfedgedd6e e j$dfeedfgd/efedgd2Z2dd Z3dd Z4dS )r   z^
    For `Inform 6 <http://inform-fiction.org/>`_ source code.

    .. versionadded:: 2.0
    zInform 6Zinform6Zi6z*.infz[a-zA-Z_]\w*u	   \-‐-—u   "“”u   '‘’u
   \n  z\A(!%%[^%s]*[%s])+	directivez\s+z![^%s]*_whitespacez\[zmany-valuesz:|(?=;)z#pop<)
expression_expressionz(?=sp\b)z(?=[%s%s$0-9#a-zA-Z_]))z#popvaluez\+\+|[%s]{1,2}(?!>)|~~?z(?=[()\[%s,?@{:;])z\(z\))z#pop
statementslocalsz>(?=(\s+|(![^%s]*))*[>;])z\+\+|[%s]{2}(?!>),r   z6&&?|\|\|?|[=~><]?=|[%s]{1,2}>?|\.\.?[&#]?|::|[<>+*/%%]z*(has|hasnt|in|notin|ofclass|or|provides)\bzsp\bz\?~?zlabel?z[@{])z#pushr   z[\[\]]z[%s]>;z#pop:3r   z#pop:2:z(from|near|to)\bzhas\bz_list-expressionz[%s][^@][%s]z([%s])(@\{[0-9a-fA-F]*\})([%s])z([%s])(@.{2})([%s])z[%s])z#popzdictionary-word)z#pop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]\$)z#popzobsolete-dictionary-wordz
(#r\$)(%s)#)z#popzsystem-constant)childchildrenZelderZeldestZglkZindirect	metaclassparentrandomZsiblingZyoungerZyoungestz\b)suffixz#(?i)(Class|Object|Routine|String)\b)2ZBox__RoutineZCA__PrZCDefArtZ	CInDefArtZCl__MsZCopy__PrimitiveZCP__TabZDA__PrZDB__PrZDefArtZDynam__StringZEnglishNumberZ	Glk__WrapZIA__PrZIB__PrZInDefArtZMain__ZMeta__classZOB__MoveZ
OB__RemoveZOC__ClZOP__PrZPrint__AddrZPrint__PNameZPrintShortNameZRA__PrZRA__ScZRL__PrZ	R_ProcessZRT__ChGZRT__ChGtZ	RT__ChLDBZ	RT__ChLDWZRT__ChPRZRT__ChPrintAZRT__ChPrintCZRT__ChPrintOZRT__ChPrintSZRT__ChPSZRT__ChRZ	RT__ChSTBZ	RT__ChSTWZRT__ChTZRT__ErrZRT__TrPSZRV__PrZ	Symb__TabZUnsigned__CompareZWV__PrZ	Z__Regionz(?i))prefixr)   )2callcopycreateDEBUGdestroyZDICT_CHAR_SIZEZDICT_ENTRY_BYTESZDICT_IS_UNICODEZDICT_WORD_SIZEfalseZFLOAT_INFINITYZ	FLOAT_NANZFLOAT_NINFINITYZGOBJFIELD_CHAINZGOBJFIELD_CHILDZGOBJFIELD_NAMEZGOBJFIELD_PARENTZGOBJFIELD_PROPTABZGOBJFIELD_SIBLINGZGOBJ_EXT_STARTZGOBJ_TOTAL_LENGTHZGrammar__VersionZINDIV_PROP_STARTZINFIXZinfix__watchingZMODULE_MODEnameZnothingZNUM_ATTR_BYTESprintZprint_to_arrayZrecreate	remainingselfZsenderZSTRICT_MODEZsw__varZ
sys__glob0Z
sys__glob1Z
sys__glob2Zsys_statusline_flagZTARGET_GLULXZTARGET_ZCODEZtemp__global2Ztemp__global3Ztemp__global4Ztemp_globaltrueZUSE_MODULESZWORDSIZEz[~^]+z[^~^\\@({%s]+z[({]z@\{[0-9a-fA-F]*\}z@.{2}z\\z(@(\\\s*[%s]\s*)*@((\\\s*[%s]\s*)*[0-9])*z@@(\\\s*[%s]\s*)*\{((\\\s*[%s]\s*)*[0-9a-fA-F])*(\\\s*[%s]\s*)*\}z!@(\\\s*[%s]\s*)*.(\\\s*[%s]\s*)*.z[^~^\\({\[\]%s]+z
[~^({\[\]]r   z\S\w*)r   r   r   zroutine-name?)Z
abbreviateendif
dictionaryZifdefZiffalseZifndefZifnotZiftrueZifv3Zifv5releaseserialZswitchesZsystem_fileversionr   z(?i)(array|global)\b)r   zdirective-keyword?_globalz(?i)attribute\b)r   zalias?	_constantz(?i)class\b)zobject-body
duplicatesz
class-namez(?i)(constant|default)\b)r   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   zbefore-plain-string?z(?i)(lowstring|undef)\bz(?i)message\b)r   
diagnosticz(?i)(nearby|object)\b)zobject-bodyz_object-headz(?i)property\b)r   zalias?r<   zproperty-keyword*z(?i)replace\b)r   zroutine-name?zroutine-name?z(?i)statusline\b)r   zdirective-keyword?z
(?i)stub\b)r   zroutine-name?z(?i)trace\b)r   ztrace-keyword?ztrace-keyword?z(?i)zcharacter\b)r   zdirective-keyword?zdirective-keyword?z\*"zplain-stringz\]zalias\b)z#popr<   z#(?=[,;]|(class|has|private|with)\b))z#popr   r   z(class|has|private|with)\br;   zclass\bzclass-segmentz(has|private|with)\b)z_object-expressionr   =)z#popr   )z#popzgrammar-linez_directive-keywordz[/*]z(noun|scope)\bz=routinezroutine-name?z(?i)global\b)z#popzmessage-string)z#popzbefore-plain-string?zdirective-keyword?)z#popzplain-string)$ZadditivealiasbufferclassZcreaturedataerrorZ
fatalerrorfirstZhasZheldinitialZinitstrlastlongmetaZmultiZmultiexceptZ	multiheldZmultiinsideZnounnumberonlyprivatereplacereverseZscopeZscorespecialr"   tableZterminatingtimeZtopicwarningwithzstatic\bz[%s]{1,2}>|[+=]z_directive-keyword!z(additive|long)\b)Zassemblyr7   ZexpressionslinesZlinkerZobjectsoffonsymbolstokensZverbsz[;{}])Zboxbreakcontinuer   ZgiveZ	inversionnew_linequitreadremovereturnZrfalseZrtruespacesr"   Zuntilz(do|else)\bz(font|style)\b)r   zmiscellaneous-keyword?zfor\b)forz(?z(if|switch|while))r   r   z(?z(jump|save|restore)\b)r   zlabel?zobjectloop\b)z_keyword-expressionz	variable?z(?zprint(_ret)?\b|(?=[%s])z
print-listz\.@opcodez#(?![agrnw]\$|#)zmove\b)r   z_keyword-expressionr   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]*))*\)))z_for-expressionr   )z_list-expressionr   z_list-expressionform)z#popzmiscellaneous-keyword?)operandszplain-stringrh   )z_assembly-expressionr   )2rootr   r   r   r   z_assembly-expressionz_for-expressionz_keyword-expressionz_list-expressionz_object-expressionr   zdictionary-wordr"   zplain-stringr<   r;   zlabel?z	variable?zobsolete-dictionary-wordzsystem-constantr   zroutine-name?r   zmany-valueszalias?z
class-namer=   z_object-headzobject-bodyzclass-segmentr>   zgrammar-linez=routiner?   r@   zbefore-plain-string?zmessage-stringz_directive-keyword!z_directive-keywordzdirective-keyword?zproperty-keyword*ztrace-keyword?r   zmiscellaneous-keyword?z(?rd   z
print-listrg   rf   rh   c             c   s   g }d}d }xt | |D ]\}}}|tjkrH|dkrH|||gg}d}n||dkrz|tkrh|tkrh|d8 }||||f nJ|dkr|d d dkrt|d d< x|r|dV  qW d}|||fV  |tkr|tkr|}qW x|r|dV  qW d S )Nin   r      ))	r   get_tokens_unprocessedr   Variabler
   r	   appendr   pop)r4   textZobjectloop_queueZobjectloop_token_countZprevious_tokenindextokenr    rv   c/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/pygments/lexers/int_fiction.pyro     s.    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)rs   resultrv   rv   rw   analyse_text  s    zInform6Lexer.analyse_textN)5__name__
__module____qualname____doc__r1   aliases	filenamesrx   	MULTILINEDOTALLUNICODEflags_name_dash_dquoteZ_squote_newliner
   Preprocr   r	   Singler   r   r   Wordr   Labelr   r   PseudoZDeclarationr   Charr   EscapeDoubler   FloatHexZBinIntegerrp   ZGlobalFunctionBuiltinr   ConstantOtherClassr[   ro   r|   rv   rv   rv   rw   r      sT  












	













c               @   s  e Zd ZdZdZddgZddgZejej	B ej
B ZejZejZejZde Zi Zdd	d
gZxeD ]Zeejd dej ejdfgdefdejdfde ejdfedgde ejfde ejdfgdejdfdeef ejfde ejdfdeeef edfde edfde ejfgdeef efde ejdfdedfd ed!fdejdfd"eef eee e!d#dd$efd%eeef ed&fd'e efgd(efdejdfd"eef eee e!d)d	d$edfedgd(efdejdfd"eef eee e!d#d
d$edfedgd*ejfdejd+fd,ejdfgd-e ejfd.ej"fde ejdfgdefdejdfd/e ed0fd1e efd2e ejdfedgd(efdejdfd3ed4fedgd(efdejdfd5e ed6fed7gd8eef ejfd9eef ej#fd:eef e e!d;d<fd=eef efdejdfgd>eef ejfd?eeef ejfd@eef ejdAfge$ddBeeeefgdCeee e!d;d<efgdDe eeej%efdEe eee&eeedFfdGe eee&eeefdHeee e!d;d<efgdIejfd>eef ejdfdJeef ejfd@eef ejfdKejfgd>eef ejfdLeeef ejfd@eef ejdAfdMeef e&fdNe ej%fdOe eee&edfdPe efgdQee< x`ejD ]VZ'e'dkrqeeje' ee e'< e'(dRse$dSe$egee e' dTdU< qW qbW dVdW Z)dTS )Xr   zW
    For `Inform 7 <http://inform7.com/>`_ source code.

    .. versionadded:: 2.0
    zInform 7Zinform7Zi7z*.niz*.i7xz\A|(?<=[%s])z+i6t-not-inlinez+i6t-inlinez+i6t-use-optionri   z[^%s]*)r   z+pz(\|?\s)+z\[z+commentz[%s])z+mainz+titlingz+titling-string)z+mainz	+heading?z[^%s]+z#popz[^%s.;:|%s]+z+titling-stringz[%s]{2}|(?<=[\s%s])\|[\s%s])z#popz	+heading?z[.;:]|(?<=[\s%s])\|z[|%s]z(?i)[^%s:a\[(|%s]+z+textr!   z+phrase-definitionz
(?i)\bas\bz+use-optionz(\([%s])(.*?)([%s]\)))z+i6-rootr   )statei6tz (%s|(?<=[\s;:.%s]))\|\s|[%s]{2,}z	+heading?z(?i)[a(|%s]z\s+)z+i6-rootr   r   r   z[^\[\]]+z#pushz\]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+documentationz#pop:2z&(?i)(%s)\s*(chapter|example)\s*:[^%s]*z(?i)(%s)\s*section\s*:[^%s]*z((%s)\t.*?[%s])+z+main)r   z[^%s\[]+|[%s\[]z(%s)@c( .*?)?([%s]|\Z)z(%s)@([%s]+|Purpose:)[^%s]*z(%s)@p( .*?)?([%s]|\Z)z+pz(\{)(N)(\})z(\{)(\S[^}]*)?(\})z(\{[%s])(![^}]*)(\}?)z(\{[%s])(lines)(:)([^}]*)(\}?)z+linesz (\{[%s])([^:}]*)(:?)([^}]*)(\}?)z(\(\+)(.*?)(\+\)|\Z)z[^@]+z(%s)@([%s]|Purpose:)re   z(%s)@([%s]|Purpose:)[^%s]*z(%s)@\w*[ %s]z![^%s]*z(\{)([%s]endlines)(\})z[^@!{]+?([%s]|\Z)|.)z+i6-rootz	+i6t-rootri   z+titling-stringz+titlingz+mainz+phrase-definitionz+use-optionz+commentz+textz	+heading?z+documentation-headingz+documentation-heading2z+documentationz+i6t-not-inlinez+i6t-use-optionz+i6t-inlinez+i6tz+pz+lines_z+i6tNr   c             K   sD   | dd}|| jkr&| j|| _n| j| | _tj| f| d S )Nr   z+i6t-not-inline)getZ_all_tokens	__class__Zprocess_tokendefZ_tokensr   __init__)r4   optionslevelrv   rv   rw   r     s
    
zInform7Lexer.__init__)*r}   r~   r   r   r1   r   r   rx   r   r   r   r   r   r   r   r   _startr[   Ztoken_variantsr   listr
   r   r	   	Multiliner   ZHeadingr   r   r   r   r   r   r   InterpolZ
Subheadingr   r   r   ru   
startswithr   rv   rv   rv   rw   r     s  




























*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
    <http://inform7.com/sources/src/i6template/Woven/index.html>`_ code.

    .. versionadded:: 2.0
    zInform 6 templater   z*.i6tz	+i6t-rootc             C   s   t | ||S )N)r   ro   )r4   rs   stackrv   rv   rw   ro     s    z+Inform6TemplateLexer.get_tokens_unprocessedN)r   )r}   r~   r   r   r1   r   r   ro   rv   rv   rv   rw   r     s
   c            T   @   s  e Zd ZdZdZdgZdgZejej	B Z
dZdZdZdZd	Zd
Zdeef Zdeef ZdefddZefddZefddZdefdedfdefdedfdeef eejeeddedfeddefdefd ed!fg	ed"ed#gd$ed%fded&fedgd$efded'fd(ed%fd)ed*fd+eef eejeedded,fd-eef eejeeddedfd.eef eej eedded/fedd0e ed1fed2g
ed"d3eef eej eedded4fed5gded6fedd7ed8fed9gded6feded%gd:efded'fd(ed%fd;e!j"fd.eef eej#eeddefedged<d ed=fgd>e$j%d%fed<d ed?fgedd@ed4fdAedBfdedCfdDed%fdEe&j'd%fdFe&j(d%fdGe&j)d%fdHe&j*d%fdIe$j+dJfdKe$j,dLfdMe$j+dNfdOe$j,dPfdQe$j-dRfdSe$j-dTfdUe$j-dVfdWe$j-dXfdYe ee!j"eedde!j"fdZe ee!j"eedded[fd\e ee!j"eedde!j"d]fd^e ee!j"eeddfd_e ee!j"eedde!j"d`fdae ee!eedde!j"dbfdcej.d%fdde!j"defdfe!j"fdge!j"dhfdie!j"djfdke!j"d%fdle!j"dmfdne!j"dofdpe!j"dqfdre!j"dsfdte!j"dufdve!j"dwfdxe!j"dyfdze!j"d{fd|e!j"d%fd}e!j"d~fde!j/d%fde!j"d9fde!j"dfde!j"dfdej.j0d%fde!j"d`fde ee1j2eedde1dfde1j2fdej.d%fg0ed"eed%fed%gd@edfdAed=fdefded1fded%fedee1d1fde1dfde ee1j2eedde1j2fdefg
eded%gde1d%fedgd>e$j%d5fedgd@edsfdze!j"dfed1gd(ed%fdedfde!dfedgeej d%fedgdedfedgded1fedgdeef eej eeddd%fdeeef eej3eeddej d%fdefed"eej d%fed%gde eeeeddfdefdedfdedfdedfedgded%fedgde!d%feded%gdedfde1d%fedgde!d%fedgdefeej4dfedgedde!dmfedmgdefd@edfd)edfeej3fedgedde$j5d%fgededde eeeedde!d1fde efeej/fed5gd)ed%fgde$j%fdeef ed%feejd%fedgdedfedeej3d%fed%gde1j2d%fedee1fed%gd@edfded&fedgded%feddxe!j"fedde efeej fgdDed%fde!j"d%fde!j"feej3d%feded%gdedfedded%fed%gdefd$ed%fde!j"feej/fedgeej#d%feded%gdefded%fedeej fgdeef e6j7fee6j,fee6j8fde efgdIe$j+dfdKe$j,dfdMe$j+dfdOe$j,dfgde e$j9fgde$j%fdeef e$j%dfgdej:fgedd΃eddσedd΃eddσedddЃedddЃedddЃedddЃedddуedddуedddуedddуedd΃eddσedd΃eddσedMdd΃edMddσedMdd΃edMddσedOdd΃edOddσedOdd΃edOddσeedd΃eeddσeedd΃eeddσde$j-fde$j-fde$j-d%fdMe$j-fgde$j-fde$j-fde$j-d%fdOe$j-fgde$j-fde$j-fdMe$j-d%fgde$j-fde$j-fdOe$j-d%fgdڜPZ;dd܄ Z<ddބ Z=dS )r   z;
    For `TADS 3 <http://www.tads.org/>`_ source code.
    zTADS 3Ztads3z*.tz(?://(?:[^\\\n]|\\+[\w\W])*$)z(?:/\*(?:[^*]|\*(?!/))*\*/)zM(?:\\(?:[\n\\<>"\'^v bnrt]|u[\da-fA-F]{,4}|x[\da-fA-F]{,2}|[0-3]?[0-7]{1,2}))z(?:[_a-zA-Z]\w*)z(?=\s|\\?>)zD(?:&&|\|\||\+\+|--|\?\?|::|[.,@\[\]~]|(?:[=+\-*/%!&|^]|<<?|>>?>?)=?)z(?:\\|\s|%s|%s)z(?:\\\n|[^\S\n]|%s|%s)Nc       
   	   C   sz  |rd dd |D }|r dnd}|r.tjntj}| rDd||f nd}d| rRdnd|r\d	nd
f }d| }g }	| r|	d| |dfd| tjf||fg7 }	n|	||df |	tdd| |fg7 }	|r|	d||f tjdd| |ff n`|	d||||f t	j
fdtjdd| |ffdtjdd| |ffd||||f tj|ftdg7 }	|	tdd||||f tjfd|fg7 }	|	S )N c             S   s,   g | ]$}d t | t | f qS )z	(?:%s|%s))rx   escapelowerupper).0crv   rv   rw   
<listcomp>  s   z1Tads3Lexer._make_string_state.<locals>.<listcomp>rA   'z+|%s(?!%s{2})z%s%stdsz%sqtz%s{3,}z#popz\\%s+z
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|\\.)*zs/entityzs/escapez%\{([^}<\\%s]|<(?!<)|\\%s%s|%s|\\.)*\}z[\\&{}<])joinr   r   r   r   rq   r   r   Tagr
   r   r   )
tripledoubleZverbatim_escapecharru   escaped_quotesr*   Ztag_state_namer   rv   rv   rw   _make_string_state  sN    

zTads3Lexer._make_string_statec             C   s   |rdnd}| rdnd}d| r"dnd|r,dndf }|r>t jnt j}| rTd	||f nd}d
||f |dfdtfdttt jd| fdttt jd| fdtd| fdtjdfd||||f t jfd||||f tj	ft
dt
dt
ddtj	fgS )NrA   r   z{3,}r   z%s%sqtr   r   r   z+|%s(?!%s{2})z%s%sz#pop:2z
(\s|\\\n)+z	(=)(\\?")zdqs/%sz	(=)(\\?')zsqs/%srB   zuqs/%sz\\?>z#popz%\{([^}<\\%s]|<(?!<)|\\%s%s|%s|\\.)*\}z$([^\s=><\\%s]|<(?!<)|\\%s%s|%s|\\.)+zs/escapez
s/verbatimzs/entityz[\\{}&])r   r   r   r	   r   r   r   r   r   	Attributer   )r   r   r   r   Z
quantifierZ
state_nameru   r   rv   rv   rw   _make_tag_state3  s*    
zTads3Lexer._make_tag_statec       	   	   C   s   | dkrt jn| dkrt jnt j}|r*dnd}|r6dnd}|rDt jnt j}|rZd||f nd}d||f |dfd|t jkr~dnd| f |d	ftd
tdd||||f t jfd|t jkrdnd |ftdd|fgS )NrA   r   z{3,}r   z+|%s(?!%s{2})z%s%sz#pop:3z\\?z#popz
s/verbatimzs/entityz%\{([^}<\\%s]|<(?!<)|\\%s%s|%s|\\.)*\}z([^\s"\'<%s{}\\&])+>zs/escapez["\'\s&{<}\\])r   r   r   r   r   r   )	
terminatorZhost_tripleZhost_doubler   ru   Z	host_charZhost_quantifierZ
host_tokenr   rv   rv   rw   _make_attribute_value_stateL  s"    z&Tads3Lexer._make_attribute_value_stateu   ﻿z\{zobject-bodyz;+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*)(\()
whitespace)r   )zblock?/rootzmore/parameterszmain/parametersz\++z[^\s!"%-(*->@-_a-z{-~]+z(?!\Z)z	main/rootz
main/basic)z#popzobject-body/no-bracesclassesrE   r    z#pop)z#popzobject-bodyz#pushz\}r!   )r   rE   z(%s?)(%s*)(\())zblock?zmore/parameterszmain/parametersz(%s)(%s*)(\{)z(%s)(%s*)(:))zobject-body/no-bracesr   rE   z->|%smainzmain/object-bodyz(%s)(%s*)(=?))z#popmorer   z#pop:2)z#popr   z(?=[\[\'"<(:]))z#popzobject-body/no-bracesr>   zgrammar-rules)z#popzobject-body/no-bracesz[;:]+z	default\bzblock/basic)r   r   z>>)z
more/embedr   z\(z\[)z#popz	more/listr   )z#popz
more/innerz
main/innerzmore/parameterszmain/parametersz\*|\.{3}z(?i)0x[\da-f]+z5(\d+\.(?!\.)\d*|\.\d+)([eE][-+]?\d+)?|\d+[eE][-+]?\d+z0[0-7]+z\d+z""")z#poptdqsz''')z#poptsqsrA   )z#popdqsr   )z#popsqszR""")z#poptdqrzR''')z#poptsqrzR")z#popdqrzR')z#popsqrz(extern)(%s+)(object\b)z(function|method)(%s*)(\())z#popzblock?zmore/parameterszmain/parametersz(modify)(%s+)(grammar\b))z#popzobject-body/no-bracesr!   r>   z#(new)(%s+(?=(?:function|method)\b))z(object)(%s+)(template\b))z#poptemplatez(string)(%s+)(template\b))z#popzfunction-namez>(argcount|definingobj|invokee|replaced|targetobj|targetprop)\bz(break|continue|goto)\b)z#poplabelz0(case|extern|if|intrinsic|return|static|while)\bzcatch\b)z#popcatchzclass\b)z#popzobject-body/no-bracesrE   z(default|do|else|finally|try)\bz(dictionary|property)\b)z#pop	constantszenum\b)z#popenumzexport\b)z#popr   z(for|foreach)\b)z#popz
more/innerz
main/innerz(function|method)\b)z#popzblock?zfunction-namez	grammar\b)z#popzobject-body/no-bracesr>   zinherited\b)z#pop	inheritedzlocal\b)z#popz
more/localz
main/localz)(modify|replace|switch|throw|transient)\bznew\b)z#poprE   z(nil|true)\bzobject\bz
operator\b)z#popoperatorzpropertyset\b)z#poppropertysetr   zself\bz
template\bz(__objref|defined)(%s*)(\())z#popzmore/__objrefr   zdelegated\ba*  (__DATE__|__DEBUG|__LINE__|__FILE__|__TADS_MACRO_FORMAT_VERSION|__TADS_SYS_\w*|__TADS_SYSTEM_NAME|__TADS_VERSION_MAJOR|__TADS_VERSION_MINOR|__TADS3|__TIME__|construct|finalize|grammarInfo|grammarTag|lexicalParent|miscVocab|sourceTextGroup|sourceTextGroupName|sourceTextGroupOrder|sourceTextOrder)\b)z	more/listr   z\.{3}z->|\.\.z(?=;)|[:)\]]z\?)r   zmore/conditionalr   z(is|not)(%s+)(in\b)z[^\s!"%-_a-z{-~]+z
more/basicz:(?!:)r   )z#popz
main/localr   z
main/innerz(in|step)\bz
main/localz[,:]z(%s)(%s*)(?=:)z(%s)(%s+)(%s)z\[+z(:)(%s*(?=[?=,:)]))z[?\]]+z[:)])z#popzmultimethod?zmain/parametersrB   )zmore/parameterr   z(?=[,)])zmultimethod\bmodez\)z(error|warn)\bz\(+)z#pop	variablesztoken\bz\)+zgrammar-tagzgrammar-rulesa!  """([^\\"<]|""?(?!")|\\"+|\\.|<(?!<))+("{3,}|<<)|R"""([^\\"]|""?(?!")|\\"+|\\.)+"{3,}|'''([^\\'<]|''?(?!')|\\'+|\\.|<(?!<))+('{3,}|<<)|R'''([^\\']|''?(?!')|\\'+|\\.)+'{3,}|"([^\\"<]|\\.|<(?!<))+("|<<)|R"([^\\"]|\\.)+"|'([^\\'<]|\\.|<(?!<))+('|<<)|R'([^\\']|\\.)+'|([^)\s\\/]|/(?![/*]))+|\)r"   z(\[)(%s*)(badness)z
->|%s|[()]z(<<([^>]|>>>|>(?!>))*>>)+z(?=%s?%s*[({])r   )z#popr   rE   znegate\b)zmore/parameterszmain/parametersz(?=;)z->|\?|%sztransient\bz[:,]rE   r   z,+z
property\bz^%s*#(%s|[^\n]|(?<=\\)\n)*\n?z\\+\n+%s*#?|\n+|([^\S\n]|\\)+r   r   r   r   z\{\{|\}\}|%sz<<\s*(as\s+decreasingly\s+likely\s+outcomes|cycling|else|end|first\s+time|one\s+of|only|or|otherwise|(sticky|(then\s+)?(purely\s+)?at)\s+random|stopping|(then\s+)?(half\s+)?shuffled|\|\|)\s*>>z_<<(%%(_(%s|\\?.)|[\-+ ,#]|\[\d*\]?)*\d*\.?\d*(%s|\\?.)|\s*((else|otherwise)\s+)?(if|unless)\b)?)zblock/embedz
more/embedr   z'(?i)&(#(x[\da-f]+|\d+)|[a-z][\da-z]*);?TFlistingxmpz[^\\"]+z\\"*z"{3,}z[^\\']+z\\'*z'{3,}z\\"?z\\'?)Pri   z	main/rootzobject-body/no-braceszobject-bodyzmain/object-bodyzblock?/rootzblock?zblock/basicr   zblock/embedz
main/basicr   z
more/basicr   zmore/conditionalz
more/embedz
main/innerz
more/innerz
main/localz
more/localz	more/listzmain/parameterszmore/parameterszmore/parameterzmultimethod?zmore/__objrefr   r   r   r>   zgrammar-tagzgrammar-rulesr!   zfunction-namer   r   r   r   rE   r   r   r   r   r   r"   zs/escapez
s/verbatimzs/entityr   r   r   r   ztdqs/listingztsqs/listingzdqs/listingzsqs/listingztdqs/xmpztsqs/xmpzdqs/xmpzsqs/xmpZtdqtZtsqtZdqtZsqtzdqs/tdqtzdqs/tsqtzdqs/dqtzdqs/sqtzsqs/tdqtzsqs/tsqtzsqs/dqtzsqs/sqtzuqs/tdqtzuqs/tsqtzuqs/dqtzuqs/sqtr   r   r   r   c             k   s   d| j | j f }d}xtj| |f|D ]\}}}|dkrb|tjkrtd|| j | j f |rd}n`|tjkr|dkrtd| |rd}qtd| |r|d7 }qtd| |r|d8 }nt}|||fV  q&W d S )Nz^%s*#%s*r   z%sif%s+(0|nil)%s*$\n?rm   z%sel(if|se)\bz%sifz	%sendif\b)_ws_ppr   ro   r
   r   rx   match)r4   rs   kwargsppZif_false_levelrt   ru   r   rv   rv   rw   ro   4  s&    



z!Tads3Lexer.get_tokens_unprocessedc             C   s8   d}d| ksd| kr|d7 }d| kr4d| kr4|d7 }|S )zThis is a rather generic descriptive language without strong
        identifiers. It looks like a 'GameMainDef' has to be present,
        and/or a 'versionInfo' with an 'IFID' field.r   Z__TADSZGameMainDefg?ZversionInfoZIFIDg?rv   )rs   r{   rv   rv   rw   r|   K  s    zTads3Lexer.analyse_text)>r}   r~   r   r   r1   r   r   rx   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   rp   r   ZReservedr   r   r   r   r   r   Octr   r   r   Regexr   r   r   r   r   r   	Exceptionr   r
   r   r   r   Entityr[   ro   r|   rv   rv   rv   rw   r     s  2



















































































)r   rx   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   rv   rv   rv   rw   <module>	   s   $0   } L