PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i5h-3LL

HOME


5h-3LL 1.0
DIR: /usr/lib/python2.7/dist-packages/pygments/lexers
/usr/lib/python2.7/dist-packages/pygments/lexers/
Upload File:
Current File : /usr/lib/python2.7/dist-packages/pygments/lexers/r.py
# -*- coding: utf-8 -*-
"""
    pygments.lexers.r
    ~~~~~~~~~~~~~~~~~

    Lexers for the R/S languages.

    :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""

import re

from pygments.lexer import Lexer, RegexLexer, include, words, do_insertions
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
    Number, Punctuation, Generic

__all__ = ['RConsoleLexer', 'SLexer', 'RdLexer']


line_re  = re.compile('.*?\n')


class RConsoleLexer(Lexer):
    """
    For R console transcripts or R CMD BATCH output files.
    """

    name = 'RConsole'
    aliases = ['rconsole', 'rout']
    filenames = ['*.Rout']

    def get_tokens_unprocessed(self, text):
        slexer = SLexer(**self.options)

        current_code_block = ''
        insertions = []

        for match in line_re.finditer(text):
            line = match.group()
            if line.startswith('>') or line.startswith('+'):
                # Colorize the prompt as such,
                # then put rest of line into current_code_block
                insertions.append((len(current_code_block),
                                   [(0, Generic.Prompt, line[:2])]))
                current_code_block += line[2:]
            else:
                # We have reached a non-prompt line!
                # If we have stored prompt lines, need to process them first.
                if current_code_block:
                    # Weave together the prompts and highlight code.
                    for item in do_insertions(
                            insertions, slexer.get_tokens_unprocessed(current_code_block)):
                        yield item
                    # Reset vars for next code block.
                    current_code_block = ''
                    insertions = []
                # Now process the actual line itself, this is output from R.
                yield match.start(), Generic.Output, line

        # If we happen to end on a code block with nothing after it, need to
        # process the last code block. This is neither elegant nor DRY so
        # should be changed.
        if current_code_block:
            for item in do_insertions(
                    insertions, slexer.get_tokens_unprocessed(current_code_block)):
                yield item


class SLexer(RegexLexer):
    """
    For S, S-plus, and R source code.

    .. versionadded:: 0.10
    """

    name = 'S'
    aliases = ['splus', 's', 'r']
    filenames = ['*.S', '*.R', '.Rhistory', '.Rprofile', '.Renviron']
    mimetypes = ['text/S-plus', 'text/S', 'text/x-r-source', 'text/x-r',
                 'text/x-R', 'text/x-r-history', 'text/x-r-profile']

    builtins_base = (
        'Arg', 'Conj', 'Cstack_info', 'Encoding', 'FALSE',
        'Filter', 'Find', 'I', 'ISOdate', 'ISOdatetime', 'Im', 'Inf',
        'La.svd', 'Map', 'Math.Date', 'Math.POSIXt', 'Math.data.frame',
        'Math.difftime', 'Math.factor', 'Mod', 'NA_character_',
        'NA_complex_', 'NA_real_', 'NCOL', 'NROW', 'NULLNA_integer_', 'NaN',
        'Negate', 'NextMethod', 'Ops.Date', 'Ops.POSIXt', 'Ops.data.frame',
        'Ops.difftime', 'Ops.factor', 'Ops.numeric_version', 'Ops.ordered',
        'Position', 'R.Version', 'R.home', 'R.version', 'R.version.string',
        'RNGkind', 'RNGversion', 'R_system_version', 'Re', 'Recall',
        'Reduce', 'Summary.Date', 'Summary.POSIXct', 'Summary.POSIXlt',
        'Summary.data.frame', 'Summary.difftime', 'Summary.factor',
        'Summary.numeric_version', 'Summary.ordered', 'Sys.Date',
        'Sys.chmod', 'Sys.getenv', 'Sys.getlocale', 'Sys.getpid',
        'Sys.glob', 'Sys.info', 'Sys.localeconv', 'Sys.readlink',
        'Sys.setFileTime', 'Sys.setenv', 'Sys.setlocale', 'Sys.sleep',
        'Sys.time', 'Sys.timezone', 'Sys.umask', 'Sys.unsetenv',
        'Sys.which', 'TRUE', 'UseMethod', 'Vectorize', 'abbreviate', 'abs',
        'acos', 'acosh', 'addNA', 'addTaskCallback', 'agrep', 'alist',
        'all', 'all.equal', 'all.equal.POSIXct', 'all.equal.character',
        'all.equal.default', 'all.equal.factor', 'all.equal.formula',
        'all.equal.language', 'all.equal.list', 'all.equal.numeric',
        'all.equal.raw', 'all.names', 'all.vars', 'any', 'anyDuplicated',
        'anyDuplicated.array', 'anyDuplicated.data.frame',
        'anyDuplicated.default', 'anyDuplicated.matrix', 'aperm',
        'aperm.default', 'aperm.table', 'append', 'apply', 'args',
        'arrayInd', 'as.Date', 'as.Date.POSIXct', 'as.Date.POSIXlt',
        'as.Date.character', 'as.Date.date', 'as.Date.dates',
        'as.Date.default', 'as.Date.factor', 'as.Date.numeric',
        'as.POSIXct', 'as.POSIXct.Date', 'as.POSIXct.POSIXlt',
        'as.POSIXct.date', 'as.POSIXct.dates', 'as.POSIXct.default',
        'as.POSIXct.numeric', 'as.POSIXlt', 'as.POSIXlt.Date',
        'as.POSIXlt.POSIXct', 'as.POSIXlt.character', 'as.POSIXlt.date',
        'as.POSIXlt.dates', 'as.POSIXlt.default', 'as.POSIXlt.factor',
        'as.POSIXlt.numeric', 'as.array', 'as.array.default', 'as.call',
        'as.character', 'as.character.Date', 'as.character.POSIXt',
        'as.character.condition', 'as.character.default',
        'as.character.error', 'as.character.factor', 'as.character.hexmode',
        'as.character.numeric_version', 'as.character.octmode',
        'as.character.srcref', 'as.complex', 'as.data.frame',
        'as.data.frame.AsIs', 'as.data.frame.Date', 'as.data.frame.POSIXct',
        'as.data.frame.POSIXlt', 'as.data.frame.array',
        'as.data.frame.character', 'as.data.frame.complex',
        'as.data.frame.data.frame', 'as.data.frame.default',
        'as.data.frame.difftime', 'as.data.frame.factor',
        'as.data.frame.integer', 'as.data.frame.list',
        'as.data.frame.logical', 'as.data.frame.matrix',
        'as.data.frame.model.matrix', 'as.data.frame.numeric',
        'as.data.frame.numeric_version', 'as.data.frame.ordered',
        'as.data.frame.raw', 'as.data.frame.table', 'as.data.frame.ts',
        'as.data.frame.vector', 'as.difftime', 'as.double',
        'as.double.POSIXlt', 'as.double.difftime', 'as.environment',
        'as.expression', 'as.expression.default', 'as.factor',
        'as.function', 'as.function.default', 'as.hexmode', 'as.integer',
        'as.list', 'as.list.Date', 'as.list.POSIXct', 'as.list.data.frame',
        'as.list.default', 'as.list.environment', 'as.list.factor',
        'as.list.function', 'as.list.numeric_version', 'as.logical',
        'as.logical.factor', 'as.matrix', 'as.matrix.POSIXlt',
        'as.matrix.data.frame', 'as.matrix.default', 'as.matrix.noquote',
        'as.name', 'as.null', 'as.null.default', 'as.numeric',
        'as.numeric_version', 'as.octmode', 'as.ordered',
        'as.package_version', 'as.pairlist', 'as.qr', 'as.raw', 'as.single',
        'as.single.default', 'as.symbol', 'as.table', 'as.table.default',
        'as.vector', 'as.vector.factor', 'asNamespace', 'asS3', 'asS4',
        'asin', 'asinh', 'assign', 'atan', 'atan2', 'atanh',
        'attachNamespace', 'attr', 'attr.all.equal', 'attributes',
        'autoload', 'autoloader', 'backsolve', 'baseenv', 'basename',
        'besselI', 'besselJ', 'besselK', 'besselY', 'beta',
        'bindingIsActive', 'bindingIsLocked', 'bindtextdomain', 'bitwAnd',
        'bitwNot', 'bitwOr', 'bitwShiftL', 'bitwShiftR', 'bitwXor', 'body',
        'bquote', 'browser', 'browserCondition', 'browserSetDebug',
        'browserText', 'builtins', 'by', 'by.data.frame', 'by.default',
        'bzfile', 'c.Date', 'c.POSIXct', 'c.POSIXlt', 'c.noquote',
        'c.numeric_version', 'call', 'callCC', 'capabilities', 'casefold',
        'cat', 'category', 'cbind', 'cbind.data.frame', 'ceiling',
        'char.expand', 'charToRaw', 'charmatch', 'chartr', 'check_tzones',
        'chol', 'chol.default', 'chol2inv', 'choose', 'class',
        'clearPushBack', 'close', 'close.connection', 'close.srcfile',
        'close.srcfilealias', 'closeAllConnections', 'col', 'colMeans',
        'colSums', 'colnames', 'commandArgs', 'comment', 'computeRestarts',
        'conditionCall', 'conditionCall.condition', 'conditionMessage',
        'conditionMessage.condition', 'conflicts', 'contributors', 'cos',
        'cosh', 'crossprod', 'cummax', 'cummin', 'cumprod', 'cumsum', 'cut',
        'cut.Date', 'cut.POSIXt', 'cut.default', 'dQuote', 'data.class',
        'data.matrix', 'date', 'debug', 'debugonce',
        'default.stringsAsFactors', 'delayedAssign', 'deparse', 'det',
        'determinant', 'determinant.matrix', 'dget', 'diag', 'diff',
        'diff.Date', 'diff.POSIXt', 'diff.default', 'difftime', 'digamma',
        'dim', 'dim.data.frame', 'dimnames', 'dimnames.data.frame', 'dir',
        'dir.create', 'dirname', 'do.call', 'dput', 'drop', 'droplevels',
        'droplevels.data.frame', 'droplevels.factor', 'dump', 'duplicated',
        'duplicated.POSIXlt', 'duplicated.array', 'duplicated.data.frame',
        'duplicated.default', 'duplicated.matrix',
        'duplicated.numeric_version', 'dyn.load', 'dyn.unload', 'eapply',
        'eigen', 'else', 'emptyenv', 'enc2native', 'enc2utf8',
        'encodeString', 'enquote', 'env.profile', 'environment',
        'environmentIsLocked', 'environmentName', 'eval', 'eval.parent',
        'evalq', 'exists', 'exp', 'expand.grid', 'expm1', 'expression',
        'factor', 'factorial', 'fifo', 'file', 'file.access', 'file.append',
        'file.choose', 'file.copy', 'file.create', 'file.exists',
        'file.info', 'file.link', 'file.path', 'file.remove', 'file.rename',
        'file.show', 'file.symlink', 'find.package', 'findInterval',
        'findPackageEnv', 'findRestart', 'floor', 'flush',
        'flush.connection', 'force', 'formals', 'format',
        'format.AsIs', 'format.Date', 'format.POSIXct', 'format.POSIXlt',
        'format.data.frame', 'format.default', 'format.difftime',
        'format.factor', 'format.hexmode', 'format.info',
        'format.libraryIQR', 'format.numeric_version', 'format.octmode',
        'format.packageInfo', 'format.pval', 'format.summaryDefault',
        'formatC', 'formatDL', 'forwardsolve', 'gamma', 'gc', 'gc.time',
        'gcinfo', 'gctorture', 'gctorture2', 'get', 'getAllConnections',
        'getCallingDLL', 'getCallingDLLe', 'getConnection',
        'getDLLRegisteredRoutines', 'getDLLRegisteredRoutines.DLLInfo',
        'getDLLRegisteredRoutines.character', 'getElement',
        'getExportedValue', 'getHook', 'getLoadedDLLs', 'getNamespace',
        'getNamespaceExports', 'getNamespaceImports', 'getNamespaceInfo',
        'getNamespaceName', 'getNamespaceUsers', 'getNamespaceVersion',
        'getNativeSymbolInfo', 'getOption', 'getRversion', 'getSrcLines',
        'getTaskCallbackNames', 'geterrmessage', 'gettext', 'gettextf',
        'getwd', 'gl', 'globalenv', 'gregexpr', 'grep', 'grepRaw', 'grepl',
        'gsub', 'gzcon', 'gzfile', 'head', 'iconv', 'iconvlist',
        'icuSetCollate', 'identical', 'identity', 'ifelse', 'importIntoEnv',
        'in', 'inherits', 'intToBits', 'intToUtf8', 'interaction', 'interactive',
        'intersect', 'inverse.rle', 'invisible', 'invokeRestart',
        'invokeRestartInteractively', 'is.R', 'is.array', 'is.atomic',
        'is.call', 'is.character', 'is.complex', 'is.data.frame',
        'is.double', 'is.element', 'is.environment', 'is.expression',
        'is.factor', 'is.finite', 'is.function', 'is.infinite',
        'is.integer', 'is.language', 'is.list', 'is.loaded', 'is.logical',
        'is.matrix', 'is.na', 'is.na.POSIXlt', 'is.na.data.frame',
        'is.na.numeric_version', 'is.name', 'is.nan', 'is.null',
        'is.numeric', 'is.numeric.Date', 'is.numeric.POSIXt',
        'is.numeric.difftime', 'is.numeric_version', 'is.object',
        'is.ordered', 'is.package_version', 'is.pairlist', 'is.primitive',
        'is.qr', 'is.raw', 'is.recursive', 'is.single', 'is.symbol',
        'is.table', 'is.unsorted', 'is.vector', 'isBaseNamespace',
        'isIncomplete', 'isNamespace', 'isOpen', 'isRestart', 'isS4',
        'isSeekable', 'isSymmetric', 'isSymmetric.matrix', 'isTRUE',
        'isatty', 'isdebugged', 'jitter', 'julian', 'julian.Date',
        'julian.POSIXt', 'kappa', 'kappa.default', 'kappa.lm', 'kappa.qr',
        'kronecker', 'l10n_info', 'labels', 'labels.default', 'lapply',
        'lazyLoad', 'lazyLoadDBexec', 'lazyLoadDBfetch', 'lbeta', 'lchoose',
        'length', 'length.POSIXlt', 'letters', 'levels', 'levels.default',
        'lfactorial', 'lgamma', 'library.dynam', 'library.dynam.unload',
        'licence', 'license', 'list.dirs', 'list.files', 'list2env', 'load',
        'loadNamespace', 'loadedNamespaces', 'loadingNamespaceInfo',
        'local', 'lockBinding', 'lockEnvironment', 'log', 'log10', 'log1p',
        'log2', 'logb', 'lower.tri', 'ls', 'make.names', 'make.unique',
        'makeActiveBinding', 'mapply', 'margin.table', 'mat.or.vec',
        'match', 'match.arg', 'match.call', 'match.fun', 'max', 'max.col',
        'mean', 'mean.Date', 'mean.POSIXct', 'mean.POSIXlt', 'mean.default',
        'mean.difftime', 'mem.limits', 'memCompress', 'memDecompress',
        'memory.profile', 'merge', 'merge.data.frame', 'merge.default',
        'message', 'mget', 'min', 'missing', 'mode', 'month.abb',
        'month.name', 'months', 'months.Date', 'months.POSIXt',
        'months.abb', 'months.nameletters', 'names', 'names.POSIXlt',
        'namespaceExport', 'namespaceImport', 'namespaceImportClasses',
        'namespaceImportFrom', 'namespaceImportMethods', 'nargs', 'nchar',
        'ncol', 'new.env', 'ngettext', 'nlevels', 'noquote', 'norm',
        'normalizePath', 'nrow', 'numeric_version', 'nzchar', 'objects',
        'oldClass', 'on.exit', 'open', 'open.connection', 'open.srcfile',
        'open.srcfilealias', 'open.srcfilecopy', 'options', 'order',
        'ordered', 'outer', 'packBits', 'packageEvent',
        'packageHasNamespace', 'packageStartupMessage', 'package_version',
        'pairlist', 'parent.env', 'parent.frame', 'parse',
        'parseNamespaceFile', 'paste', 'paste0', 'path.expand',
        'path.package', 'pipe', 'pmatch', 'pmax', 'pmax.int', 'pmin',
        'pmin.int', 'polyroot', 'pos.to.env', 'pretty', 'pretty.default',
        'prettyNum', 'print', 'print.AsIs', 'print.DLLInfo',
        'print.DLLInfoList', 'print.DLLRegisteredRoutines', 'print.Date',
        'print.NativeRoutineList', 'print.POSIXct', 'print.POSIXlt',
        'print.by', 'print.condition', 'print.connection',
        'print.data.frame', 'print.default', 'print.difftime',
        'print.factor', 'print.function', 'print.hexmode',
        'print.libraryIQR', 'print.listof', 'print.noquote',
        'print.numeric_version', 'print.octmode', 'print.packageInfo',
        'print.proc_time', 'print.restart', 'print.rle',
        'print.simple.list', 'print.srcfile', 'print.srcref',
        'print.summary.table', 'print.summaryDefault', 'print.table',
        'print.warnings', 'prmatrix', 'proc.time', 'prod', 'prop.table',
        'provideDimnames', 'psigamma', 'pushBack', 'pushBackLength', 'q',
        'qr', 'qr.Q', 'qr.R', 'qr.X', 'qr.coef', 'qr.default', 'qr.fitted',
        'qr.qty', 'qr.qy', 'qr.resid', 'qr.solve', 'quarters',
        'quarters.Date', 'quarters.POSIXt', 'quit', 'quote', 'range',
        'range.default', 'rank', 'rapply', 'raw', 'rawConnection',
        'rawConnectionValue', 'rawShift', 'rawToBits', 'rawToChar', 'rbind',
        'rbind.data.frame', 'rcond', 'read.dcf', 'readBin', 'readChar',
        'readLines', 'readRDS', 'readRenviron', 'readline', 'reg.finalizer',
        'regexec', 'regexpr', 'registerS3method', 'registerS3methods',
        'regmatches', 'remove', 'removeTaskCallback', 'rep', 'rep.Date',
        'rep.POSIXct', 'rep.POSIXlt', 'rep.factor', 'rep.int',
        'rep.numeric_version', 'rep_len', 'replace', 'replicate',
        'requireNamespace', 'restartDescription', 'restartFormals',
        'retracemem', 'rev', 'rev.default', 'rle', 'rm', 'round',
        'round.Date', 'round.POSIXt', 'row', 'row.names',
        'row.names.data.frame', 'row.names.default', 'rowMeans', 'rowSums',
        'rownames', 'rowsum', 'rowsum.data.frame', 'rowsum.default',
        'sQuote', 'sample', 'sample.int', 'sapply', 'save', 'save.image',
        'saveRDS', 'scale', 'scale.default', 'scan', 'search',
        'searchpaths', 'seek', 'seek.connection', 'seq', 'seq.Date',
        'seq.POSIXt', 'seq.default', 'seq.int', 'seq_along', 'seq_len',
        'sequence', 'serialize', 'set.seed', 'setHook', 'setNamespaceInfo',
        'setSessionTimeLimit', 'setTimeLimit', 'setdiff', 'setequal',
        'setwd', 'shQuote', 'showConnections', 'sign', 'signalCondition',
        'signif', 'simpleCondition', 'simpleError', 'simpleMessage',
        'simpleWarning', 'simplify2array', 'sin', 'single',
        'sinh', 'sink', 'sink.number', 'slice.index', 'socketConnection',
        'socketSelect', 'solve', 'solve.default', 'solve.qr', 'sort',
        'sort.POSIXlt', 'sort.default', 'sort.int', 'sort.list', 'split',
        'split.Date', 'split.POSIXct', 'split.data.frame', 'split.default',
        'sprintf', 'sqrt', 'srcfile', 'srcfilealias', 'srcfilecopy',
        'srcref', 'standardGeneric', 'stderr', 'stdin', 'stdout', 'stop',
        'stopifnot', 'storage.mode', 'strftime', 'strptime', 'strsplit',
        'strtoi', 'strtrim', 'structure', 'strwrap', 'sub', 'subset',
        'subset.data.frame', 'subset.default', 'subset.matrix',
        'substitute', 'substr', 'substring', 'sum', 'summary',
        'summary.Date', 'summary.POSIXct', 'summary.POSIXlt',
        'summary.connection', 'summary.data.frame', 'summary.default',
        'summary.factor', 'summary.matrix', 'summary.proc_time',
        'summary.srcfile', 'summary.srcref', 'summary.table',
        'suppressMessages', 'suppressPackageStartupMessages',
        'suppressWarnings', 'svd', 'sweep', 'sys.call', 'sys.calls',
        'sys.frame', 'sys.frames', 'sys.function', 'sys.load.image',
        'sys.nframe', 'sys.on.exit', 'sys.parent', 'sys.parents',
        'sys.save.image', 'sys.source', 'sys.status', 'system',
        'system.file', 'system.time', 'system2', 't', 't.data.frame',
        't.default', 'table', 'tabulate', 'tail', 'tan', 'tanh', 'tapply',
        'taskCallbackManager', 'tcrossprod', 'tempdir', 'tempfile',
        'testPlatformEquivalence', 'textConnection', 'textConnectionValue',
        'toString', 'toString.default', 'tolower', 'topenv', 'toupper',
        'trace', 'traceback', 'tracemem', 'tracingState', 'transform',
        'transform.data.frame', 'transform.default', 'trigamma', 'trunc',
        'trunc.Date', 'trunc.POSIXt', 'truncate', 'truncate.connection',
        'try', 'tryCatch', 'typeof', 'unclass', 'undebug', 'union',
        'unique', 'unique.POSIXlt', 'unique.array', 'unique.data.frame',
        'unique.default', 'unique.matrix', 'unique.numeric_version',
        'units', 'units.difftime', 'unix.time', 'unlink', 'unlist',
        'unloadNamespace', 'unlockBinding', 'unname', 'unserialize',
        'unsplit', 'untrace', 'untracemem', 'unz', 'upper.tri', 'url',
        'utf8ToInt', 'vapply', 'version', 'warning', 'warnings', 'weekdays',
        'weekdays.Date', 'weekdays.POSIXt', 'which', 'which.max',
        'which.min', 'with', 'with.default', 'withCallingHandlers',
        'withRestarts', 'withVisible', 'within', 'within.data.frame',
        'within.list', 'write', 'write.dcf', 'writeBin', 'writeChar',
        'writeLines', 'xor', 'xor.hexmode', 'xor.octmode',
        'xpdrows.data.frame', 'xtfrm', 'xtfrm.AsIs', 'xtfrm.Date',
        'xtfrm.POSIXct', 'xtfrm.POSIXlt', 'xtfrm.Surv', 'xtfrm.default',
        'xtfrm.difftime', 'xtfrm.factor', 'xtfrm.numeric_version', 'xzfile',
        'zapsmall'
    )

    tokens = {
        'comments': [
            (r'#.*$', Comment.Single),
        ],
        'valid_name': [
            (r'[a-zA-Z][\w.]*', Text),
            # can begin with ., but not if that is followed by a digit
            (r'\.[a-zA-Z_][\w.]*', Text),
        ],
        'punctuation': [
            (r'\[{1,2}|\]{1,2}|\(|\)|;|,', Punctuation),
        ],
        'keywords': [
            (words(builtins_base, suffix=r'(?![\w. =])'),
             Keyword.Pseudo),
            (r'(if|else|for|while|repeat|in|next|break|return|switch|function)'
             r'(?![\w.])',
             Keyword.Reserved),
            (r'(array|category|character|complex|double|function|integer|list|'
             r'logical|matrix|numeric|vector|data.frame|c)'
             r'(?![\w.])',
             Keyword.Type),
            (r'(library|require|attach|detach|source)'
             r'(?![\w.])',
             Keyword.Namespace)
        ],
        'operators': [
            (r'<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\?', Operator),
            (r'\*|\+|\^|/|!|%[^%]*%|=|~|\$|@|:{1,3}', Operator)
        ],
        'builtin_symbols': [
            (r'(NULL|NA(_(integer|real|complex|character)_)?|'
             r'letters|LETTERS|Inf|TRUE|FALSE|NaN|pi|\.\.(\.|[0-9]+))'
             r'(?![\w.])',
             Keyword.Constant),
            (r'(T|F)\b', Name.Builtin.Pseudo),
        ],
        'numbers': [
            # hex number
            (r'0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?', Number.Hex),
            # decimal number
            (r'[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+|\.)([eE][+-]?[0-9]+)?[Li]?',
             Number),
        ],
        'statements': [
            include('comments'),
            # whitespaces
            (r'\s+', Text),
            (r'`.*?`', String.Backtick),
            (r'\'', String, 'string_squote'),
            (r'\"', String, 'string_dquote'),
            include('builtin_symbols'),
            include('numbers'),
            include('keywords'),
            include('punctuation'),
            include('operators'),
            include('valid_name'),
        ],
        'root': [
            include('statements'),
            # blocks:
            (r'\{|\}', Punctuation),
            # (r'\{', Punctuation, 'block'),
            (r'.', Text),
        ],
        # 'block': [
        #    include('statements'),
        #    ('\{', Punctuation, '#push'),
        #    ('\}', Punctuation, '#pop')
        # ],
        'string_squote': [
            (r'([^\'\\]|\\.)*\'', String, '#pop'),
        ],
        'string_dquote': [
            (r'([^"\\]|\\.)*"', String, '#pop'),
        ],
    }

    def analyse_text(text):
        if re.search(r'[a-z0-9_\])\s]<-(?!-)', text):
            return 0.11


class RdLexer(RegexLexer):
    """
    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 <developer.r-project.org/parseRd.pdf>`_.

    .. versionadded:: 1.6
    """
    name = 'Rd'
    aliases = ['rd']
    filenames = ['*.Rd']
    mimetypes = ['text/x-r-doc']

    # To account for verbatim / LaTeX-like / and R-like areas
    # would require parsing.
    tokens = {
        'root': [
            # catch escaped brackets and percent sign
            (r'\\[\\{}%]', String.Escape),
            # comments
            (r'%.*$', Comment),
            # special macros with no arguments
            (r'\\(?:cr|l?dots|R|tab)\b', Keyword.Constant),
            # macros
            (r'\\[a-zA-Z]+\b', Keyword),
            # special preprocessor macros
            (r'^\s*#(?:ifn?def|endif).*\b', Comment.Preproc),
            # non-escaped brackets
            (r'[{}]', Name.Builtin),
            # everything else
            (r'[^\\%\n{}]+', Text),
            (r'.', Text),
        ]
    }