
    )                         S r SSKrSSKJrJrJrJr  SSKJrJ	r	J
r
JrJrJrJrJrJrJr  / SQr\R&                  " S5      r " S S\5      r " S	 S
\5      r " S S\5      rg)z
pygments.lexers.r
~~~~~~~~~~~~~~~~~

Lexers for the R/S languages.

:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerincludedo_insertions)
TextCommentOperatorKeywordNameStringNumberPunctuationGeneric
Whitespace)RConsoleLexerSLexerRdLexerz.*?
c                   0    \ rS rSrSrSrSS/rS/rS rSr	g	)
r      z8
For R console transcripts or R CMD BATCH output files.
RConsolerconsoleroutz*.Routc           	   #   ^  #    [        S0 U R                  D6nSn/ n[        R                  U5       H  nUR	                  5       nUR                  S5      (       d  UR                  S5      (       a:  UR                  [        U5      S[        R                  US S 4/45        X6SS  -  nMy  U(       a&  [        XBR                  U5      5       S h  vN   Sn/ nUR                  5       [        R                  U4v   M     U(       a#  [        XBR                  U5      5       S h  vN   g g  NZ N7f)N >+r       )r   optionsline_refinditergroup
startswithappendlenr   Promptr   get_tokens_unprocessedstartOutput)selftextslexercurrent_code_block
insertionsmatchlines          $lib/third_party/pygments/lexers/r.pyr'   $RConsoleLexer.get_tokens_unprocessed    s*    '$,,'
%%d+E;;=Ds##ts';'; !!3'9#:%&Ra$A#B#D E"12h." &,"$A$ABT$U W W W *,&!#JkkmW^^T99' ,0 $99:LMO O O WOs%   CD-D)AD-"D+#D-+D-r   N)
__name__
__module____qualname____firstlineno____doc__namealiases	filenamesr'   __static_attributes__r       r1   r   r      s%     D6"G
I Or<   r   c                      \ rS rSrSrSr/ SQr/ SQr/ SQrSr	S\
R                  4/\	\4/S	\4/S
\R                  4/S\4S\4/S\R"                  4S\R$                  R&                  4/S\R*                  4S\4/\" S5      S\4S\S4S\S4\" S5      \" S5      \" S5      \" S5      \" S5      \" S5      /
S\	-  \R2                  4\" S5      S\4S \4/S!\S"4/S#\S"4/S$.rS% rS&rg')(r   C   z;
For S, S-plus, and R source code.

.. versionadded:: 0.10
S)splussr)z*.Sz*.Rz	.Rhistoryz	.Rprofilez	.Renviron)ztext/S-plusztext/Sztext/x-r-sourceztext/x-rztext/x-Rztext/x-r-historyztext/x-r-profilez;`[^`\\]*(?:\\.[^`\\]*)*`|(?:[a-zA-Z]|\.[A-Za-z_.])[\w.]*|\.z#.*$z\[{1,2}|\]{1,2}|\(|\)|;|,zH(if|else|for|while|repeat|in|next|break|return|switch|function)(?![\w.])z(<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\?z$\*|\+|\^|/|!|%[^%]*%|=|~|\$|@|:{1,3}zm(NULL|NA(_(integer|real|complex|character)_)?|letters|LETTERS|Inf|TRUE|FALSE|NaN|pi|\.\.(\.|[0-9]+))(?![\w.])z(T|F)\bz#0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?z;[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+|\.)([eE][+-]?[0-9]+)?[Li]?commentsz\s+z\'string_squotez\"string_dquotebuiltin_symbols
valid_namenumberskeywordspunctuation	operatorsz(%s)\s*(?=\()
statementsz\{|\}.z([^\'\\]|\\.)*\'z#popz([^"\\]|\\.)*")rC   rG   rJ   rI   rK   rF   rH   rL   rootrD   rE   c                 >    [         R                  " SU 5      (       a  gg )Nz[a-z0-9_\])\s]<-(?!-)g)\(?)research)r+   s    r1   analyse_textSLexer.analyse_text   s    99-t44 5r<   r   N)r3   r4   r5   r6   r7   r8   r9   r:   	mimetypesrG   r   Singler   r   r
   Reservedr	   ConstantBuiltinPseudor   Hexr   r   r   Functionr   tokensrR   r;   r   r<   r1   r   r   C   s    D!GEIEI PJ gnn%
 
 *;7

 9(C4h?

  ,,-
 4VZZ@K	
 JZ FO,FO,%&L!IJM"K 
 
*DMM:L!{#4L
 !&&1
 /
BFHr<   r   c            
           \ rS rSrSrSrS/rS/rS/rSS\	R                  4S	\4S
\R                  4S\4S\R                  4S\R                   4S\4S\4/0rSrg)r      aQ  
Pygments Lexer for R documentation (Rd) files

This is a very minimal implementation, highlighting little more
than the macros. A description of Rd syntax is found in `Writing R
Extensions <http://cran.r-project.org/doc/manuals/R-exts.html>`_
and `Parsing Rd files <http://developer.r-project.org/parseRd.pdf>`_.

.. versionadded:: 1.6
Rdrdz*.Rdztext/x-r-docrN   z	\\[\\{}%]z%.*$z\\(?:cr|l?dots|R|tab)\bz\\[a-zA-Z]+\bz^\s*#(?:ifn?def|endif).*\bz[{}]z[^\\%\n{}]+rM   r   N)r3   r4   r5   r6   r7   r8   r9   r:   rT   r   Escaper   r
   rW   Preprocr   rX   r   r\   r;   r   r<   r1   r   r      s    	 DfGI I
 	6==)g')9)9:w'*GOO<dll#T"4L
Fr<   r   )r7   rP   pygments.lexerr   r   r   r   pygments.tokenr   r   r	   r
   r   r   r   r   r   r   __all__compiler    r   r   r   r   r<   r1   <module>rg      se    
 D D- - - 1 ::g)OE )OXTZ Tn$j $r<   