
    Mh(                     h    d Z ddlZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZ dgZ G d de          ZdS )z
    pygments.lexers.tnt
    ~~~~~~~~~~~~~~~~~~~

    Lexer for Typographic Number Theory.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer)TextCommentOperatorKeywordNameNumberPunctuationErrorTNTLexerc                   v   e Zd ZdZdZdZdgZdgZdZg Z	 e
d          Z e
d          Z e
d	          Z e
d
          Z e
d          Z e
d          Z e
d          Z e
d          Z ej        d          Z ej        d          Z ej        d          Zd ZddZd Zd Zd Zd Zd Zd Zd Z dS )r   uz   
    Lexer for Typographic Number Theory, as described in the book
    Gödel, Escher, Bach, by Douglas R. Hofstadter
    zTypographic Number Theoryz,https://github.com/Kenny2github/language-tnttntz*.tntz2.7u   ⊃→]&∧^|∨Vvu   +.⋅*abcdeu   '′z~!u   AE∀∃
0123456789z	 
ax  (?xi)
        joining | separation | double-tilde | fantasy\ rule
        | carry[- ]over(?:\ of)?(?:\ line)?\ ([0-9]+) | detachment
        | contrapositive | De\ Morgan | switcheroo
        | specification | generalization | interchange
        | existence | symmetry | transitivity
        | add\ S | drop\ S | induction
        | axiom\ ([1-5]) | premise | push | pop
    z((?:[0-9]+)(?:(?:, ?|,? and )(?:[0-9]+))*z\[[^\n\]]+\]c                 >    t          j        | g|R i | g | _        d S )N)r   __init__cur)selfargskwargss      S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pygments/lexers/tnt.pyr   zTNTLexer.__init__7   s-    t-d---f---    Fc                    |}	 ||         | j         v r|dz  }||         | j         v n# t          $ r t          |          }Y nw xY w|r||k    rt          ||k    r*| j                            |t          |||         f           |S )zTokenize whitespace.   )
WHITESPACE
IndexErrorlenAssertionErrorr   appendr   )r   starttextrequiredends        r   
whitespacezTNTLexer.whitespace;   s    	s)t..q s)t.. 	 	 	d))CCC	 	!u  %<<HOOUD$uSy/:;;;
s   #( AAc                     ||         | j         vrt          |dz   }||         | j        v r|dz  }||         | j        v | j                            |t
          j        |||         f           |S )zTokenize a variable.r   )	VARIABLESr   PRIMESr   r   r   Variabler   r    r!   r#   s       r   variablezTNTLexer.variableI   sy    ;dn,,  Ag3i4;&&1HC 3i4;&&tE#I?@@@
