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.STRING¶
مقدار توکنی که نشاندهندهی یک رشته یا بایت لفظی است، بهاستثنای رشتههای لفظی قالببندیشده. رشتهی توکن تفسیر نمیشود: شامل علامتهای نقلقول اطراف و پیشوند (در صورت وجود) میشود؛ بکاسلشها بهصورت لفظی، بدون پردازش دنبالههای خنثیسازی، گنجانده میشوند.
- token.OP¶
یک مقدار توکن عام که نشاندهندهی یک عملگر یا جداکننده است.
این مقدار فقط توسط ماژول
tokenizeگزارش داده میشود. در عوض، توکنساز بهصورت داخلی از انواع دقیق توکن استفاده میکند.
- token.COMMENT¶
مقدار توکنی که برای نشان دادن یک کامنت استفاده میشود. پارسر توکنهای
COMMENTرا نادیده میگیرد.
- 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.N_TOKENS¶
تعداد انواع توکن تعریفشده در این ماژول.
- token.EXACT_TOKEN_TYPES¶
دیکشنریای که نمایش رشتهای یک توکن را به کد عددی آن نگاشت میکند.
اضافه شده در نسخهی 3.8.
تغییر یافته در نسخهی 3.5: توکنهای AWAIT و ASYNC افزوده شدند.
تغییر یافته در نسخهی 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 بار دیگر حذف شدند.