
    ,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y)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                   P   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 y)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                 D    t        j                  | g|i | g | _        y )N)r   __init__cur)selfargskwargss      U/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pygments/lexers/tnt.pyr   zTNTLexer.__init__7   s    t-d-f-    c                     |}	 ||   | j                   v r|dz  }||   | j                   v r|r||k(  rt        ||k7  r%| j                  j                  |t        ||| f       |S # t        $ r t        |      }Y Ow xY w)zTokenize whitespace.   )
WHITESPACE
IndexErrorlenAssertionErrorr   appendr   )r   starttextrequiredends        r   
whitespacezTNTLexer.whitespace;   s    	s)t.q s)t. u  %<HHOOUD$uS/:;
  	d)C	s   'A% %A<;A<c                     ||   | j                   vrt        |dz   }||   | j                  v r|dz  }||   | j                  v r| j                  j	                  |t
        j                  ||| f       |S )zTokenize a variable.r   )	VARIABLESr   PRIMESr   r   r   Variabler   r    r!   r#   s       r   variablezTNTLexer.variableI   sr    ;dnn,  Ag3i4;;&1HC 3i4;;&tE#?@
r   c                 *   ||   dk(  r\|dz   }||   dk(  r|dz  }||   dk(  r| j                   j                  |t        j                  ||| f       | j	                  ||      S ||   dk(  r4| j                   j                  |t        j                  ||   f       |dz   S ||   | j
                  v r| j                  ||      S ||   dk(  r| j                   j                  |t        ||   f       | j	                  |dz   |      }||   | j                  vrt        | j                   j                  |t        ||   f       | j	                  |dz   |      }||   dk7  rt        | j                   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"HHOOUFNNDsODE99S$'';#HHOOUFNNDK@A7N;$..(==--;#HHOOUKe=>IIeAgt,EE{$..0$$HHOOUHd5k:;IIeAgt,EE{c!$$HHOOUKe=>7Nr   c                 t   ||   | j                   v rd|dz   }||   | j                   v r|dz  }||   | j                   v r| j                  j                  |t        ||| f       | j	                  ||      S ||   | j
                  v r| j                  j                  |t        j                  ||   f       | j                  |dz   |      }||   dk7  rt        | j                  j                  |t        ||   f       | j	                  |dz   |      S ||   dk(  r| j                  j                  |t        ||   f       | j	                  |dz   |      }||   | j                  vrt        | j                  j                  |t        ||   f       | j	                  |dz   |      }||   dk7  rt        | j                  j                  |t        ||   f       |dz   S | j                  ||      }||   dk7  rt        | j                  j                  |t        ||   f       | j                  |dz   |      }|S )zTokenize a formula.r   :<>=)NEGATORSr   r   r   formulaQUANTIFIERSr   Declarationr*   r   r
   LOGICr1   r)   s       r   r9   zTNTLexer.formulam   s	   ;$--''Cs)t}},q s)t}},HHOOUHd5o>?<<T**;$***HHOOUG$7$7eEFMM%'40EE{c!$$HHOOUKe=><<a..;#HHOOUKe=>LLq$/EE{$**,$$HHOOUHd5k:;LLq$/EE{c!$$HHOOUKe=>7N		%&;#  $u+67		%'4(r   c           	         | j                   j                  ||      }|t        t        |j                  dd       }|D ]  }|d   dk\  s| j
                  j                  |t        |||d    f       | j
                  j                  |d   t        j                  ||d   |d    f       |d   |j                         k7  r9| j
                  j                  |d   t        ||d   |j                          f        |j                         S  | j
                  j                  |t        |||j                          f       |j                         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   s0   

  u-=  

12' 
	GEQx1}eE!H1E FGq6>>!%eAhuQx!8!: ;8uyy{*HHOOU1Xw%)%(599;%?%A B yy{
	G HHOOUGT%		-DEFyy{r   c                    |}||   | j                   vr|dz  }||   | j                   vr| j                  j                  |t        ||   f       | j                  j                  |dz   t        ||dz   | f       |}| j
                  j                  ||      }|t        ||j                            dk7  rt        | j                  j                  |j                         t        j                  |j                  d      f       | j                  j                  |j                         t        ||j                            f       |j                         dz   S )zTokenize a line referral.r   r/   r   )NUMBERSr   r   r
   r   LINENOSr?   r   r#   r    r	   r0   rC   )r   r    r!   r#   r?   s        r   linenozTNTLexer.lineno   s   3it||+1HC 3it||+T%[9:q$U1WS(9:;""4/=  		#  AGHk4		3DEFyy{Qr   c                     |}	 ||   dk7  r|dz  }||   dk7  r||k7  r%| j                  j                  |t        ||| f       | j                  ||      }|S # t         $ r t        |      }Y Tw xY w)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# %<HHOOUE4c?;<ooc4(
  	d)C	s   A A/.A/c                    g | _         | j                  d|      x}}||cxk  rt        |      k  rCn | j                   S 	 ||   | j                  v r|dz  }||   | j                  v r||k7  rZ| j                   j	                  |t
        j                  ||| f       t        | j                         }	 | j                  ||d      x}}| j                  j                  ||      }|[| j                   j	                  |t        |||j                          f       |j                         x}}| j                  ||      x}}$~||   dv r0| j                   j	                  |t        ||   f       |dz  }|dz  }n*t        | j                         }	 | j                  ||      x}}t        | j                         }	 | j                  ||d      x}}t        | j                         }	 | j%                  ||      x}}| j                  ||      x}}||   dk(  r>t        | j                         }	 | j'                  ||      x}}| j                  ||      x}}||cxk  rt        |      k  r(| j                   S  | j                   S # t        $ r' | j                   |d= | j                  ||      x}}Y w xY w# t        t        f$ rb | j                   |d= ||   | j                   vr|dz  }||   | j                   vr| j                   j	                  |t"        ||| f       |}Y w xY w# t        $ r' | j                   |d= | j                  ||      x}}Y :w xY w# t        $ r' | j                   |d= | j                  ||      x}}Y mw xY w# t        $ r' | j                   |d= | j                  ||      x}}Y w xY w# t(        $ r6 	 | j                   d= n# t*        $ r Y nw xY w| j                  ||       Y w xY w)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Y&T xxSH63i4<</1HC 3i4<</%<HHOOUFNNDsO$LMtxx=D!&*ooc4&FF **47$HHOOUGT%		5L$MN"'))+-EC"&":":5$"GGEC;$&HHOOUGT%[$ABQJE1HC txx=D$&*ll5$&?? 488}"&//#tT"BBEC 488}"&))E4"88EC #ooc488;#%txx=D!&*kk%&>>
 #'//%">>ECG s&SY&T xxU 'T xx * ! HHTUO&*&>&>sD&II !. +N; $ HHTUO"3it>1HC #3it>tE#(GH #$ & "&":":5$"GGEC & "&":":5$"GGEC * ! HHTUO&*&>&>ud&KK !
  6  ((56s    'O  (A	O  2J  A7O   AO  J3 "O  8L' O  #M 71O  )N =O   ,J0,O  /J00O  3AL$9'L$ O  #L$$O  ',MO  MO  ,N
O  	N

O  ,N=9O  <N==O   	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$%EHIGI[F4yHj/K,GYJBJJ  	E bjjDEGbjj)G4 D&"Nr   )rU   r\   pygments.lexerr   pygments.tokenr   r   r   r   r   r	   r
   r   __all__r   r^   r   r   <module>rb      s8    
     ,zu zr   