Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
graphics.py795 linesDownload Raw Back to lexers
1"""2    pygments.lexers.graphics3    ~~~~~~~~~~~~~~~~~~~~~~~~4 5    Lexers for computer graphics and plotting related languages.6 7    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11from pygments.lexer import RegexLexer, words, include, bygroups, using, \12    this, default13from pygments.token import Text, Comment, Operator, Keyword, Name, \14    Number, Punctuation, String, Whitespace15 16__all__ = ['GLShaderLexer', 'PostScriptLexer', 'AsymptoteLexer', 'GnuplotLexer',17           'PovrayLexer', 'HLSLShaderLexer']18 19 20class GLShaderLexer(RegexLexer):21    """22    GLSL (OpenGL Shader) lexer.23    """24    name = 'GLSL'25    aliases = ['glsl']26    filenames = ['*.vert', '*.frag', '*.geo']27    mimetypes = ['text/x-glslsrc']28    url = 'https://www.khronos.org/api/opengl'29    version_added = '1.1'30 31    tokens = {32        'root': [33            (r'#(?:.*\\\n)*.*$', Comment.Preproc),34            (r'//.*$', Comment.Single),35            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),36            (r'\+|-|~|!=?|\*|/|%|<<|>>|<=?|>=?|==?|&&?|\^|\|\|?',37             Operator),38            (r'[?:]', Operator),  # quick hack for ternary39            (r'\bdefined\b', Operator),40            (r'[;{}(),\[\]]', Punctuation),41            # FIXME when e is present, no decimal point needed42            (r'[+-]?\d*\.\d+([eE][-+]?\d+)?', Number.Float),43            (r'[+-]?\d+\.\d*([eE][-+]?\d+)?', Number.Float),44            (r'0[xX][0-9a-fA-F]*', Number.Hex),45            (r'0[0-7]*', Number.Oct),46            (r'[1-9][0-9]*', Number.Integer),47            (words((48                # Storage qualifiers49                'attribute', 'const', 'uniform', 'varying',50                'buffer', 'shared', 'in', 'out',51                # Layout qualifiers52                'layout',53                # Interpolation qualifiers54                'flat', 'smooth', 'noperspective',55                # Auxiliary qualifiers56                'centroid', 'sample', 'patch',57                # Parameter qualifiers. Some double as Storage qualifiers58                'inout',59                # Precision qualifiers60                'lowp', 'mediump', 'highp', 'precision',61                # Invariance qualifiers62                'invariant',63                # Precise qualifiers64                'precise',65                # Memory qualifiers66                'coherent', 'volatile', 'restrict', 'readonly', 'writeonly',67                # Statements68                'break', 'continue', 'do', 'for', 'while', 'switch',69                'case', 'default', 'if', 'else', 'subroutine',70                'discard', 'return', 'struct'),71                prefix=r'\b', suffix=r'\b'),72             Keyword),73            (words((74                # Boolean values75                'true', 'false'),76                prefix=r'\b', suffix=r'\b'),77             Keyword.Constant),78            (words((79                # Miscellaneous types80                'void', 'atomic_uint',81                # Floating-point scalars and vectors82                'float', 'vec2', 'vec3', 'vec4',83                'double', 'dvec2', 'dvec3', 'dvec4',84                # Integer scalars and vectors85                'int', 'ivec2', 'ivec3', 'ivec4',86                'uint', 'uvec2', 'uvec3', 'uvec4',87                # Boolean scalars and vectors88                'bool', 'bvec2', 'bvec3', 'bvec4',89                # Matrices90                'mat2', 'mat3', 'mat4', 'dmat2', 'dmat3', 'dmat4',91                'mat2x2', 'mat2x3', 'mat2x4', 'dmat2x2', 'dmat2x3', 'dmat2x4',92                'mat3x2', 'mat3x3', 'mat3x4', 'dmat3x2', 'dmat3x3',93                'dmat3x4', 'mat4x2', 'mat4x3', 'mat4x4', 'dmat4x2', 'dmat4x3', 'dmat4x4',94                # Floating-point samplers95                'sampler1D', 'sampler2D', 'sampler3D', 'samplerCube',96                'sampler1DArray', 'sampler2DArray', 'samplerCubeArray',97                'sampler2DRect', 'samplerBuffer',98                'sampler2DMS', 'sampler2DMSArray',99                # Shadow samplers100                'sampler1DShadow', 'sampler2DShadow', 'samplerCubeShadow',101                'sampler1DArrayShadow', 'sampler2DArrayShadow',102                'samplerCubeArrayShadow', 'sampler2DRectShadow',103                # Signed integer samplers104                'isampler1D', 'isampler2D', 'isampler3D', 'isamplerCube',105                'isampler1DArray', 'isampler2DArray', 'isamplerCubeArray',106                'isampler2DRect', 'isamplerBuffer',107                'isampler2DMS', 'isampler2DMSArray',108                # Unsigned integer samplers109                'usampler1D', 'usampler2D', 'usampler3D', 'usamplerCube',110                'usampler1DArray', 'usampler2DArray', 'usamplerCubeArray',111                'usampler2DRect', 'usamplerBuffer',112                'usampler2DMS', 'usampler2DMSArray',113                # Floating-point image types114                'image1D', 'image2D', 'image3D', 'imageCube',115                'image1DArray', 'image2DArray', 'imageCubeArray',116                'image2DRect', 'imageBuffer',117                'image2DMS', 'image2DMSArray',118                # Signed integer image types119                'iimage1D', 'iimage2D', 'iimage3D', 'iimageCube',120                'iimage1DArray', 'iimage2DArray', 'iimageCubeArray',121                'iimage2DRect', 'iimageBuffer',122                'iimage2DMS', 'iimage2DMSArray',123                # Unsigned integer image types124                'uimage1D', 'uimage2D', 'uimage3D', 'uimageCube',125                'uimage1DArray', 'uimage2DArray', 'uimageCubeArray',126                'uimage2DRect', 'uimageBuffer',127                'uimage2DMS', 'uimage2DMSArray'),128                prefix=r'\b', suffix=r'\b'),129             Keyword.Type),130            (words((131                # Reserved for future use.132                'common', 'partition', 'active', 'asm', 'class',133                'union', 'enum', 'typedef', 'template', 'this',134                'resource', 'goto', 'inline', 'noinline', 'public',135                'static', 'extern', 'external', 'interface', 'long',136                'short', 'half', 'fixed', 'unsigned', 'superp', 'input',137                'output', 'hvec2', 'hvec3', 'hvec4', 'fvec2', 'fvec3',138                'fvec4', 'sampler3DRect', 'filter', 'sizeof', 'cast',139                'namespace', 'using'),140                prefix=r'\b', suffix=r'\b'),141             Keyword.Reserved),142            # All names beginning with "gl_" are reserved.143            (r'gl_\w*', Name.Builtin),144            (r'[a-zA-Z_]\w*', Name),145            (r'\.', Punctuation),146            (r'\s+', Whitespace),147        ],148    }149 150 151class HLSLShaderLexer(RegexLexer):152    """153    HLSL (Microsoft Direct3D Shader) lexer.154    """155    name = 'HLSL'156    aliases = ['hlsl']157    filenames = ['*.hlsl', '*.hlsli']158    mimetypes = ['text/x-hlsl']159    url = 'https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl'160    version_added = '2.3'161 162    tokens = {163        'root': [164            (r'#(?:.*\\\n)*.*$', Comment.Preproc),165            (r'//.*$', Comment.Single),166            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),167            (r'\+|-|~|!=?|\*|/|%|<<|>>|<=?|>=?|==?|&&?|\^|\|\|?',168             Operator),169            (r'[?:]', Operator),  # quick hack for ternary170            (r'\bdefined\b', Operator),171            (r'[;{}(),.\[\]]', Punctuation),172            # FIXME when e is present, no decimal point needed173            (r'[+-]?\d*\.\d+([eE][-+]?\d+)?f?', Number.Float),174            (r'[+-]?\d+\.\d*([eE][-+]?\d+)?f?', Number.Float),175            (r'0[xX][0-9a-fA-F]*', Number.Hex),176            (r'0[0-7]*', Number.Oct),177            (r'[1-9][0-9]*', Number.Integer),178            (r'"', String, 'string'),179            (words((180                'asm','asm_fragment','break','case','cbuffer','centroid','class',181                'column_major','compile','compile_fragment','const','continue',182                'default','discard','do','else','export','extern','for','fxgroup',183                'globallycoherent','groupshared','if','in','inline','inout',184                'interface','line','lineadj','linear','namespace','nointerpolation',185                'noperspective','NULL','out','packoffset','pass','pixelfragment',186                'point','precise','return','register','row_major','sample',187                'sampler','shared','stateblock','stateblock_state','static',188                'struct','switch','tbuffer','technique','technique10',189                'technique11','texture','typedef','triangle','triangleadj',190                'uniform','vertexfragment','volatile','while'),191                prefix=r'\b', suffix=r'\b'),192             Keyword),193            (words(('true','false'), prefix=r'\b', suffix=r'\b'),194             Keyword.Constant),195            (words((196                'auto','catch','char','const_cast','delete','dynamic_cast','enum',197                'explicit','friend','goto','long','mutable','new','operator',198                'private','protected','public','reinterpret_cast','short','signed',199                'sizeof','static_cast','template','this','throw','try','typename',200                'union','unsigned','using','virtual'),201                prefix=r'\b', suffix=r'\b'),202             Keyword.Reserved),203            (words((204                'dword','matrix','snorm','string','unorm','unsigned','void','vector',205                'BlendState','Buffer','ByteAddressBuffer','ComputeShader',206                'DepthStencilState','DepthStencilView','DomainShader',207                'GeometryShader','HullShader','InputPatch','LineStream',208                'OutputPatch','PixelShader','PointStream','RasterizerState',209                'RenderTargetView','RasterizerOrderedBuffer',210                'RasterizerOrderedByteAddressBuffer',211                'RasterizerOrderedStructuredBuffer','RasterizerOrderedTexture1D',212                'RasterizerOrderedTexture1DArray','RasterizerOrderedTexture2D',213                'RasterizerOrderedTexture2DArray','RasterizerOrderedTexture3D',214                'RWBuffer','RWByteAddressBuffer','RWStructuredBuffer',215                'RWTexture1D','RWTexture1DArray','RWTexture2D','RWTexture2DArray',216                'RWTexture3D','SamplerState','SamplerComparisonState',217                'StructuredBuffer','Texture1D','Texture1DArray','Texture2D',218                'Texture2DArray','Texture2DMS','Texture2DMSArray','Texture3D',219                'TextureCube','TextureCubeArray','TriangleStream','VertexShader'),220                prefix=r'\b', suffix=r'\b'),221             Keyword.Type),222            (words((223                'bool','double','float','int','half','min16float','min10float',224                'min16int','min12int','min16uint','uint'),225                prefix=r'\b', suffix=r'([1-4](x[1-4])?)?\b'),226             Keyword.Type),     # vector and matrix types227            (words((228                'abort','abs','acos','all','AllMemoryBarrier',229                'AllMemoryBarrierWithGroupSync','any','AppendStructuredBuffer',230                'asdouble','asfloat','asin','asint','asuint','asuint','atan',231                'atan2','ceil','CheckAccessFullyMapped','clamp','clip',232                'CompileShader','ConsumeStructuredBuffer','cos','cosh','countbits',233                'cross','D3DCOLORtoUBYTE4','ddx','ddx_coarse','ddx_fine','ddy',234                'ddy_coarse','ddy_fine','degrees','determinant',235                'DeviceMemoryBarrier','DeviceMemoryBarrierWithGroupSync','distance',236                'dot','dst','errorf','EvaluateAttributeAtCentroid',237                'EvaluateAttributeAtSample','EvaluateAttributeSnapped','exp',238                'exp2','f16tof32','f32tof16','faceforward','firstbithigh',239                'firstbitlow','floor','fma','fmod','frac','frexp','fwidth',240                'GetRenderTargetSampleCount','GetRenderTargetSamplePosition',241                'GlobalOrderedCountIncrement','GroupMemoryBarrier',242                'GroupMemoryBarrierWithGroupSync','InterlockedAdd','InterlockedAnd',243                'InterlockedCompareExchange','InterlockedCompareStore',244                'InterlockedExchange','InterlockedMax','InterlockedMin',245                'InterlockedOr','InterlockedXor','isfinite','isinf','isnan',246                'ldexp','length','lerp','lit','log','log10','log2','mad','max',247                'min','modf','msad4','mul','noise','normalize','pow','printf',248                'Process2DQuadTessFactorsAvg','Process2DQuadTessFactorsMax',249                'Process2DQuadTessFactorsMin','ProcessIsolineTessFactors',250                'ProcessQuadTessFactorsAvg','ProcessQuadTessFactorsMax',251                'ProcessQuadTessFactorsMin','ProcessTriTessFactorsAvg',252                'ProcessTriTessFactorsMax','ProcessTriTessFactorsMin',253                'QuadReadLaneAt','QuadSwapX','QuadSwapY','radians','rcp',254                'reflect','refract','reversebits','round','rsqrt','saturate',255                'sign','sin','sincos','sinh','smoothstep','sqrt','step','tan',256                'tanh','tex1D','tex1D','tex1Dbias','tex1Dgrad','tex1Dlod',257                'tex1Dproj','tex2D','tex2D','tex2Dbias','tex2Dgrad','tex2Dlod',258                'tex2Dproj','tex3D','tex3D','tex3Dbias','tex3Dgrad','tex3Dlod',259                'tex3Dproj','texCUBE','texCUBE','texCUBEbias','texCUBEgrad',260                'texCUBElod','texCUBEproj','transpose','trunc','WaveAllBitAnd',261                'WaveAllMax','WaveAllMin','WaveAllBitOr','WaveAllBitXor',262                'WaveAllEqual','WaveAllProduct','WaveAllSum','WaveAllTrue',263                'WaveAnyTrue','WaveBallot','WaveGetLaneCount','WaveGetLaneIndex',264                'WaveGetOrderedIndex','WaveIsHelperLane','WaveOnce',265                'WavePrefixProduct','WavePrefixSum','WaveReadFirstLane',266                'WaveReadLaneAt'),267                prefix=r'\b', suffix=r'\b'),268             Name.Builtin),     # built-in functions269            (words((270                'SV_ClipDistance','SV_ClipDistance0','SV_ClipDistance1',271                'SV_Culldistance','SV_CullDistance0','SV_CullDistance1',272                'SV_Coverage','SV_Depth','SV_DepthGreaterEqual',273                'SV_DepthLessEqual','SV_DispatchThreadID','SV_DomainLocation',274                'SV_GroupID','SV_GroupIndex','SV_GroupThreadID','SV_GSInstanceID',275                'SV_InnerCoverage','SV_InsideTessFactor','SV_InstanceID',276                'SV_IsFrontFace','SV_OutputControlPointID','SV_Position',277                'SV_PrimitiveID','SV_RenderTargetArrayIndex','SV_SampleIndex',278                'SV_StencilRef','SV_TessFactor','SV_VertexID',279                'SV_ViewportArrayIndex'),280                prefix=r'\b', suffix=r'\b'),281             Name.Decorator),   # system-value semantics282            (r'\bSV_Target[0-7]?\b', Name.Decorator),283            (words((284                'allow_uav_condition','branch','call','domain','earlydepthstencil',285                'fastopt','flatten','forcecase','instance','loop','maxtessfactor',286                'numthreads','outputcontrolpoints','outputtopology','partitioning',287                'patchconstantfunc','unroll'),288                prefix=r'\b', suffix=r'\b'),289             Name.Decorator),   # attributes290            (r'[a-zA-Z_]\w*', Name),291            (r'\\$', Comment.Preproc),  # backslash at end of line -- usually macro continuation292            (r'\s+', Whitespace),293        ],294        'string': [295            (r'"', String, '#pop'),296            (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|'297             r'u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})', String.Escape),298            (r'[^\\"\n]+', String),  # all other characters299            (r'\\\n', String),  # line continuation300            (r'\\', String),  # stray backslash301        ],302    }303 304 305class PostScriptLexer(RegexLexer):306    """307    Lexer for PostScript files.308    """309    name = 'PostScript'310    url = 'https://en.wikipedia.org/wiki/PostScript'311    aliases = ['postscript', 'postscr']312    filenames = ['*.ps', '*.eps']313    mimetypes = ['application/postscript']314    version_added = '1.4'315 316    delimiter = r'()<>\[\]{}/%\s'317    delimiter_end = rf'(?=[{delimiter}])'318 319    valid_name_chars = rf'[^{delimiter}]'320    valid_name = rf"{valid_name_chars}+{delimiter_end}"321 322    tokens = {323        'root': [324            # All comment types325            (r'^%!.+$', Comment.Preproc),326            (r'%%.*$', Comment.Special),327            (r'(^%.*\n){2,}', Comment.Multiline),328            (r'%.*$', Comment.Single),329 330            # String literals are awkward; enter separate state.331            (r'\(', String, 'stringliteral'),332 333            (r'[{}<>\[\]]', Punctuation),334 335            # Numbers336            (r'<[0-9A-Fa-f]+>' + delimiter_end, Number.Hex),337            # Slight abuse: use Oct to signify any explicit base system338            (r'[0-9]+\#(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)'339             r'((e|E)[0-9]+)?' + delimiter_end, Number.Oct),340            (r'(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?'341             + delimiter_end, Number.Float),342            (r'(\-|\+)?[0-9]+' + delimiter_end, Number.Integer),343 344            # References345            (rf'\/{valid_name}', Name.Variable),346 347            # Names348            (valid_name, Name.Function),      # Anything else is executed349 350            # These keywords taken from351            # <http://www.math.ubc.ca/~cass/graphics/manual/pdf/a1.pdf>352            # Is there an authoritative list anywhere that doesn't involve353            # trawling documentation?354 355            (r'(false|true)' + delimiter_end, Keyword.Constant),356 357            # Conditionals / flow control358            (r'(eq|ne|g[et]|l[et]|and|or|not|if(?:else)?|for(?:all)?)'359             + delimiter_end, Keyword.Reserved),360 361            (words((362                'abs', 'add', 'aload', 'arc', 'arcn', 'array', 'atan', 'begin',363                'bind', 'ceiling', 'charpath', 'clip', 'closepath', 'concat',364                'concatmatrix', 'copy', 'cos', 'currentlinewidth', 'currentmatrix',365                'currentpoint', 'curveto', 'cvi', 'cvs', 'def', 'defaultmatrix',366                'dict', 'dictstackoverflow', 'div', 'dtransform', 'dup', 'end',367                'exch', 'exec', 'exit', 'exp', 'fill', 'findfont', 'floor', 'get',368                'getinterval', 'grestore', 'gsave', 'gt', 'identmatrix', 'idiv',369                'idtransform', 'index', 'invertmatrix', 'itransform', 'length',370                'lineto', 'ln', 'load', 'log', 'loop', 'matrix', 'mod', 'moveto',371                'mul', 'neg', 'newpath', 'pathforall', 'pathbbox', 'pop', 'print',372                'pstack', 'put', 'quit', 'rand', 'rangecheck', 'rcurveto', 'repeat',373                'restore', 'rlineto', 'rmoveto', 'roll', 'rotate', 'round', 'run',374                'save', 'scale', 'scalefont', 'setdash', 'setfont', 'setgray',375                'setlinecap', 'setlinejoin', 'setlinewidth', 'setmatrix',376                'setrgbcolor', 'shfill', 'show', 'showpage', 'sin', 'sqrt',377                'stack', 'stringwidth', 'stroke', 'strokepath', 'sub', 'syntaxerror',378                'transform', 'translate', 'truncate', 'typecheck', 'undefined',379                'undefinedfilename', 'undefinedresult'), suffix=delimiter_end),380             Name.Builtin),381 382            (r'\s+', Whitespace),383        ],384 385        'stringliteral': [386            (r'[^()\\]+', String),387            (r'\\', String.Escape, 'escape'),388            (r'\(', String, '#push'),389            (r'\)', String, '#pop'),390        ],391 392        'escape': [393            (r'[0-8]{3}|n|r|t|b|f|\\|\(|\)', String.Escape, '#pop'),394            default('#pop'),395        ],396    }397 398 399class AsymptoteLexer(RegexLexer):400    """401    For Asymptote source code.402    """403    name = 'Asymptote'404    url = 'http://asymptote.sf.net/'405    aliases = ['asymptote', 'asy']406    filenames = ['*.asy']407    mimetypes = ['text/x-asymptote']408    version_added = '1.2'409 410    #: optional Comment or Whitespace411    _ws = r'(?:\s|//.*?\n|/\*.*?\*/)+'412 413    tokens = {414        'whitespace': [415            (r'\n', Whitespace),416            (r'\s+', Whitespace),417            (r'(\\)(\n)', bygroups(Text, Whitespace)),  # line continuation418            (r'//(\n|(.|\n)*?[^\\]\n)', Comment),419            (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment),420        ],421        'statements': [422            # simple string (TeX friendly)423            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),424            # C style string (with character escapes)425            (r"'", String, 'string'),426            (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),427            (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),428            (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),429            (r'0[0-7]+[Ll]?', Number.Oct),430            (r'\d+[Ll]?', Number.Integer),431            (r'[~!%^&*+=|?:<>/-]', Operator),432            (r'[()\[\],.]', Punctuation),433            (r'\b(case)(.+?)(:)', bygroups(Keyword, using(this), Text)),434            (r'(and|controls|tension|atleast|curl|if|else|while|for|do|'435             r'return|break|continue|struct|typedef|new|access|import|'436             r'unravel|from|include|quote|static|public|private|restricted|'437             r'this|explicit|true|false|null|cycle|newframe|operator)\b', Keyword),438            # Since an asy-type-name can be also an asy-function-name,439            # in the following we test if the string "  [a-zA-Z]" follows440            # the Keyword.Type.441            # Of course it is not perfect !442            (r'(Braid|FitResult|Label|Legend|TreeNode|abscissa|arc|arrowhead|'443             r'binarytree|binarytreeNode|block|bool|bool3|bounds|bqe|circle|'444             r'conic|coord|coordsys|cputime|ellipse|file|filltype|frame|grid3|'445             r'guide|horner|hsv|hyperbola|indexedTransform|int|inversion|key|'446             r'light|line|linefit|marginT|marker|mass|object|pair|parabola|path|'447             r'path3|pen|picture|point|position|projection|real|revolution|'448             r'scaleT|scientific|segment|side|slice|splitface|string|surface|'449             r'tensionSpecifier|ticklocate|ticksgridT|tickvalues|transform|'450             r'transformation|tree|triangle|trilinear|triple|vector|'451             r'vertex|void)(?=\s+[a-zA-Z])', Keyword.Type),452            # Now the asy-type-name which are not asy-function-name453            # except yours !454            # Perhaps useless455            (r'(Braid|FitResult|TreeNode|abscissa|arrowhead|block|bool|bool3|'456             r'bounds|coord|frame|guide|horner|int|linefit|marginT|pair|pen|'457             r'picture|position|real|revolution|slice|splitface|ticksgridT|'458             r'tickvalues|tree|triple|vertex|void)\b', Keyword.Type),459            (r'[a-zA-Z_]\w*:(?!:)', Name.Label),460            (r'[a-zA-Z_]\w*', Name),461        ],462        'root': [463            include('whitespace'),464            # functions465            (r'((?:[\w*\s])+?(?:\s|\*))'  # return arguments466             r'([a-zA-Z_]\w*)'            # method name467             r'(\s*\([^;]*?\))'           # signature468             r'(' + _ws + r')(\{)',469             bygroups(using(this), Name.Function, using(this), using(this),470                      Punctuation),471             'function'),472            # function declarations473            (r'((?:[\w*\s])+?(?:\s|\*))'  # return arguments474             r'([a-zA-Z_]\w*)'            # method name475             r'(\s*\([^;]*?\))'           # signature476             r'(' + _ws + r')(;)',477             bygroups(using(this), Name.Function, using(this), using(this),478                      Punctuation)),479            default('statement'),480        ],481        'statement': [482            include('whitespace'),483            include('statements'),484            ('[{}]', Punctuation),485            (';', Punctuation, '#pop'),486        ],487        'function': [488            include('whitespace'),489            include('statements'),490            (';', Punctuation),491            (r'\{', Punctuation, '#push'),492            (r'\}', Punctuation, '#pop'),493        ],494        'string': [495            (r"'", String, '#pop'),496            (r'\\([\\abfnrtv"\'?]|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),497            (r'\n', String),498            (r"[^\\'\n]+", String),  # all other characters499            (r'\\\n', String),500            (r'\\n', String),        # line continuation501            (r'\\', String),         # stray backslash502        ],503    }504 505    def get_tokens_unprocessed(self, text):506        from pygments.lexers._asy_builtins import ASYFUNCNAME, ASYVARNAME507        for index, token, value in \508                RegexLexer.get_tokens_unprocessed(self, text):509            if token is Name and value in ASYFUNCNAME:510                token = Name.Function511            elif token is Name and value in ASYVARNAME:512                token = Name.Variable513            yield index, token, value514 515 516def _shortened(word):517    dpos = word.find('$')518    return '|'.join(word[:dpos] + word[dpos+1:i] + r'\b'519                    for i in range(len(word), dpos, -1))520 521 522def _shortened_many(*words):523    return '|'.join(map(_shortened, words))524 525 526class GnuplotLexer(RegexLexer):527    """528    For Gnuplot plotting scripts.529    """530 531    name = 'Gnuplot'532    url = 'http://gnuplot.info/'533    aliases = ['gnuplot']534    filenames = ['*.plot', '*.plt']535    mimetypes = ['text/x-gnuplot']536    version_added = '0.11'537 538    tokens = {539        'root': [540            include('whitespace'),541            (_shortened('bi$nd'), Keyword, 'bind'),542            (_shortened_many('ex$it', 'q$uit'), Keyword, 'quit'),543            (_shortened('f$it'), Keyword, 'fit'),544            (r'(if)(\s*)(\()', bygroups(Keyword, Text, Punctuation), 'if'),545            (r'else\b', Keyword),546            (_shortened('pa$use'), Keyword, 'pause'),547            (_shortened_many('p$lot', 'rep$lot', 'sp$lot'), Keyword, 'plot'),548            (_shortened('sa$ve'), Keyword, 'save'),549            (_shortened('se$t'), Keyword, ('genericargs', 'optionarg')),550            (_shortened_many('sh$ow', 'uns$et'),551             Keyword, ('noargs', 'optionarg')),552            (_shortened_many('low$er', 'ra$ise', 'ca$ll', 'cd$', 'cl$ear',553                             'h$elp', '\\?$', 'hi$story', 'l$oad', 'pr$int',554                             'pwd$', 're$read', 'res$et', 'scr$eendump',555                             'she$ll', 'sy$stem', 'up$date'),556             Keyword, 'genericargs'),557            (_shortened_many('pwd$', 're$read', 'res$et', 'scr$eendump',558                             'she$ll', 'test$'),559             Keyword, 'noargs'),560            (r'([a-zA-Z_]\w*)(\s*)(=)',561             bygroups(Name.Variable, Whitespace, Operator), 'genericargs'),562            (r'([a-zA-Z_]\w*)(\s*)(\()(.*?)(\))(\s*)(=)',563             bygroups(Name.Function, Whitespace, Punctuation,564                      Text, Punctuation, Whitespace, Operator), 'genericargs'),565            (r'@[a-zA-Z_]\w*', Name.Constant),  # macros566            (r';', Keyword),567        ],568        'comment': [569            (r'[^\\\n]+', Comment),570            (r'\\\n', Comment),571            (r'\\', Comment),572            # don't add the newline to the Comment token573            default('#pop'),574        ],575        'whitespace': [576            ('#', Comment, 'comment'),577            (r'[ \t\v\f]+', Whitespace),578        ],579        'noargs': [580            include('whitespace'),581            # semicolon and newline end the argument list582            (r';', Punctuation, '#pop'),583            (r'\n', Whitespace, '#pop'),584        ],585        'dqstring': [586            (r'"', String, '#pop'),587            (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),588            (r'[^\\"\n]+', String),   # all other characters589            (r'\\\n', String),        # line continuation590            (r'\\', String),          # stray backslash591            (r'\n', Whitespace, '#pop'),  # newline ends the string too592        ],593        'sqstring': [594            (r"''", String),          # escaped single quote595            (r"'", String, '#pop'),596            (r"[^\\'\n]+", String),   # all other characters597            (r'\\\n', String),        # line continuation598            (r'\\', String),          # normal backslash599            (r'\n', Whitespace, '#pop'),  # newline ends the string too600        ],601        'genericargs': [602            include('noargs'),603            (r'"', String, 'dqstring'),604            (r"'", String, 'sqstring'),605            (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+', Number.Float),606            (r'(\d+\.\d*|\.\d+)', Number.Float),607            (r'-?\d+', Number.Integer),608            ('[,.~!%^&*+=|?:<>/-]', Operator),609            (r'[{}()\[\]]', Punctuation),610            (r'(eq|ne)\b', Operator.Word),611            (r'([a-zA-Z_]\w*)(\s*)(\()',612             bygroups(Name.Function, Text, Punctuation)),613            (r'[a-zA-Z_]\w*', Name),614            (r'@[a-zA-Z_]\w*', Name.Constant),  # macros615            (r'(\\)(\n)', bygroups(Text, Whitespace)),616        ],617        'optionarg': [618            include('whitespace'),619            (_shortened_many(620                "a$ll", "an$gles", "ar$row", "au$toscale", "b$ars", "bor$der",621                "box$width", "cl$abel", "c$lip", "cn$trparam", "co$ntour", "da$ta",622                "data$file", "dg$rid3d", "du$mmy", "enc$oding", "dec$imalsign",623                "fit$", "font$path", "fo$rmat", "fu$nction", "fu$nctions", "g$rid",624                "hid$den3d", "his$torysize", "is$osamples", "k$ey", "keyt$itle",625                "la$bel", "li$nestyle", "ls$", "loa$dpath", "loc$ale", "log$scale",626                "mac$ros", "map$ping", "map$ping3d", "mar$gin", "lmar$gin",627                "rmar$gin", "tmar$gin", "bmar$gin", "mo$use", "multi$plot",628                "mxt$ics", "nomxt$ics", "mx2t$ics", "nomx2t$ics", "myt$ics",629                "nomyt$ics", "my2t$ics", "nomy2t$ics", "mzt$ics", "nomzt$ics",630                "mcbt$ics", "nomcbt$ics", "of$fsets", "or$igin", "o$utput",631                "pa$rametric", "pm$3d", "pal$ette", "colorb$ox", "p$lot",632                "poi$ntsize", "pol$ar", "pr$int", "obj$ect", "sa$mples", "si$ze",633                "st$yle", "su$rface", "table$", "t$erminal", "termo$ptions", "ti$cs",634                "ticsc$ale", "ticsl$evel", "timef$mt", "tim$estamp", "tit$le",635                "v$ariables", "ve$rsion", "vi$ew", "xyp$lane", "xda$ta", "x2da$ta",636                "yda$ta", "y2da$ta", "zda$ta", "cbda$ta", "xl$abel", "x2l$abel",637                "yl$abel", "y2l$abel", "zl$abel", "cbl$abel", "xti$cs", "noxti$cs",638                "x2ti$cs", "nox2ti$cs", "yti$cs", "noyti$cs", "y2ti$cs", "noy2ti$cs",639                "zti$cs", "nozti$cs", "cbti$cs", "nocbti$cs", "xdti$cs", "noxdti$cs",640                "x2dti$cs", "nox2dti$cs", "ydti$cs", "noydti$cs", "y2dti$cs",641                "noy2dti$cs", "zdti$cs", "nozdti$cs", "cbdti$cs", "nocbdti$cs",642                "xmti$cs", "noxmti$cs", "x2mti$cs", "nox2mti$cs", "ymti$cs",643                "noymti$cs", "y2mti$cs", "noy2mti$cs", "zmti$cs", "nozmti$cs",644                "cbmti$cs", "nocbmti$cs", "xr$ange", "x2r$ange", "yr$ange",645                "y2r$ange", "zr$ange", "cbr$ange", "rr$ange", "tr$ange", "ur$ange",646                "vr$ange", "xzeroa$xis", "x2zeroa$xis", "yzeroa$xis", "y2zeroa$xis",647                "zzeroa$xis", "zeroa$xis", "z$ero"), Name.Builtin, '#pop'),648        ],649        'bind': [650            ('!', Keyword, '#pop'),651            (_shortened('all$windows'), Name.Builtin),652            include('genericargs'),653        ],654        'quit': [655            (r'gnuplot\b', Keyword),656            include('noargs'),657        ],658        'fit': [659            (r'via\b', Name.Builtin),660            include('plot'),661        ],662        'if': [663            (r'\)', Punctuation, '#pop'),664            include('genericargs'),665        ],666        'pause': [667            (r'(mouse|any|button1|button2|button3)\b', Name.Builtin),668            (_shortened('key$press'), Name.Builtin),669            include('genericargs'),670        ],671        'plot': [672            (_shortened_many('ax$es', 'axi$s', 'bin$ary', 'ev$ery', 'i$ndex',673                             'mat$rix', 's$mooth', 'thru$', 't$itle',674                             'not$itle', 'u$sing', 'w$ith'),675             Name.Builtin),676            include('genericargs'),677        ],678        'save': [679            (_shortened_many('f$unctions', 's$et', 't$erminal', 'v$ariables'),680             Name.Builtin),681            include('genericargs'),682        ],683    }684 685 686class PovrayLexer(RegexLexer):687    """688    For Persistence of Vision Raytracer files.689    """690    name = 'POVRay'691    url = 'http://www.povray.org/'692    aliases = ['pov']693    filenames = ['*.pov', '*.inc']694    mimetypes = ['text/x-povray']695    version_added = '0.11'696 697    tokens = {698        'root': [699            (r'/\*[\w\W]*?\*/', Comment.Multiline),700            (r'//.*$', Comment.Single),701            (r'(?s)"(?:\\.|[^"\\])+"', String.Double),702            (words((703                'break', 'case', 'debug', 'declare', 'default', 'define', 'else',704                'elseif', 'end', 'error', 'fclose', 'fopen', 'for', 'if', 'ifdef',705                'ifndef', 'include', 'local', 'macro', 'range', 'read', 'render',706                'statistics', 'switch', 'undef', 'version', 'warning', 'while',707                'write'), prefix=r'#', suffix=r'\b'),708             Comment.Preproc),709            (words((710                'aa_level', 'aa_threshold', 'abs', 'acos', 'acosh', 'adaptive', 'adc_bailout',711                'agate', 'agate_turb', 'all', 'alpha', 'ambient', 'ambient_light', 'angle',712                'aperture', 'arc_angle', 'area_light', 'asc', 'asin', 'asinh', 'assumed_gamma',713                'atan', 'atan2', 'atanh', 'atmosphere', 'atmospheric_attenuation',714                'attenuating', 'average', 'background', 'black_hole', 'blue', 'blur_samples',715                'bounded_by', 'box_mapping', 'bozo', 'break', 'brick', 'brick_size',716                'brightness', 'brilliance', 'bumps', 'bumpy1', 'bumpy2', 'bumpy3', 'bump_map',717                'bump_size', 'case', 'caustics', 'ceil', 'checker', 'chr', 'clipped_by', 'clock',718                'color', 'color_map', 'colour', 'colour_map', 'component', 'composite', 'concat',719                'confidence', 'conic_sweep', 'constant', 'control0', 'control1', 'cos', 'cosh',720                'count', 'crackle', 'crand', 'cube', 'cubic_spline', 'cylindrical_mapping',721                'debug', 'declare', 'default', 'degrees', 'dents', 'diffuse', 'direction',722                'distance', 'distance_maximum', 'div', 'dust', 'dust_type', 'eccentricity',723                'else', 'emitting', 'end', 'error', 'error_bound', 'exp', 'exponent',724                'fade_distance', 'fade_power', 'falloff', 'falloff_angle', 'false',725                'file_exists', 'filter', 'finish', 'fisheye', 'flatness', 'flip', 'floor',726                'focal_point', 'fog', 'fog_alt', 'fog_offset', 'fog_type', 'frequency', 'gif',727                'global_settings', 'glowing', 'gradient', 'granite', 'gray_threshold',728                'green', 'halo', 'hexagon', 'hf_gray_16', 'hierarchy', 'hollow', 'hypercomplex',729                'if', 'ifdef', 'iff', 'image_map', 'incidence', 'include', 'int', 'interpolate',730                'inverse', 'ior', 'irid', 'irid_wavelength', 'jitter', 'lambda', 'leopard',731                'linear', 'linear_spline', 'linear_sweep', 'location', 'log', 'looks_like',732                'look_at', 'low_error_factor', 'mandel', 'map_type', 'marble', 'material_map',733                'matrix', 'max', 'max_intersections', 'max_iteration', 'max_trace_level',734                'max_value', 'metallic', 'min', 'minimum_reuse', 'mod', 'mortar',735                'nearest_count', 'no', 'normal', 'normal_map', 'no_shadow', 'number_of_waves',736                'octaves', 'off', 'offset', 'omega', 'omnimax', 'on', 'once', 'onion', 'open',737                'orthographic', 'panoramic', 'pattern1', 'pattern2', 'pattern3',738                'perspective', 'pgm', 'phase', 'phong', 'phong_size', 'pi', 'pigment',739                'pigment_map', 'planar_mapping', 'png', 'point_at', 'pot', 'pow', 'ppm',740                'precision', 'pwr', 'quadratic_spline', 'quaternion', 'quick_color',741                'quick_colour', 'quilted', 'radial', 'radians', 'radiosity', 'radius', 'rainbow',742                'ramp_wave', 'rand', 'range', 'reciprocal', 'recursion_limit', 'red',743                'reflection', 'refraction', 'render', 'repeat', 'rgb', 'rgbf', 'rgbft', 'rgbt',744                'right', 'ripples', 'rotate', 'roughness', 'samples', 'scale', 'scallop_wave',745                'scattering', 'seed', 'shadowless', 'sin', 'sine_wave', 'sinh', 'sky', 'sky_sphere',746                'slice', 'slope_map', 'smooth', 'specular', 'spherical_mapping', 'spiral',747                'spiral1', 'spiral2', 'spotlight', 'spotted', 'sqr', 'sqrt', 'statistics', 'str',748                'strcmp', 'strength', 'strlen', 'strlwr', 'strupr', 'sturm', 'substr', 'switch', 'sys',749                't', 'tan', 'tanh', 'test_camera_1', 'test_camera_2', 'test_camera_3',750                'test_camera_4', 'texture', 'texture_map', 'tga', 'thickness', 'threshold',751                'tightness', 'tile2', 'tiles', 'track', 'transform', 'translate', 'transmit',752                'triangle_wave', 'true', 'ttf', 'turbulence', 'turb_depth', 'type',753                'ultra_wide_angle', 'up', 'use_color', 'use_colour', 'use_index', 'u_steps',754                'val', 'variance', 'vaxis_rotate', 'vcross', 'vdot', 'version', 'vlength',755                'vnormalize', 'volume_object', 'volume_rendered', 'vol_with_light',756                'vrotate', 'v_steps', 'warning', 'warp', 'water_level', 'waves', 'while', 'width',757                'wood', 'wrinkles', 'yes'), prefix=r'\b', suffix=r'\b'),758             Keyword),759            (words((760                'bicubic_patch', 'blob', 'box', 'camera', 'cone', 'cubic', 'cylinder', 'difference',761                'disc', 'height_field', 'intersection', 'julia_fractal', 'lathe',762                'light_source', 'merge', 'mesh', 'object', 'plane', 'poly', 'polygon', 'prism',763                'quadric', 'quartic', 'smooth_triangle', 'sor', 'sphere', 'superellipsoid',764                'text', 'torus', 'triangle', 'union'), suffix=r'\b'),765             Name.Builtin),766            (r'\b(x|y|z|u|v)\b', Name.Builtin.Pseudo),767            (r'[a-zA-Z_]\w*', Name),768            (r'[0-9]*\.[0-9]+', Number.Float),769            (r'[0-9]+', Number.Integer),770            (r'[\[\](){}<>;,]', Punctuation),771            (r'[-+*/=.|&]|<=|>=|!=', Operator),772            (r'"(\\\\|\\[^\\]|[^"\\])*"', String),773            (r'\s+', Whitespace),774        ]775    }776 777    def analyse_text(text):778        """POVRAY is similar to JSON/C, but the combination of camera and779        light_source is probably not very likely elsewhere. HLSL or GLSL780        are similar (GLSL even has #version), but they miss #declare, and781        light_source/camera are not keywords anywhere else -- it's fair782        to assume though that any POVRAY scene must have a camera and783        lightsource."""784        result = 0785        if '#version' in text:786            result += 0.05787        if '#declare' in text:788            result += 0.05789        if 'camera' in text:790            result += 0.05791        if 'light_source' in text:792            result += 0.1793 794        return result795 
codekingpro/portable-devtools · Team Ai