o a@sdZddlmZmZmZmZmZmZmZddl m Z m Z m Z m Z mZmZmZmZmZgdZGdddeZGdddeZGd d d eZGd d d eZd dZddZGdddeZGdddeZdS)z pygments.lexers.graphics ~~~~~~~~~~~~~~~~~~~~~~~~ Lexers for computer graphics and plotting related languages. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. ) RegexLexerwordsincludebygroupsusingthisdefault) TextCommentOperatorKeywordNameNumber PunctuationString Whitespace) GLShaderLexerPostScriptLexerAsymptoteLexer GnuplotLexer PovrayLexerHLSLShaderLexerc@seZdZdZdZdgZgdZdgZddej fdej fd ej fd e fd e fd e fd e fdejfdejfdejfdejfdejfeddddefeddddejfeddddejfeddddejfdejfdefde fdefgiZdS)rz@ GLSL (OpenGL Shader) lexer. .. versionadded:: 1.1 GLSLglsl)z*.vertz*.fragz*.geoztext/x-glslsrcroot^#.*$//.*$/(\\\n)?[*](.|\n)*?[*](\\\n)?/0\+|-|~|!=?|\*|/|%|<<|>>|<=?|>=?|==?|&&?|\^|\|\|?[?:] \bdefined\bz [;{}(),\[\]]z[+-]?\d*\.\d+([eE][-+]?\d+)?z[+-]?\d+\.\d*([eE][-+]?\d+)?0[xX][0-9a-fA-F]*0[0-7]* [1-9][0-9]*)) attributeconstuniformvaryingbuffersharedinoutlayoutflatsmooth noperspectivecentroidsamplepatchinoutlowpmediumphighp precision invariantprecisecoherentvolatilerestrictreadonly writeonlybreakcontinuedoforwhileswitchcaserifelse subroutinediscardreturnstruct\bprefixsuffixtruefalse)wvoid atomic_uintfloatvec2vec3vec4doubledvec2dvec3dvec4intivec2ivec3ivec4uintuvec2uvec3uvec4boolbvec2bvec3bvec4mat2mat3mat4dmat2dmat3dmat4mat2x2mat2x3mat2x4dmat2x2dmat2x3dmat2x4mat3x2mat3x3mat3x4dmat3x2dmat3x3dmat3x4mat4x2mat4x3mat4x4dmat4x2dmat4x3dmat4x4 sampler1D sampler2D sampler3D samplerCubesampler1DArraysampler2DArraysamplerCubeArray sampler2DRect samplerBuffer sampler2DMSsampler2DMSArraysampler1DShadowsampler2DShadowsamplerCubeShadowsampler1DArrayShadowsampler2DArrayShadowsamplerCubeArrayShadowsampler2DRectShadow isampler1D isampler2D isampler3D isamplerCubeisampler1DArrayisampler2DArrayisamplerCubeArrayisampler2DRectisamplerBuffer isampler2DMSisampler2DMSArray usampler1D usampler2D usampler3D usamplerCubeusampler1DArrayusampler2DArrayusamplerCubeArrayusampler2DRectusamplerBuffer usampler2DMSusampler2DMSArrayimage1Dimage2Dimage3D imageCube image1DArray image2DArrayimageCubeArray image2DRect imageBuffer image2DMSimage2DMSArrayiimage1Diimage2Diimage3D iimageCube iimage1DArray iimage2DArrayiimageCubeArray iimage2DRect iimageBuffer iimage2DMSiimage2DMSArrayuimage1Duimage2Duimage3D uimageCube uimage1DArray uimage2DArrayuimageCubeArray uimage2DRect uimageBuffer uimage2DMSuimage2DMSArray)'common partitionactiveasmclassunionenumtypedeftemplaterresourcegotoinlinenoinlinepublicstaticexternexternal interfacelongshorthalffixedunsignedsuperpinputoutputhvec2hvec3hvec4fvec2fvec3fvec4 sampler3DRectfiltersizeofcast namespacerzgl_\w* [a-zA-Z_]\w*z\.\s+N)__name__ __module__ __qualname____doc__namealiases filenames mimetypesr PreprocSingle Multiliner rrFloatHexOctIntegerrr ConstantTypeReservedr Builtinrtokensrr:/usr/lib/python3/dist-packages/pygments/lexers/graphics.pyrs^234   rc@s^eZdZdZdZdgZddgZdgZdej fdej fd ej fd e fd e fd e fd e fdejfdejfdejfdejfdejfdedfeddddefeddddejfeddddejfeddddejfeddddejfeddddejfeddddejfdejfed dddejfd!efd"ej fd#efgded$fd%ejfd&efd'efd(efgd)Zd*S)+rzL HLSL (Microsoft Direct3D Shader) lexer. .. versionadded:: 2.3 HLSLhlslz*.hlslz*.hlsliz text/x-hlslrrrrrr z [;{}(),.\[\]]z[+-]?\d*\.\d+([eE][-+]?\d+)?f?z[+-]?\d+\.\d*([eE][-+]?\d+)?f?r!r"r#"string)?r asm_fragmentr?rEcbufferr0r column_majorcompilecompile_fragmentr%r@rrIrArGexportrrBfxgroupgloballycoherent groupsharedrFr*rr3rlinelineadjlinearrnointerpolationr/NULLr+ packoffsetpass pixelfragmentpointr9rJregister row_majorr1samplerr) stateblockstateblock_staterrKrDtbuffer technique technique10 technique11texturertriangle triangleadjr&vertexfragmentr;rCrLrMrP)autocatchchar const_castdelete dynamic_castrexplicitfriendrrmutablenewoperatorprivate protectedrreinterpret_castrsignedr static_castrrthrowtrytypenamerrrvirtual)6dwordmatrixsnormr unormrrSvector BlendStateBufferByteAddressBuffer ComputeShaderDepthStencilStateDepthStencilView DomainShaderGeometryShader HullShader InputPatch LineStream OutputPatch PixelShader PointStreamRasterizerStateRenderTargetViewRasterizerOrderedBuffer"RasterizerOrderedByteAddressBuffer!RasterizerOrderedStructuredBufferRasterizerOrderedTexture1DRasterizerOrderedTexture1DArrayRasterizerOrderedTexture2DRasterizerOrderedTexture2DArrayRasterizerOrderedTexture3DRWBufferRWByteAddressBufferRWStructuredBuffer RWTexture1DRWTexture1DArray RWTexture2DRWTexture2DArray RWTexture3D SamplerStateSamplerComparisonStateStructuredBuffer Texture1DTexture1DArray Texture2DTexture2DArray Texture2DMSTexture2DMSArray Texture3D TextureCubeTextureCubeArrayTriangleStream VertexShader) rerYrUr]r min16float min10floatmin16intmin12int min16uintraz([1-4](x[1-4])?)?\b)abortabsacosallAllMemoryBarrierAllMemoryBarrierWithGroupSyncanyAppendStructuredBufferasdoubleasfloatasinasintasuintratanatan2ceilCheckAccessFullyMappedclampclip CompileShaderConsumeStructuredBuffercoscosh countbitscrossD3DCOLORtoUBYTE4ddx ddx_coarseddx_fineddy ddy_coarseddy_finedegrees determinantDeviceMemoryBarrier DeviceMemoryBarrierWithGroupSyncdistancedotdsterrorfEvaluateAttributeAtCentroidEvaluateAttributeAtSampleEvaluateAttributeSnappedexpexp2f16tof32f32tof16 faceforward firstbithigh firstbitlowfloorfmafmodfracfrexpfwidthGetRenderTargetSampleCountGetRenderTargetSamplePositionGlobalOrderedCountIncrementGroupMemoryBarrierGroupMemoryBarrierWithGroupSyncInterlockedAddInterlockedAndInterlockedCompareExchangeInterlockedCompareStoreInterlockedExchangeInterlockedMaxInterlockedMin InterlockedOrInterlockedXorisfiniteisinfisnanldexplengthlerplitloglog10log2madmaxminmodfmsad4mulnoise normalizepowprintfProcess2DQuadTessFactorsAvgProcess2DQuadTessFactorsMaxProcess2DQuadTessFactorsMinProcessIsolineTessFactorsProcessQuadTessFactorsAvgProcessQuadTessFactorsMaxProcessQuadTessFactorsMinProcessTriTessFactorsAvgProcessTriTessFactorsMaxProcessTriTessFactorsMinQuadReadLaneAt QuadSwapX QuadSwapYradiansrcpreflectrefract reversebitsroundrsqrtsaturatesignsinsincossinh smoothstepsqrtsteptantanhtex1Dr tex1Dbias tex1Dgradtex1Dlod tex1Dprojtex2Dr tex2Dbias tex2Dgradtex2Dlod tex2Dprojtex3Dr tex3Dbias tex3Dgradtex3Dlod tex3DprojtexCUBEr texCUBEbias texCUBEgrad texCUBElod texCUBEproj transposetrunc WaveAllBitAnd WaveAllMax WaveAllMin WaveAllBitOr WaveAllBitXor WaveAllEqualWaveAllProduct WaveAllSum WaveAllTrue WaveAnyTrue WaveBallotWaveGetLaneCountWaveGetLaneIndexWaveGetOrderedIndexWaveIsHelperLaneWaveOnceWavePrefixProduct WavePrefixSumWaveReadFirstLaneWaveReadLaneAt)SV_ClipDistanceSV_ClipDistance0SV_ClipDistance1SV_CulldistanceSV_CullDistance0SV_CullDistance1 SV_CoverageSV_DepthSV_DepthGreaterEqualSV_DepthLessEqualSV_DispatchThreadIDSV_DomainLocation SV_GroupID SV_GroupIndexSV_GroupThreadIDSV_GSInstanceIDSV_InnerCoverageSV_InsideTessFactor SV_InstanceIDSV_IsFrontFaceSV_OutputControlPointID SV_PositionSV_PrimitiveIDSV_RenderTargetArrayIndexSV_SampleIndex SV_StencilRef SV_TessFactor SV_VertexIDSV_ViewportArrayIndexz\bSV_Target[0-7]?\b)allow_uav_conditionbranchcalldomainearlydepthstencilfastoptflatten forcecaseinstanceloop maxtessfactor numthreadsoutputcontrolpointsoutputtopology partitioningpatchconstantfuncunrollrz\\$r#popzO\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3}) [^\\"\n]+\\\n\\)rr N)rrrrrrrrr rrrr rrrrrrrrr rrrr r DecoratorrEscaperrrrrrs   ()*    rc@s&eZdZdZdZddgZddgZdgZdZd eZ d eZ d e e fZ d e j fd e jfde jfde jfdedfdefde ejfde ejfde ejfde ejfde ejfe ejfde ejfde ejfede dejfde fgdefdej!dfded fd!ed"fgd#ej!d"fe"d"gd$Z#d%S)&rz Lexer for PostScript files. The PostScript Language Reference published by Adobe at is the authority for this. .. versionadded:: 1.4 PostScript postscriptpostscrz*.psz*.epszapplication/postscriptz()<>\[\]{}/%\sz(?=[%s])z[^%s]z%s+%sz^%!.+$z%%.*$z (^%.*\n){2,}z%.*$z\( stringliteralz [{}<>\[\]]z<[0-9A-Fa-f]+>zG[0-9]+\#(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?z?(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?z(\-|\+)?[0-9]+z\/%sz (false|true)z6(eq|ne|g[et]|l[et]|and|or|not|if(?:else)?|for(?:all)?))lrwaddaloadarcarcnarrayrbeginbindceilingcharpathr closepathconcat concatmatrixcopyrcurrentlinewidth currentmatrix currentpointcurvetocvicvsdef defaultmatrixdictdictstackoverflowdiv dtransformdupendexchexecexitrfillfindfontrget getintervalgrestoregsavegt identmatrixidiv idtransformindex invertmatrix itransformrlinetolnloadrr>r?modmovetornegnewpath pathforallpathbboxpopprintpstackputquitrand rangecheckrcurvetorepeatrestorerlinetormovetorollrotaterrunsavescale scalefontsetdashsetfontsetgray setlinecap setlinejoin setlinewidth setmatrix setrgbcolorshfillshowshowpagerrstack stringwidthstroke strokepathsub syntaxerror transform translatetruncate typecheck undefinedundefinedfilenameundefinedresultrOrz[^()\\]+rIescape#push\)rFz[0-8]{3}|n|r|t|b|f|\\|\(|\))rrOrN)$rrrrrrrr delimiter delimiter_endvalid_name_chars valid_namer rSpecialrrrrrrrrrr VariableFunctionr rrrrrrKrrrrrrr1sh      ?   rc@seZdZdZdZddgZdgZdgZdZde fd e fd e e e fd e fd e fgd e fde dfdejfdejfdejfdejfdejfdefdefde eeee fdefdejfdejfdejfdefgeddede eeejeeeeed fded!e eeejeeeeefed"geded#d$efd%ed&fgeded#d%efd'ed(fd)ed&fgde d&fd*e jfde fd+e fd,e fd-e fd.e fgd/Zd0d1Z d2S)3rz] For `Asymptote `_ source code. .. versionadded:: 1.2 Asymptote asymptoteasyz*.asyztext/x-asymptotez(?:\s|//.*?\n|/\*.*?\*/)+\nr(\\)(\n)z//(\n|(.|\n)*?[^\\]\n)z/(\\\n)?\*(.|\n)*?\*(\\\n)?/"(\\\\|\\[^\\]|[^"\\])*"'r z%(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?z(\d+\.\d*|\.\d+|\d+[fF])[fF]?z0x[0-9a-fA-F]+[Ll]?z 0[0-7]+[Ll]?z\d+[Ll]?z[~!%^&*+=|?:<>/-]z [()\[\],.]z\b(case)(.+?)(:)z(and|controls|tension|atleast|curl|if|else|while|for|do|return|break|continue|struct|typedef|new|access|import|unravel|from|include|quote|static|public|private|restricted|this|explicit|true|false|null|cycle|newframe|operator)\ba?(Braid|FitResult|Label|Legend|TreeNode|abscissa|arc|arrowhead|binarytree|binarytreeNode|block|bool|bool3|bounds|bqe|circle|conic|coord|coordsys|cputime|ellipse|file|filltype|frame|grid3|guide|horner|hsv|hyperbola|indexedTransform|int|inversion|key|light|line|linefit|marginT|marker|mass|object|pair|parabola|path|path3|pen|picture|point|position|projection|real|revolution|scaleT|scientific|segment|side|slice|splitface|string|surface|tensionSpecifier|ticklocate|ticksgridT|tickvalues|transform|transformation|tree|triangle|trilinear|triple|vector|vertex|void)(?=\s+[a-zA-Z])z(Braid|FitResult|TreeNode|abscissa|arrowhead|block|bool|bool3|bounds|coord|frame|guide|horner|int|linefit|marginT|pair|pen|picture|position|real|revolution|slice|splitface|ticksgridT|tickvalues|tree|triple|vertex|void)\bz[a-zA-Z_]\w*:(?!:)r whitespacez6((?:[\w*\s])+?(?:\s|\*))([a-zA-Z_]\w*)(\s*\([^;]*?\))(z)(\{)functionz)(;) statement statementsz[{}];rFz\{rz\}z0\\([\\abfnrtv"\'?]|x[a-fA-F0-9]{2,4}|[0-7]{1,3}) [^\\'\n]+rHz\\nrI)rrrrrr ccshddlm}m}t||D]"\}}}|tur ||vr tj}n |tur+||vr+tj}|||fVqdS)Nr) ASYFUNCNAME ASYVARNAME)pygments.lexers._asy_builtinsrrrget_tokens_unprocessedr rr)selftextrrrxtokenvaluerrrrs  z%AsymptoteLexer.get_tokens_unprocessedN)!rrrrrrrr_wsrrr r rrrrrrr rr rrrr LabelrrrrKrrrrrrrs    * \rcs0ddfddttdDS)N$|c3s0|]}dd|dVqdS)NrLr).0idposwordrr s(z_shortened..)findjoinrangelen)rrrr _shorteneds rcGsdtt|S)Nr)rmapr)rrrr_shortened_manysrc@seZdZdZdZdgZddgZdgZede de d fe d d e d fe d e dfde e e edfde fe de dfe ddde dfe de dfe de dfe dde dfe dd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/e d0fe d)d*d+d,d-d1e d2fd3e ejeed0fd4e ejeed0fd5ejfd6e fgd7efd8efd9efed:gd;eded:fgd?ed:fd@ejfdAefd8efd9efd>ed:fgdBefdCed:fdDefd8efd9efd>ed:fged2d?edEfdCedFfdGejfdHejfdIejfdJefdKefdLejfdMe eje efdNefd5ejfdOe e efg ede dPejd:fgdQe d:fe dRejfed0gdSe fed2gdTejfedgdUed:fed0gdVejfe dWejfed0ge dXdYdZd[d\d]d^d_d`dadbdc ejfed0ge dddedfdgejfed0gdhZdiS)jrz] For `Gnuplot `_ plotting scripts. .. versionadded:: 0.11 Gnuplotgnuplotz*.plotz*.pltztext/x-gnuplotrzbi$ndrVzex$itzq$uitrzf$itfitz (if)(\s*)(\()rFzelse\bzpa$usepausep$lotzrep$lotzsp$lotplotzsa$verzse$t) genericargs optionargzsh$owzuns$et)noargsrzlow$erzra$isezca$llzcd$zcl$earzh$elpz\?$zhi$storyzl$oadpr$intzpwd$zre$readzres$etz scr$eendumpzshe$llzsy$stemzup$daterztest$rz([a-zA-Z_]\w*)(\s*)(=)z ([a-zA-Z_]\w*)(\s*\(.*?\)\s*)(=)z @[a-zA-Z_]\w*rz[^\\\n]rHrIrF#commentz [ \t\v\f]+rr z/\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})rGz''rrdqstringsqstringz (\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+z(\d+\.\d*|\.\d+)z-?\d+z[,.~!%^&*+=|?:<>/-]z [{}()\[\]]z (eq|ne)\bz([a-zA-Z_]\w*)(\s*)(\()rr)za$llzan$gleszar$rowz au$toscalezb$arszbor$derz box$widthzcl$abelzc$lipz cn$trparamzco$ntourzda$taz data$filezdg$rid3dzdu$mmyz enc$odingz dec$imalsignzfit$z font$pathzfo$rmatz fu$nctionz fu$nctionszg$ridz hid$den3dz his$torysizez is$osampleszk$eyz keyt$itlezla$belz li$nestylezls$z loa$dpathzloc$alez log$scalezmac$roszmap$pingz map$ping3dzmar$ginzlmar$ginzrmar$ginztmar$ginzbmar$ginzmo$usez multi$plotzmxt$icsz nomxt$icszmx2t$icsz nomx2t$icszmyt$icsz nomyt$icszmy2t$icsz nomy2t$icszmzt$icsz nomzt$icszmcbt$icsz nomcbt$icszof$fsetszor$iginzo$utputz pa$rametriczpm$3dzpal$ettez colorb$oxrz poi$ntsizezpol$arrzobj$ectzsa$mpleszsi$zezst$ylezsu$rfaceztable$ t$erminalz termo$ptionszti$csz ticsc$alez ticsl$evelztimef$mtz tim$estampztit$le v$ariableszve$rsionzvi$ewzxyp$lanezxda$tazx2da$tazyda$tazy2da$tazzda$tazcbda$tazxl$abelzx2l$abelzyl$abelzy2l$abelzzl$abelzcbl$abelzxti$csznoxti$cszx2ti$csz nox2ti$cszyti$csznoyti$cszy2ti$csz noy2ti$cszzti$csznozti$cszcbti$csz nocbti$cszxdti$csz noxdti$cszx2dti$csz nox2dti$cszydti$csz noydti$cszy2dti$csz noy2dti$cszzdti$csz nozdti$cszcbdti$csz nocbdti$cszxmti$csz noxmti$cszx2mti$csz nox2mti$cszymti$csz noymti$cszy2mti$csz noy2mti$cszzmti$csz nozmti$cszcbmti$csz nocbmti$cszxr$angezx2r$angezyr$angezy2r$angezzr$angezcbr$angezrr$angeztr$angezur$angezvr$angez xzeroa$xisz x2zeroa$xisz yzeroa$xisz y2zeroa$xisz zzeroa$xisz zeroa$xiszz$ero!z all$windowsz gnuplot\bzvia\brz%(mouse|any|button1|button2|button3)\bz key$presszax$eszaxi$szbin$aryzev$eryzi$ndexzmat$rixzs$moothzthru$zt$itleznot$itlezu$singzw$ithz f$unctionszs$etrr)rrrrrrrrrVrrrFrrrN)rrrrrrrrrrr rrr rr rrr rrr rrrKrrrWordrrrrrrrs            !     rc@seZdZdZdZdgZddgZdgZddej fd ej fd e j fe d d d dejfe dd d defe dd dejfdefdefdejjfdefdejfdejfdejfde fdefgiZddZdS)rzl For `Persistence of Vision Raytracer `_ files. .. versionadded:: 0.11 POVRaypovz*.povz*.incz text/x-povrayrz/\*[\w\W]*?\*/rz(?s)"(?:\\.|[^"\\])+")r?rEdebugdeclarerdefinerGelseifrjerrorfclosefopenrBrFifdefifndefrlocalmacrorreadrender statisticsrDundefversionwarningrCwriterrLrM(9aa_level aa_thresholdrwrxacoshadaptive adc_bailoutagate agate_turbryalphaambient ambient_lightangleaperture arc_angle area_lightascrasinh assumed_gammarratanh atmosphereatmospheric_attenuation attenuatingaverage background black_holeblue blur_samples bounded_by box_mappingbozor?brick brick_size brightness brilliancebumpsbumpy1bumpy2bumpy3bump_map bump_sizerEcausticsrcheckerchr clipped_byclockcolor color_mapcolour colour_map component compositerZ confidence conic_sweepconstantcontrol0control1rrcountcracklecrandcube cubic_splinecylindrical_mappingrrrrdentsdiffuse directionrdistance_maximumrgdust dust_type eccentricityrGemittingrjr error_boundrexponent fade_distance fade_powerfalloff falloff_anglerR file_existsrfinishfisheyeflatnessflipr focal_pointfogfog_alt fog_offsetfog_type frequencygifglobal_settingsglowinggradientgranitegray_thresholdgreenhalohexagon hf_gray_16 hierarchyhollow hypercomplexrFriff image_map incidencerr] interpolateinverseioriridirid_wavelengthjitterlambdaleopardr linear_spline linear_sweeplocationr looks_likelook_atlow_error_factormandelmap_typemarble material_mapr?rmax_intersections max_iterationmax_trace_level max_valuemetallicr minimum_reuser~mortar nearest_countnonormal normal_map no_shadownumber_of_wavesoctavesoffoffsetomegaomnimaxononceonionopen orthographic panoramicpattern1pattern2pattern3 perspectivepgmphasephong phong_sizepipigment pigment_mapplanar_mappingpngpoint_atpotrppmr7pwrquadratic_spline quaternion quick_color quick_colourquiltedradialr radiosityradiusrainbow ramp_waverr reciprocalrecursion_limitred reflection refractionrrrgbrgbfrgbftrgbtrightripplesr roughnesssamplesr scallop_wave scatteringseed shadowlessr sine_waversky sky_sphereslice slope_mapr.specularspherical_mappingspiralspiral1spiral2 spotlightspottedsqrrrstrstrcmpstrengthstrlenstrlwrstruprsturmsubstrrDsystrr test_camera_1 test_camera_2 test_camera_3 test_camera_4r& texture_maptga thickness threshold tightnesstile2tilestrackrrtransmit triangle_waverQttf turbulence turb_depthtypeultra_wide_angleup use_color use_colour use_indexu_stepsvalvariance vaxis_rotatevcrossvdotrvlength vnormalize volume_objectvolume_renderedvol_with_lightvrotatev_stepsrwarp water_levelwavesrCwidthwoodwrinklesyes) bicubic_patchblobboxcameraconecubiccylinder differencedisc height_field intersection julia_fractallathe light_sourcemergemeshobjectplanepolypolygonprismquadricquarticsmooth_trianglesorspheresuperellipsoidrtorusr'rrz[\[\](){}<>;,]z[-+*/=]z\b(x|y|z|u|v)\brz[0-9]+\.[0-9]*z\.[0-9]+z[0-9]+rrcCsHd}d|vr |d7}d|vr|d7}d|vr|d7}d|vr"|d7}|S)atPOVRAY is similar to JSON/C, but the combination of camera and light_source is probably not very likely elsewhere. HLSL or GLSL are similar (GLSL even has #version), but they miss #declare, and light_source/camera are not keywords anywhere else -- it's fair to assume though that any POVRAY scene must have a camera and lightsource.rz#versiong?z#declarerrg?r)rresultrrr analyse_textszPovrayLexer.analyse_textN)rrrrrrrrr rrrDoublerrr r rrr Pseudorrrrrr"rrrrrsJ012  RrN)rpygments.lexerrrrrrrrpygments.tokenr r r r r rrrr__all__rrrrrrrrrrrrs$ ,bu