組み込みトークン¶
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 |
演算子( |
句読点 |
Token.Punctuation |
句読点( |
コメント |
Token.Comment |
あらゆる種類のコメント |
汎用 |
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.Constant
定数であるキーワード用(例:将来のPythonバージョンにおける
None
)。- Keyword.Declaration
変数宣言に使用されるキーワード用(例:JavaScriptなどの一部のプログラミング言語における
var
)。- Keyword.Namespace
名前空間宣言に使用されるキーワード用(例:PythonとJavaにおける
import
、Javaにおけるpackage
)。- Keyword.Pseudo
実際にはキーワードではないキーワード用(例:古いPythonバージョンにおける
None
)。- Keyword.Reserved
予約語用。
- Keyword.Type
識別子として使用できない組み込み型用(例:Cにおける
int
、char
など)。
名前トークン¶
- 名前
あらゆる名前用(変数名、関数名、クラス)。
- 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で追加。
汎用トークン¶
汎用トークンは、プログラミング言語ではなくパッチファイルを強調表示する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(汎用 - トレースバック)
トークンの値をエラートレースバックの一部としてマークします。
コメント¶
あらゆるコメント用のトークンタイプ。
#!
).複数行コメント用のトークンタイプ。
プリプロセッサコメント用のトークンタイプ(
<?php
/<%
構文も)。プリプロセッサコメント内のファイル名用のトークンタイプ。たとえば、C/C++のインクルードファイル。
行末で終わるコメント用のトークンタイプ(例:
# foo
)。コメント内の特別なデータ。たとえば、コードタグ、作者とライセンス情報など。