/ lib / pygments / lexers / tnt.pyc
tnt.pyc
 1  o

 2   ��c�(�@sZdZddlZddlmZddlmZmZmZmZm	Z	m
 3  Z
 4  mZmZdgZ
Gdd�de�ZdS)z�
 5      pygments.lexers.tnt
 6      ~~~~~~~~~~~~~~~~~~~
 7  
 8      Lexer for Typographic Number Theory.
 9  
10      :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
11      :license: BSD, see LICENSE for details.
12  �N)�Lexer)�Text�Comment�Operator�Keyword�Name�Number�Punctuation�Error�TNTLexerc@s�eZdZdZdZdZdgZdgZgZe	d�Z
13  e	d�Ze	d�Ze	d	�Z
e	d
14  �Ze	d�Ze	d�Ze	d
�Ze�d�Ze�d�Ze�d�Zdd�Zd%dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$S)&ru�
15      Lexer for Typographic Number Theory, as described in the book
16      Gödel, Escher, Bach, by Douglas R. Hofstadter
17  
18      .. versionadded:: 2.7
19      zTypographic Number Theoryz,https://github.com/Kenny2github/language-tnt�tntz*.tntu⊃→]&∧^|∨Vvu+.⋅*�abcdeu'′z~!uAE∀∃�
20  0123456789z	 
21  ax(?xi)
22          joining | separation | double-tilde | fantasy\ rule
23          | carry[- ]over(?:\ of)?(?:\ line)?\ ([0-9]+) | detachment
24          | contrapositive | De\ Morgan | switcheroo
25          | specification | generalization | interchange
26          | existence | symmetry | transitivity
27          | add\ S | drop\ S | induction
28          | axiom\ ([1-5]) | premise | push | pop
29      z((?:[0-9]+)(?:(?:, ?|,? and )(?:[0-9]+))*z\[[^\n\]]+\]cOs"tj|g|�Ri|��g|_dS)N)r�__init__�cur)�self�args�kwargs�r��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pygments\lexers\tnt.pyr8s
30  zTNTLexer.__init__FcCs~|}z|||jvr|d7}|||jvs
31  Wn
ty#t|�}Ynw|r,||kr,t�||kr=|j�|t|||�f�|S)zTokenize whitespace.�)�
32  WHITESPACE�
33  IndexError�len�AssertionErrorr�appendr)r�start�text�required�endrrr�
34  whitespace<s���zTNTLexer.whitespacecCs^|||jvr	t�|d}|||jvr|d7}|||jvs|j�|tj|||�f�|S)zTokenize a variable.r)�	VARIABLESr�PRIMESrrr�Variable�rrrrrrr�variableJs�zTNTLexer.variablecCs>||dkr.|d}||dkr|d7}||dks|j�|tj|||�f�|�||�S||dkrD|j�|tj||f�|dS|||jvrQ|�||�S||dkr�|j�|t||f�|�|d|�}|||jvrst	�|j�|t
35  ||f�|�|d|�}||dkr�t	�|j�|t||f�|dSt	�)zTokenize a term.�Sr�0�(�))rrr�Integer�termr!r%r	�	OPERATORSrrr$rrrr+Ts0�z
TNTLexer.termcCs�|||jvr0|d}|||jvr|d7}|||jvs|j�|t|||�f�|�||�S|||jvrf|j�|tj||f�|�|d|�}||dkrSt	�|j�|t
36  ||f�|�|d|�S||dkr�|j�|t
37  ||f�|�|d|�}|||jvr�t	�|j�|t||f�|�|d|�}||dkr�t	�|j�|t
38  ||f�|dS|�||�}||dkr�t	�|j�|t||f�|�|d|�}|S)zTokenize a formula.r�:�<�>�=)
�NEGATORSrrr�formula�QUANTIFIERSr�Declarationr%rr	�LOGICr+r$rrrr2ns>�zTNTLexer.formulac	Cs�|j�||�}|dur
t�t|jdd��}|D]K}|ddkrc|j�|t|||d�f�|j�|dtj	||d|d�f�|d|�
39  �kr^|j�|dt||d|�
40  ��f�|�
41  �Sq|j�|t|||�
42  ��f�|�
43  �S)zTokenize a rule.Nrr)�RULES�matchr�sorted�regsrrrrr*r)rrrr7�groups�grouprrr�rule�s&���	z
TNTLexer.rulecCs�|}|||jvr|d7}|||jvs	|j�|t||f�|j�|dt||d|�f�|}|j�||�}|dur?t�||��dkrIt�|j�|�	�t
44  j|�d�f�|j�|��t||��f�|��dS)zTokenize a line referral.rNr)r)
�NUMBERSrrr	r�LINENOSr7rrrrr*r;)rrrrr7rrr�lineno�s�"zTNTLexer.linenocCsv|}z||dkr|d7}||dks	Wn
ty!t|�}Ynw||kr3|j�|t|||�f�|�||�}|S)z?Mark everything from ``start`` to the end of the line as Error.�
45  r)rrrrr
46  r r$rrr�error_till_line_end�s���zTNTLexer.error_till_line_endcCszg|_|�d|�}}||krt|�k�r�n|jS�zi|||jvr0|d7}|||jvs%||krk|j�|tj|||�f�t|j�}z|�||d�}}Wntyj|j|d�=|�||�}}YWqw|j	�
47  ||�}|dur�|j�|t|||���f�|��}}|�||�}}Wq~||dvr�|j�|t
||f�|d7}|d7}nBt|j�}z
48  |�||�}}Wn2ttfy�|j|d�=|||jvr�|d7}|||jvs�|j�|t|||�f�|}Ynwt|j�}z|�||d�}}Wnt�y|j|d�=|�||�}}YWqwt|j�}z
49  |�||�}}Wnt�yD|j|d�=|�||�}}YWqw|�||�}}||dk�r�t|j�}z
50  |�||�}}Wnt�y||j|d�=|�||�}}YWqw|�||�}}Wn#t�y�z|j|d�=Wn
51  t�y�Ynw|�||�Ynw||k�r�t|�ks|jS|jS)zReturns a list of TNT tokens.rrTNz[]r()rr rr=rrr*rrA�COMMENTr7rrrr2�RecursionErrorrr
52  r<r?r�	NameError)rrrr�origr7rrr�get_tokens_unprocessed�s�J��
53  �
54  
55  ��
56  �
57  �
58  �����J�JzTNTLexer.get_tokens_unprocessedN)F) �__name__�
59  __module__�__qualname__�__doc__�name�url�aliases�	filenamesr�setr5r,r!r"r1r3r=r�re�compiler6r>rBrr r%r+r2r<r?rArFrrrrrs6
60  
61  	
62  
63  
64  "
)rJrP�pygments.lexerr�pygments.tokenrrrrrrr	r
65  �__all__rrrrr�<module>s
66  (