token --- ثابت‌های مورد استفاده در درخت‌های تجزیه پایتون

کد منبع: Lib/token.py


این ماژول ثابت‌هایی را فراهم می‌کند که مقادیر عددی گره‌های برگ درخت تجزیه (توکن‌های پایانی) را نشان می‌دهند. برای تعاریف نام‌ها در زمینه‌ی گرامر زبان، به پرونده Grammar/Tokens در توزیع پایتون مراجعه کنید. مقادیر عددی مشخصی که نام‌ها به آن‌ها نگاشت می‌شوند ممکن است بین نسخه‌های پایتون تغییر کنند.

این ماژول همچنین نگاشتی از کدهای عددی به نام‌ها و چند تابع فراهم می‌کند. این توابع، تعاریف موجود در پرونده‌های سرآیند C پایتون را منعکس می‌کنند.

توجه داشته باشید که مقدار یک توکن ممکن است به گزینه‌های توکن‌ساز بستگی داشته باشد. برای مثال، یک توکن "+" ممکن است به‌صورت PLUS یا OP گزارش شود، یا یک توکن "match" ممکن است NAME یا SOFT_KEYWORD باشد.

token.tok_name

دیکشنری‌ای که مقادیر عددی ثابت‌های تعریف‌شده در این ماژول را به رشته‌های نام نگاشت می‌کند و امکان تولید نمایش خواناتر برای انسان از درخت‌های تجزیه را فراهم می‌کند.

token.ISTERMINAL(x)

برای مقادیر توکن‌های پایانی، True را برمی‌گرداند.

token.ISNONTERMINAL(x)

برای مقادیر توکن غیرپایانی، True را برمی‌گرداند.

token.ISEOF(x)

اگر x نشانگر پایان ورودی باشد، True را برمی‌گرداند.

ثابت‌های توکن عبارتند از:

token.NAME

مقدار توکنی که نشان‌دهنده‌ی یک شناسه یا کلیدواژه است.

token.NUMBER

مقدار توکن نشان‌دهنده‌ی یک لفظی عددی

token.STRING

مقدار توکنی که نشان‌دهنده‌ی یک رشته یا بایت لفظی است، به‌استثنای رشته‌های لفظی قالب‌بندی‌شده. رشته‌ی توکن تفسیر نمی‌شود: شامل علامت‌های نقل‌قول اطراف و پیشوند (در صورت وجود) می‌شود؛ بک‌اسلش‌ها به‌صورت لفظی، بدون پردازش دنباله‌های خنثی‌سازی، گنجانده می‌شوند.

token.OP

یک مقدار توکن عام که نشان‌دهنده‌ی یک عملگر یا جداکننده است.

این مقدار فقط توسط ماژول tokenize گزارش داده می‌شود. در عوض، توکن‌ساز به‌صورت داخلی از انواع دقیق توکن استفاده می‌کند.

token.COMMENT

مقدار توکنی که برای نشان دادن یک کامنت استفاده می‌شود. پارسر توکن‌های COMMENT را نادیده می‌گیرد.

token.NEWLINE

مقدار توکنی که پایان یک خط منطقی را نشان می‌دهد.

token.NL

مقدار توکنی که برای نشان دادن یک خط جدید غیرپایان‌دهنده به کار می‌رود. توکن‌های NL هنگامی تولید می‌شوند که یک خط منطقی از کد در چندین خط فیزیکی ادامه یابد. پارسر توکن‌های NL را نادیده می‌گیرد.

token.INDENT

مقدار توکنی که در ابتدای یک خط منطقی برای نشان دادن آغاز یک بلوک تورفته استفاده می‌شود.

token.DEDENT

مقدار توکنی که در ابتدای یک خط منطقی برای نشان دادن پایان یک بلوک تورفته استفاده می‌شود.

token.FSTRING_START

مقدار توکنی که برای نشان دادن آغاز یک اف‌استرینگ لفظی استفاده می‌شود.

