YBFj(hdZddlZddlmZddlmZmZmZmZm Z m Z m Z m Z dgZ GddeZdS)z pygments.lexers.tnt ~~~~~~~~~~~~~~~~~~~ Lexer for Typographic Number Theory. :copyright: Copyright 2006-present by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N)Lexer)TextCommentOperatorKeywordNameNumber PunctuationErrorTNTLexercveZdZdZdZdZdgZdgZdZgZ e dZ e dZ e d Z e d Ze d Ze d Ze d Ze dZejdZejdZejdZdZddZdZdZdZdZdZdZdZ dS)r uz Lexer for Typographic Number Theory, as described in the book Gödel, Escher, Bach, by Douglas R. Hofstadter zTypographic Number Theoryz,https://github.com/Kenny2github/language-tnttntz*.tntz2.7u⊃→]&∧^|∨Vvu+.⋅*abcdeu'′z~!uAE∀∃ 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>tj|g|Ri|g|_dS)N)r__init__cur)selfargskwargss AC:\PYTHON\_runtimes\venv\Lib\site-packages\pygments/lexers/tnt.pyrzTNTLexer.__init__7s- t-d---f---Fc|} |||jvr|dz }|||jvn#t$rt|}YnwxYw|r ||krt||kr*|j|t |||f|S)zTokenize whitespace.) WHITESPACE IndexErrorlenAssertionErrorrappendr)rstarttextrequiredends r whitespacezTNTLexer.whitespace;s s)t..qs)t..   d))CCC   !u  %<< HOOUD$uSy/: ; ; ; s#(AAc|||jvrt|dz}|||jvr|dz }|||jv|j|t j|||f|S)zTokenize a variable.r) VARIABLESrPRIMESrrrVariablerr r!r#s rvariablezTNTLexer.variableIsy ;dn , , Ag3i4;&& 1HC3i4;&&  tE#I?@@@ rc||dkrg|dz}||dkr|dz }||dk|j|tj|||f|||S||dkr2|j|tj||f|dzS|||jvr|||S||dkr|j|t||f||dz|}|||jvrt|j|t||f||dz|}||dkrt|j|t||f|dzSt)zTokenize a term.Sr0()) rrr Integertermr&r*r OPERATORSrrr)s rr1z TNTLexer.termSs ;#  'Cs)s""qs)s"" HOOUFNDsOD E E E99S$'' ' ;#   HOOUFNDK@ A A A7N ;$. ( (==-- - ;#   HOOUKe= > > >IIeAgt,,EE{$.00$$ HOOUHd5k: ; ; ;IIeAgt,,EE{c!!$$ HOOUKe= > > >7Nrc|||jvrh|dz}|||jvr|dz }|||jv|j|t|||f|||S|||jvr|j|t j||f||dz|}||dkrt|j|t||f||dz|S||dkr|j|t||f||dz|}|||j vrt|j|t||f||dz|}||dkrt|j|t||f|dzS| ||}||dkrt|j|t||f| |dz|}|S)zTokenize a formula.r:<>=) NEGATORSrrrformula QUANTIFIERSr Declarationr*rr LOGICr1r)s rr9zTNTLexer.formulamsI ;$- ' ''Cs)t},,qs)t},, HOOUHd59o> ? ? ?<<T** * ;$* * * HOOUG$7eE F F FMM%'400EE{c!!$$ HOOUKe= > > ><<a.. . ;#   HOOUKe= > > >LLq$//EE{$*,,$$ HOOUHd5k: ; ; ;LLq$//EE{c!!$$ HOOUKe= > > >7N %&& ;#    $u+6777 %'4(( rc |j||}|tt|jdd}|D]}|ddkr|j|t|||df|j|dtj ||d|df|d| krH|j|dt||d| fn=|j|t||| f| S)zTokenize a rule.Nrr) RULESmatchrsortedregsrrrr r0r#)rr r!r?groupsgroups rrulez TNTLexer.rules]   u-- =  122'' G GEQx1}}eE!Hn1E FGGGq6>!%eAhuQx&7!8!:;;;8uyy{{**HOOU1Xw%)%(599;;*>%?%ABBB HOOUGT% 2C-DE F F Fyy{{rc|}|||jvr|dz }|||jv|j|t||f|j|dzt||dz|f|}|j||}|t||dkrt|j| tj | df|j|t||f|dzS)zTokenize a line referral.rNr/r) NUMBERSrrr rLINENOSr?rr#r r r0rC)rr r!r#r?s rlinenozTNTLexer.linenos53it|++ 1HC3it|++  T%[9::: q$U1WS[(9:;;; ""4// =   # #   AGHHH k4 3DEFFFyy{{Qrc|} ||dkr|dz }||dkn#t$rt|}YnwxYw||kr*|j|t|||f|||}|S)z?Mark everything from ``start`` to the end of the line as Error. r)rrrrr r$r)s rerror_till_line_endzTNTLexer.error_till_line_ends s)t##qs)t##   d))CCC  %<< HOOUE4c ?; < < <ooc4(( s ">>cJg|_|d|x}}||cxkrt|krnn |||jvr|dz }|||jv||kr|j|t j|||ft|j} |||dx}}n2#t$r%|j|d=|||x}}YwxYw|j ||}|l|j|t||| f| x}}|||x}}b~||dvr3|j|t||f|dz }|dz }nt|j} |||x}}np#ttf$r\|j|d=|||jvr|dz }|||jv|j|t"|||f|}YnwxYwt|j} |||dx}}n3#t$r&|j|d=|||x}}YwxYwt|j} |||x}}n3#t$r&|j|d=|||x}}YwxYw|||x}}||dkryt|j} |||x}}n3#t$r&|j|d=|||x}}YwxYw|||x}}nB#t($r5 |j|d=n#t*$rYnwxYw|||YnwxYw||cxkrt|kn|jS)zReturns a list of TNT tokens.rrTNz[]r.)rr$rrFrr r0rrKCOMMENTr?rr#rr9RecursionErrorrr rDrHr NameError)rr!r r#origr?s rget_tokens_unprocessedzTNTLexer.get_tokens_unprocessedsooa...s&&&&SYY&&&&&H 63i4<//1HC3i4<//%<<HOOUFNDsO$LMMMtx==D!&*ooc4&F&FF)!!! HTUUO&*&>&>sD&I&II !  **477$HOOUGT% :K5L$MNNN"'))++-EC"&":":5$"G"GGEC;$&&HOOUGT%[$ABBBQJE1HCCtx==D$&*ll5$&?&??*N;$$$ HTUUO"3it>>1HC#3it>>tE#I(GHHH # $48}}"&//#tT"B"BBECC%"&":":5$"G"GGECH 48}}"&))E4"8"88ECC%"&":":5$"G"GGECH #ooc4888;#%%tx==D!&*kk%&>&>>)!!! HTUUO&*&>&>ud&K&KK !#'//%">">>EC 6 6 6 D((55555  6Is&&&&SYY&&&&TxsA,N?-CN?,C63N?5C66B N?AN?G.-N?.A*IN?IN?3J N? ,J=9N?<J==N?K.-N?.,LN?L;N?M32N?3,N#N?"N##N?? O> OO> O"O>!O""O>=O>N)F)!__name__ __module__ __qualname____doc__nameurlaliases filenames version_addedrsetr<r2r&r'r8r:rFrrecompiler>rGrMrr$r*r1r9rDrHrKrQrrr r s~ 'D 8CgG IM C C$ % %EH IG I S[[Fs4yyH#j//Kc,GYJ BJ  EbjDEEGbj))G    4   D&"   NNNNNr)rUr\pygments.lexerrpygments.tokenrrrrrr r r __all__r r^rrrbs  ,zzzzzuzzzzzr