組み込みトークン

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

これは、フィルタや、基本レクサーを使用せずに独自のレクサーを作成する場合に役立ちます。

トークンタイプを階層に分割し、その親を取得することもできます。

>>> 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モジュール内では、以下のエイリアスが定義されています。

テキスト

Token.Text

あらゆる種類のテキストデータ用

空白

Token.Text.Whitespace

空白用

エラー

Token.Error

レクサーエラーを表します

その他

Token.Other

パーサーによって一致しないデータのための特別なトークン(例:PHPコード内のHTMLマークアップ)

キーワード

Token.Keyword

あらゆる種類のキーワード

名前

Token.Name

変数/関数名

リテラル

Token.Literal

あらゆるリテラル

文字列

Token.Literal.String

文字列リテラル

数値

Token.Literal.Number

数値リテラル

演算子

Token.Operator

演算子(+not…)

句読点

Token.Punctuation

句読点([(…)

コメント

Token.Comment

あらゆる種類のコメント

汎用

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.Constant

定数であるキーワード用(例:将来のPythonバージョンにおけるNone)。

Keyword.Declaration

変数宣言に使用されるキーワード用(例:JavaScriptなどの一部のプログラミング言語におけるvar)。

Keyword.Namespace

名前空間宣言に使用されるキーワード用(例:PythonとJavaにおけるimport、Javaにおけるpackage)。

Keyword.Pseudo

実際にはキーワードではないキーワード用(例:古いPythonバージョンにおけるNone)。

Keyword.Reserved

予約語用。

Keyword.Type

識別子として使用できない組み込み型用(例:Cにおけるintcharなど)。

名前トークン

名前

あらゆる名前用(変数名、関数名、クラス)。

Name.Attribute

すべての属性用(例:HTMLタグ内)。

Name.Builtin

組み込み名。グローバル名前空間で使用可能な名前。

Name.Builtin.Pseudo

暗黙的な組み込み名(例:Rubyにおけるself、Javaにおけるthis)。

Name.Class

クラス名。レクサーは名前がクラスか関数かその他かを判断できないため、このトークンはクラス宣言用です。

Name.Constant

定数用のトークンタイプ。一部の言語では、定義方法(たとえば、constキーワードの後の値)によってトークンを認識できます。他の言語では、定数は定義上大文字です(Ruby)。

Name.Decorator

デコレータ用のトークンタイプ。デコレータは、Python言語の構文要素です。C#とJavaにも同様の構文要素が存在します。

Name.Entity

特別なエンティティ用のトークンタイプ。(例:HTMLにおける )。

Name.Exception

例外名用のトークンタイプ(例:PythonにおけるRuntimeError)。一部の言語は、関数シグネチャで例外を定義します(Java)。このトークンを使用して、その例外の名前を強調表示できます。

Name.Function

関数名用のトークンタイプ。

Name.Function.Magic

Name.Functionと同じですが、言語で暗黙的に使用される特別な関数名用です(例:Pythonにおける__init__メソッド)。

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と同じですが、インスタンス変数用。

Name.Variable.Magic

Name.Variableと同じですが、言語で暗黙的に使用される特別な変数名用です(例:Pythonにおける__doc__)。

リテラル

リテラル

あらゆるリテラル用(それ以上定義されていない場合)。

Literal.Date

日付リテラル用(例:Booにおける42d)。

文字列

あらゆる文字列リテラル用。

String.Affix

付加されている文字列のタイプをさらに指定する接辞用のトークンタイプ(例:r"foo"およびu8"foo"におけるプレフィックスrおよびu8)。

String.Backtick

バッククォートで囲まれた文字列用のトークンタイプ。

String.Char

単一文字用のトークンタイプ(例:Java、C)。

String.Delimiter

「ヒアドキュメント」、raw、およびその他の同様の文字列で識別子を区切るためのトークンタイプ(例:Perlコードprint <<'END';における単語END)。

String.Doc

ドキュメント文字列用のトークンタイプ(例:Python)。

String.Double

二重引用符で囲まれた文字列。

String.Escape

文字列内のエスケープシーケンス用のトークンタイプ。

String.Heredoc

「ヒアドキュメント」文字列用のトークンタイプ(例:RubyまたはPerl)。

String.Interpol

文字列内の補間された部分用のトークンタイプ(例:Rubyにおける#{foo})。

String.Other

その他の文字列用のトークンタイプ(例:Rubyにおける%q{foo}文字列構文)。

String.Regex

正規表現リテラル用のトークンタイプ(例:JavaScriptにおける/foo/)。

String.Single

単一引用符で囲まれた文字列用のトークンタイプ。

String.Symbol

シンボル用のトークンタイプ(例:LISPまたはRubyにおける:foo)。

数値

あらゆる数値リテラル用のトークンタイプ。

Number.Bin

2進リテラル用のトークンタイプ(例:0b101010)。

Number.Float

浮動小数点リテラル用のトークンタイプ(例:42.0)。

Number.Hex

16進数リテラル用のトークンタイプ(例:0xdeadbeef)。

Number.Integer

整数リテラル用のトークンタイプ(例:42)。

Number.Integer.Long

long整数リテラル用のトークンタイプ(例:Pythonにおける42L)。

Number.Oct

8進リテラル用のトークンタイプ。

演算子

演算子

あらゆる句読点演算子用(例:+-)。

Operator.Word

単語である演算子用(例:not)。

句読点

バージョン0.7で追加。

句読点

演算子ではない句読点用(例:[(…)

Punctuation.Marker

場所を示すマーカー用(例:Pythonのトレースバックにおける構文エラーのキャレット)。

バージョン2.10で追加。

コメント

コメント

あらゆるコメント用のトークンタイプ。

Comment.Hashbang
ハッシュバングコメント(つまり、で始まるファイルの最初の行)用のトークンタイプ

#!).

Comment.Multiline

複数行コメント用のトークンタイプ。

Comment.Preproc

プリプロセッサコメント用のトークンタイプ(<?php/<%構文も)。

Comment.PreprocFile

プリプロセッサコメント内のファイル名用のトークンタイプ。たとえば、C/C++のインクルードファイル。

Comment.Single

行末で終わるコメント用のトークンタイプ(例:# foo)。

Comment.Special

コメント内の特別なデータ。たとえば、コードタグ、作者とライセンス情報など。

汎用トークン

汎用トークンは、プログラミング言語ではなくパッチファイルを強調表示するDiffLexerなどの特別なレクサー用です。

汎用

汎用のスタイルなしトークン。通常、このトークンタイプは使用しません。

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(汎用 - トレースバック)

トークンの値をエラートレースバックの一部としてマークします。