رشته‌ی توکن شامل پیشوند و علامت‌های نقل‌قول آغازین است، اما هیچ‌بخشی از محتوای مقدار لفظی را شامل نمی‌شود.

token.FSTRING_MIDDLE

مقدار توکن استفاده‌شده برای متن لفظی درون یک اف‌استرینگ لفظی، شامل مشخصات قالب‌بندی.

فیلدهای جایگزینی (یعنی بخش‌های غیرلفظی اف‌استرینگ‌ها) از همان توکن‌های سایر عبارت‌ها استفاده می‌کنند و با توکن‌های LBRACE، RBRACE، EXCLAMATION و COLON جدا می‌شوند.

token.FSTRING_END

مقدار توکنی که برای نشان دادن پایان یک اف‌استرینگ استفاده می‌شود.

رشته‌ی توکن شامل علامت(های) نقل‌قول پایانی است.

token.TSTRING_START

مقدار توکن که برای نشان دادن آغاز یک رشته‌ی قالب (template string literal) به کار می‌رود.

رشته‌ی توکن شامل پیشوند و علامت‌های نقل‌قول آغازین است، اما هیچ‌بخشی از محتوای مقدار لفظی را شامل نمی‌شود.

اضافه شده در نسخه‌ی 3.14.

token.TSTRING_MIDDLE

مقدار توکن استفاده‌شده برای متن لفظی درون یک رشته‌قالب لفظی (template string literal)، شامل مشخصات قالب‌بندی.

فیلدهای جایگزینی، یعنی بخش‌های غیرلفظی رشته‌های t (t-strings)، از همان توکن‌های سایر عبارت‌ها استفاده می‌کنند و با توکن‌های LBRACE، RBRACE، EXCLAMATION و COLON جدا شده‌اند.

اضافه شده در نسخه‌ی 3.14.

token.TSTRING_END

مقدار توکن که برای نشان دادن پایان یک رشته‌ی قالب (template string literal) به کار می‌رود.

رشته‌ی توکن شامل علامت(های) نقل‌قول پایانی است.

اضافه شده در نسخه‌ی 3.14.

token.ENDMARKER

مقدار توکنی که پایان ورودی را نشان می‌دهد. در قواعد دستوری سطح بالا استفاده می‌شود.

token.ENCODING

مقدار توکنی که کدگذاری استفاده‌شده برای کدگشایی بایت‌های منبع به متن را نشان می‌دهد. نخستین توکن برگردانده‌شده توسط tokenize.tokenize() همیشه یک توکن ENCODING خواهد بود.

این نوع توکن توسط توکن‌ساز C استفاده نمی‌شود، اما برای ماژول tokenize مورد نیاز است.

انواع توکن زیر توسط ماژول tokenize تولید نمی‌شوند و برای کاربردهای خاص در توکن‌ساز یا پارسر تعریف شده‌اند:

token.TYPE_IGNORE

مقدار توکنی که نشان می‌دهد یک کامنت type: ignore شناسایی شده است. چنین توکن‌هایی به‌جای توکن‌های معمولی COMMENT فقط با پرچم PyCF_TYPE_COMMENTS تولید می‌شوند.

token.TYPE_COMMENT

مقدار توکنی که نشان می‌دهد یک توضیح نوع شناسایی شده است. چنین توکن‌هایی تنها با پرچم PyCF_TYPE_COMMENTS به‌جای توکن‌های معمولی COMMENT تولید می‌شوند.

token.SOFT_KEYWORD

مقدار توکن نشان‌دهنده‌ی یک کلیدواژه نرم.

توکن‌ساز (tokenizer) هرگز این مقدار را تولید نمی‌کند. برای بررسی یک کلیدواژه‌ی نرم (soft keyword)، رشته‌ی یک توکن NAME را به keyword.issoftkeyword() ارسال کنید.

