内置令牌

pygments.token 模块,有一个特殊的对象 Token 用于创建令牌类型的。

您可以通过访问属性创建新的令牌类型 Token 其名称以大写字母开头:

>>> from pygments.token import Token
>>> Token.String
Token.String
>>> Token.String is Token.String
True

请注意,令牌是单件的,因此您可以使用 is 用于比较令牌类型的运算符。

您也可以使用 in 执行集合测试的操作员:

>>> from pygments.token import Comment
>>> Comment.Single in Comment
True
>>> Comment in Comment.Multi
False

这对 filters 如果你自己写lexer而不使用基本lexer。

还可以将令牌类型拆分为层次结构,并获取其父级:

>>> String.split()
[Token, Token.Literal, Token.Literal.String]
>>> String.parent
Token.Literal

原则上,您可以创建数量不限的令牌类型,但没有人能保证样式将为令牌类型定义样式规则。因此,Pygments提出了在 pygments.token.STANDARD_TYPES 迪克

对于某些令牌,别名已经定义:

>>> from pygments.token import String
>>> String
Token.Literal.String

里面 pygments.token 模块定义了以下别名:

Text

Token.Text

对于任何类型的文本数据

Whitespace

Token.Text.Whitespace

用于空格

Error

Token.Error

表示lexer错误

Other

Token.Other

用于与分析器不匹配的数据的特殊标记(例如,PHP代码中的HTML标记)

Keyword

Token.Keyword

任何类型的关键字

Name

Token.Name

变量/函数名

Literal

Token.Literal

任何文字

String

Token.Literal.String

字符串

Number

Token.Literal.Number

数字文字

Operator

Token.Operator

算子 (+not ……)

Punctuation

Token.Punctuation