r   c                    ||         dk    rg|dz   }||         dk    r|dz  }||         dk    | j                             |t          j        |||         f           |                     ||          S ||         dk    r2| j                             |t          j        ||         f           |dz   S ||         | j        v r|                     ||          S ||         dk    r| j                             |t          ||         f           |                     |dz   |          }||         | j        vrt          | j                             |t          ||         f           |                     |dz   |          }||         dk    rt          | j                             |t          ||         f           |dz   S t          )zTokenize a term.Sr   0())r   r   r	   Integertermr&   r*   r
   	OPERATORSr   r   r)   s       r   r1   zTNTLexer.termS   s   ;#'Cs)s""q s)s""HOOUFNDsODEEE99S$''';#HOOUFNDK@AAA7N;$.((==---;#HOOUKe=>>>IIeAgt,,EE{$.00$$HOOUHd5k:;;;IIeAgt,,EE{c!!$$HOOUKe=>>>7Nr   c                    ||         | j         v rh|dz   }||         | j         v r|dz  }||         | j         v | j                            |t          |||         f           |                     ||          S ||         | j        v r| j                            |t          j        ||         f           |                     |dz   |          }||         dk    rt          | j                            |t          ||         f           |                     |dz   |          S ||         dk    r| j                            |t          ||         f           |                     |dz   |          }||         | j        vrt          | j                            |t          ||         f           |                     |dz   |          }||         dk    rt          | j                            |t          ||         f           |dz   S |                     ||          }||         dk    rt          | j                            |t          ||         f           |                     |dz   |          }|S )zTokenize a formula.r   :<>=)NEGATORSr   r   r   formulaQUANTIFIERSr   Declarationr*   r   r
   LOGICr1   r)   s       r   r9   zTNTLexer.formulam   sI   ;$-'''Cs)t},,q s)t},,HOOUHd59o>???<<T***;$***HOOUG$7eEFFFMM%'400EE{c!!$$HOOUKe=>>><<a...;#HOOUKe=>>>LLq$//EE{$*,,$$HOOUHd5k:;;;LLq$//EE{c!!$$HOOUKe=>>>7N		%&&;#  $u+6777		%'4((r   c           	         | j                             ||          }|t          t          |j        dd                   }|D ]}|d         dk    r| j                            |t          |||d                  f           | j                            |d         t          j	        ||d         |d                  f           |d         |
                                k    rH| j                            |d         t          ||d         |
                                         f            n=| j                            |t          |||
                                         f           |
                                S )zTokenize a rule.Nr   r   )RULESmatchr   sortedregsr   r   r   r	   r0   r#   )r   r    r!   r?   groupsgroups         r   rulezTNTLexer.rule   s]   
  u--=  
122'' 
	G 
	GEQx1}}eE!Hn1E FGGGq6>!%eAhuQx&7!8!: ; ; ;8uyy{{**HOOU1Xw%)%(599;;*>%?%A B B B  HOOUGT%		2C-DEFFFyy{{r   c                    |}||         | j         vr|dz  }||         | j         v| j                            |t          ||         f           | j                            |dz   t          ||dz   |         f           |}| j                            ||          }|t          ||                                         dk    rt          | j                            |	                                t          j        |                    d          f           | j                            |                                t          ||                                         f           |                                dz   S )zTokenize a line referral.r   Nr/   r   )NUMBERSr   r   r
   r   LINENOSr?   r   r#   r    r	   r0   rC   )r   r    r!   r#   r?   s        r   linenozTNTLexer.lineno   s5   3it|++1HC 3it|++T%[9:::q$U1WS[(9:;;;""4//=  		##  AGHHHk4		3DEFFFyy{{Qr   c                    |}	 ||         dk    r|dz  }||         dk    n# t           $ r t          |          }Y nw xY w||k    r*| j                            |t          |||         f           |                     ||          }|S )z?Mark everything from ``start`` to the end of the line as Error.
r   )r   r   r   r   r   r$   r)   s       r   error_till_line_endzTNTLexer.error_till_line_end   s    	s)t##q s)t## 	 	 	d))CCC	%<<HOOUE4c	?;<<<ooc4((
s   " >>c                 J   g | _         |                     d|          x}}||cxk    rt          |          k     rn n	 ||         | j        v r|dz  }||         | j        v ||k    r| j                             |t
          j        |||         f           t          | j                   }	 |                     ||d          x}}n2# t          $ r% | j         |d= |                     ||          x}}Y w xY w| j	        
                    ||          }|l| j                             |t          |||                                         f           |                                x}}|                     ||          x}}b~||         dv r3| j                             |t          ||         f           |dz  }|dz  }nt          | j                   }	 |                     ||          x}}np# t          t          f$ r\ | j         |d= ||         | j        vr|dz  }||         | j        v| j                             |t"          |||         f           |}Y nw xY wt          | j                   }	 |                     ||d          x}}n3# t          $ r& | j         |d= |                     ||          x}}Y w xY wt          | j                   }	 |                     ||          x}}n3# t          $ r& | j         |d= |                     ||          x}}Y w xY w|                     ||          x}}||         dk    ryt          | j                   }	 |                     ||          x}}n3# t          $ r& | j         |d= |                     ||          x}}Y w xY w|                     ||          x}}nB# t(          $ r5 	 | j         |d= n# t*          $ r Y nw xY w|                     ||           Y nw xY w||cxk    rt          |          k     n | j         S )zReturns a list of TNT tokens.r   r   TNz[]r.   )r   r$   r   rF   r   r	   r0   r   rK   COMMENTr?   r   r#   r   r9   RecursionErrorr   r   rD   rH   r   	NameError)r   r!   r    r#   origr?   s         r   get_tokens_unprocessedzTNTLexer.get_tokens_unprocessed   s   ooa...s&&&&SYY&&&&&H63i4<//1HC 3i4<//%<<HOOUFNDsO$LMMMtx==D!&*ooc4&F&FF) ! ! ! HTUUO&*&>&>sD&I&II !
 **477$HOOUGT%		:K5L$MNNN"'))++-EC"&":":5$"G"GGEC;$&&HOOUGT%[$ABBBQJE1HCC tx==D$&*ll5$&?&??*N; $ $ $ HTUUO"3it>>1HC #3it>>tE#I(GHHH #$ 48}}"&//#tT"B"BBECC%   "&":":5$"G"GGECH
 48}}"&))E4"8"88ECC%   "&":":5$"G"GGECH
 #ooc4888;#%%tx==D!&*kk%&>&>>) ! ! ! HTUUO&*&>&>ud&K&KK ! #'//%">">>EC 6 6 6    D((555556I s&&&&SYY&&&&T xs    A,N? -C N? ,C63N? 5C66B
N? AN? G. -N? .A*IN? IN? 3J N? ,J=9N? <J==N? K. -N? .,LN? L;N? M3 2N? 3,N#N? "N##N? ?
O>

OO>
O"O>!O""O>=O>N)F)!__name__
__module____qualname____doc__nameurlaliases	filenamesversion_addedr   setr<   r2   r&   r'   r8   r:   rF   r   recompiler>   rG   rM   r   r$   r*   r1   r9   rD   rH   rK   rQ    r   r   r   r      s~        
 'D
8CgG	IM
CC$%%EHIGIS[[Fs4yyH#j//Kc,GYJBJ  	 	E bjDEEGbj))G         4     D  &  "  N N N N Nr   )rU   r\   pygments.lexerr   pygments.tokenr   r   r   r   r   r	   r
   r   __all__r   r^   r   r   <module>rb      s     
			                                ,z z z z zu z z z z zr   