token.ERRORTOKEN

مقدار توکن برای نشان دادن ورودی نادرست استفاده می‌شود.

ماژول tokenize معمولاً به‌جای تولید این توکن، خطاها را با پرتاب استثناها نشان می‌دهد. همچنین می‌تواند توکن‌هایی مانند OP یا NAME را با رشته‌هایی تولید کند که بعداً توسط پارسر رد می‌شوند.

توکن‌های باقی‌مانده نشان‌دهنده‌ی عملگرهای مشخص و جداکننده‌های مشخص هستند. (ماژول tokenize این‌ها را به‌عنوان OP گزارش می‌کند؛ برای جزئیات، exact_type را در مستندات tokenize ببینید.)

توکن

مقدار

token.LPAR

"("

token.RPAR

")"

token.LSQB

"["

token.RSQB

"]"

token.COLON

":"

token.COMMA

","

token.SEMI

";"

token.PLUS

"+"

token.MINUS

"-"

token.STAR

"*"

token.SLASH

"/"

token.VBAR

"|"

token.AMPER

"&"

token.LESS

"<"

token.GREATER

">"

token.EQUAL

"="

token.DOT

"."

token.PERCENT

"%"

token.LBRACE

"{"

token.RBRACE

"}"

token.EQEQUAL

"=="

token.NOTEQUAL

"!="

token.LESSEQUAL

"<="

token.GREATEREQUAL

">="

token.TILDE

"~"

token.CIRCUMFLEX

"^"

token.LEFTSHIFT

"<<"

token.RIGHTSHIFT

">>"

token.DOUBLESTAR

"**"

token.PLUSEQUAL

"+="

token.MINEQUAL

"-="

token.STAREQUAL

"*="

token.SLASHEQUAL

"/="

token.PERCENTEQUAL

"%="

token.AMPEREQUAL

"&="

token.VBAREQUAL

"|="

token.CIRCUMFLEXEQUAL

"^="

token.LEFTSHIFTEQUAL

"<<="

token.RIGHTSHIFTEQUAL

">>="

token.DOUBLESTAREQUAL

"**="

token.DOUBLESLASH

"//"

token.DOUBLESLASHEQUAL

"//="

token.AT

"@"

token.ATEQUAL

"@="

token.RARROW

"->"

token.ELLIPSIS

"..."

token.COLONEQUAL

":="

token.EXCLAMATION

"!"

ثابت‌های غیرتوکن زیر فراهم شده‌اند:

token.N_TOKENS

تعداد انواع توکن تعریف‌شده در این ماژول.

token.EXACT_TOKEN_TYPES

دیکشنری‌ای که نمایش رشته‌ای یک توکن را به کد عددی آن نگاشت می‌کند.

اضافه شده در نسخه‌ی 3.8.

تغییر یافته در نسخه‌ی 3.5: توکن‌های AWAIT و ASYNC افزوده شدند.

تغییر یافته در نسخه‌ی 3.7: توکن‌های COMMENT، NL و ENCODING افزوده شدند.

تغییر یافته در نسخه‌ی 3.7: توکن‌های AWAIT و ASYNC حذف شدند. «async» و «await» اکنون به‌عنوان توکن‌های NAME توکن‌سازی می‌شوند.

تغییر یافته در نسخه‌ی 3.8: TYPE_COMMENT، TYPE_IGNORE و COLONEQUAL افزوده شدند. توکن‌های AWAIT و ASYNC دوباره افزوده شدند (این توکن‌ها برای پشتیبانی از تجزیه نسخه‌های قدیمی‌تر پایتون برای ast.parse() با feature_version تنظیم‌شده روی 6 یا کمتر لازم هستند).

تغییر یافته در نسخه‌ی 3.12: EXCLAMATION افزوده شد.

تغییر یافته در نسخه‌ی 3.13: توکن‌های AWAIT و ASYNC بار دیگر حذف شدند.