标点符号 ([( ……)

Comment

Token.Comment

任何类型的评论

Generic

Token.Generic

通用标记(请看下面的解释)

通常,您只需使用已经定义的别名创建令牌类型。对于这些令牌别名,存在许多子类型(不包括特殊令牌 Token.TextToken.ErrorToken.Other

还可以将字符串转换为令牌类型(例如,如果您希望从命令行提供令牌):

>>> from pygments.token import String, string_to_tokentype
>>> string_to_tokentype("String")
Token.Literal.String
>>> string_to_tokentype("Token.Literal.String")
Token.Literal.String
>>> string_to_tokentype(String)
Token.Literal.String

关键词令牌

Keyword

对于任何类型的关键字(特别是如果它与任何子类型都不匹配的话)。

Keyword.Constant

对于常量的关键字(例如 None 在未来的python版本中)。

Keyword.Declaration

用于变量声明的关键字(例如 var 在一些编程语言中,比如javascript)。

Keyword.Namespace

用于命名空间声明的关键字(例如 import 在Python和Java中 package 在Java中)。

Keyword.Pseudo

对于不是真正关键字的关键字(例如 None 在旧的python版本中)。

Keyword.Reserved

保留关键字。

Keyword.Type

对于不能用作标识符的内置类型(例如 intchar C等)。

名称代币

Name

任何名称(变量名、函数名、类)。

Name.Attribute

所有属性(例如在HTML标记中)。

Name.Builtin

内置名称;全局命名空间中可用的名称。

Name.Builtin.Pseudo

隐式的内置名称(例如 self 红宝石, this 在Java中)。

Name.Class

类名。因为没有一个lexer可以知道名称是类、函数还是其他什么东西,所以这个标记用于类声明。

Name.Constant

常量的标记类型。在某些语言中,您可以通过定义令牌的方式(在 const 例如关键字)。在其他语言中,常量按定义为大写(Ruby)。

Name.Decorator

装饰器的标记类型。修饰符是Python语言中的句法元素。C语言和Java语言中存在类似的语法元素。

Name.Entity

特殊实体的标记类型。(例如)   在HTML中)。

Name.Exception

异常名称的标记类型(例如 RuntimeError 在 Python 中)。有些语言在函数签名(Java)中定义异常。然后可以使用此标记突出显示该异常的名称。

Name.Function

函数名的标记类型。

Name.Function.Magic

等同于 Name.Function but for special function names that have an implicit use in a language (e.g. ``_ _Python中的inituu``方法)。

Name.Label

标签名称的标记类型(例如,支持的语言 goto

Name.Namespace

命名空间的标记类型。(例如Java/Python中的导入路径),名称如下 module/namespace 其他语言中的关键字。

Name.Other

其他名称。通常不使用。

Name.Property

偶尔用于类属性的其他令牌类型。

Name.Tag

标记名(在HTML/XML标记或配置文件中)。

Name.Variable

变量的标记类型。有些语言有变量名前缀(php、ruby、perl)。您可以使用此令牌突出显示它们。

Name.Variable.Class

等同于 Name.Variable 但对于类变量(也是静态变量)。

Name.Variable.Global

等同于 Name.Variable 但是对于全局变量(例如,在Ruby中使用)。

Name.Variable.Instance

等同于 Name.Variable but for instance variables.

Name.Variable.Magic

等同于 Name.Variable but for special variable names that have an implicit use in a language (e.g. ``_ _doc(Python中的doc)。

直接常量

Literal

任何文字(如果没有进一步定义)。

Literal.Date

用于日期文本(例如 42d 在嘘声中)

String

对于任何字符串文本。

String.Affix

用于进一步指定所附加字符串类型(例如前缀)的词缀的标记类型 ru8 在里面 r"foo"u8"foo"

String.Backtick

反勾号中包含的字符串的标记类型。

String.Char

单字符的令牌类型(例如,Java,C)。

String.Delimiter

“HereDoc”、原始字符串和其他类似字符串(例如单词)中用于分隔标识符的标记类型 END 在Perl代码中 print <<'END';

String.Doc

文档字符串的标记类型(例如python)。

String.Double

双引号字符串。

String.Escape

字符串中转义序列的标记类型。

String.Heredoc

“HereDoc”字符串的标记类型(例如,在Ruby或Perl中)。

String.Interpol

字符串中插入部分的标记类型(例如 #{{foo}} 红宝石)。

String.Other

任何其他字符串的标记类型(例如 %q{{foo}} Ruby中的字符串构造)。

String.Regex

正则表达式文本的标记类型(例如 /foo/ 在JavaScript中)。

String.Single

单引号字符串的标记类型。

String.Symbol

符号的标记类型(例如 :foo 在Lisp或Ruby中)。

Number

任何数字文本的标记类型。

Number.Bin

二进制文本的标记类型(例如 0b101010

Number.Float

浮动文字的标记类型(例如 42.0

Number.Hex

十六进制数文本的标记类型(例如 0xdeadbeef

Number.Integer

整型文字的标记类型(例如 42

Number.Integer.Long

长整型文字的标记类型(例如 42L 在 Python 中)。

Number.Oct

八进制文字的标记类型。

算子

Operator

对于任何标点符号运算符(例如 +-

Operator.Word

对于任何作为一个词的运算符(例如 not

标点符号

在 0.7 版本加入.

Punctuation

对于任何非运算符的标点符号(例如 [( ……)

Punctuation.Marker

用于指向某个位置的标记(例如,用于语法错误的Python回溯中的插入符号)。

在 2.10 版本加入.

评论

Comment

任何注释的标记类型。

Comment.Hashbang
hashbang注释的标记类型(即以开头的第一行文件

#!

Comment.Multiline

多行注释的标记类型。

Comment.Preproc

预处理器注释的标记类型(也 <?php/<% 构造)。

Comment.PreprocFile

预处理器注释中的文件名的标记类型,如C/C++中的包含文件。

Comment.Single

行尾注释的标记类型(例如 # foo

Comment.Special

注释中的特殊数据。例如代码标签、作者和许可证信息等。

通用令牌

通用标记用于特殊的lexer,如 DiffLexer 这并不突出显示编程语言,而是一个补丁文件。

Generic

一种通用的、非样式的标记。通常不使用此令牌类型。

Generic.Deleted

将令牌值标记为已删除。

Generic.Emph

将标记值标记为重点。

Generic.Error

将令牌值标记为错误消息。

Generic.Heading

将标记值标记为标题。

Generic.Inserted

将标记值标记为已插入。

Generic.Output

将标记值标记为程序输出(例如,对于python cli lexer)。

Generic.Prompt

将标记值标记为命令提示(例如bash-lexer)。

Generic.Strong

将标记值标记为粗体(例如,对于rst-lexer)。

Generic.EmphStrong

将令牌值标记为粗体和强调。

Generic.Subheading

将标记值标记为副标题。

Generic.Traceback

将令牌值标记为错误跟踪的一部分。