内置令牌¶
在 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 |
算子 ( |
Punctuation |
Token.Punctuation |
标点符号 ( |
Comment |
Token.Comment |
任何类型的评论 |
Generic |
Token.Generic |
通用标记(请看下面的解释) |
通常,您只需使用已经定义的别名创建令牌类型。对于这些令牌别名,存在许多子类型(不包括特殊令牌 Token.Text , Token.Error 和 Token.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
对于不能用作标识符的内置类型(例如
int
,char
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
用于进一步指定所附加字符串类型(例如前缀)的词缀的标记类型
r
和u8
在里面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 版本加入.
通用令牌¶
通用标记用于特殊的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
将令牌值标记为错误跟踪的一部分。
评论¶
任何注释的标记类型。
#!
)多行注释的标记类型。
预处理器注释的标记类型(也
<?php
/<%
构造)。预处理器注释中的文件名的标记类型,如C/C++中的包含文件。
行尾注释的标记类型(例如
# foo
)注释中的特殊数据。例如代码标签、作者和许可证信息等。