blockly > CodeGenerator

فئة CodeGenerator

صف حول أداة إنشاء رموز يترجم الكتل إلى لغة

Signature:

export declare class CodeGenerator 

الشركات المصنِّعة

الشركة المصنِّعة مفاتيح التعديل الوصف
(دالة الإنشاء)(name) تنشئ هذه السياسة مثيلاً جديدًا من الفئة CodeGenerator.

أماكن إقامة

الموقع مفاتيح التعديل النوع الوصف
COMMENT_WRAP الرقم تشير هذه السمة إلى الحد الأقصى لمدة التعليق قبل التفافه. لا يأخذ في الاعتبار مستوى المسافة البادئة.
definitions_ protected { [المفتاح: سلسلة]: سلسلة؛ } قاموس التعريفات الذي ستتم طباعته قبل التعليمة البرمجية.
forBlock Record<string, (block: Block, generator: this) => [string, number] | string | null>

يشير هذا المصطلح إلى قاموس لدوال إنشاء الكتل استنادًا إلى نوع الكتلة. تأخذ كل دالة من دوال إنشاء الكتل مَعلمتَين:

- الكتلة لإنشاء رمز من أجل، و- مثيل استدعاء CodeGenerator (أو الفئة الفرعية)، بحيث يمكن للدالة استدعاء الطرق المحددة أدناه (على سبيل المثال، blockToCode) أو على الفئة الفرعية ذات الصلة (مثل JavascripGenerator)،

والإرجاع:

- صف [التعليمة البرمجية، الأسبقية] (لكتلة التعبير/القيمة)، أو - سلسلة تحتوي على التعليمة البرمجية التي تم إنشاؤها (لكتلة العبارات)، أو - لا يجب إدخال رمز للكتلة.

FUNCTION_NAME_PLACEHOLDER_ سلسلة يستخدم هذا كعنصر نائب في الدوال المحددة باستخدام CodeGenerator.provideFunction_. ويجب ألا يكون رمزًا قانونيًا يمكن أن يظهر بشكل مشروع في تعريف (أو تعليق) دالة، كما يجب ألا يؤدي إلى إرباك محلّل التعبير العادي.
FUNCTION_NAME_PLACEHOLDER_REGEXP_ RegExp
functionNames_ protected { [المفتاح: سلسلة]: سلسلة؛ } يشير ذلك المصطلح إلى قاموس يربط أسماء الدوال المطلوبة في التعريفات_ بأسماء الدوال الفعلية (لتجنُّب التضارب مع دوال المستخدم).
الوقت المطلوب سلسلة طريقة المسافة البادئة. يتم ضبط الإعداد التلقائي على مسافتين، ولكن قد تلغي أدوات إنشاء اللغات هذا الإجراء لزيادة المسافة البادئة أو التغيير إلى علامات التبويب.
INFINITE_LOOP_TRAP سلسلة | فارغ يشير هذا المصطلح إلى رمز برمجي عشوائي يتم من خلاله إدخال رموز برمجية في مواقع جغرافية تتسبّب في حدوث حلقات لانهائية. سيتم استبدال أي حالات '%1' برقم تعريف الحظر الذي تعذّر تحميله. مثلاً checkTimeout(%1);\n
isInitialized boolean | null ما إذا تم استدعاء طريقة init. إنّ المولدات التي تضبط هذه العلامة على "خطأ" بعد الإنشاء و"صحيح" في init ستصدر تحذيرًا من خلال دالة blockToCode إذا لم يتم إعداد المنشئ. وإذا لم يتم تغيير هذه العلامة، لن يكون لها أي تأثير.
name_ سلسلة
nameDB_? الاسماء (اختياري) قاعدة بيانات لأسماء المتغيرات والإجراءات
ORDER_OVERRIDES الرقم[][] قائمة بالأزواج الخارجية التي لا تتطلب أقواسًا.
RESERVED_WORDS_ protected سلسلة قائمة مفصولة بفواصل من الكلمات المحجوزة.
STATEMENT_PREFIX سلسلة | فارغ رمز عشوائي لإدخاله قبل كل عبارة سيتم استبدال أي مثيلات لـ '%1' بمعرّف الكتلة في العبارة. مثلاً highlight(%1);\n
STATEMENT_SUFFIX سلسلة | فارغ هو رمز عشوائي لإدخاله بعد كل عبارة. سيتم استبدال أي مثيلات لـ '%1' بمعرّف الكتلة في العبارة. مثلاً highlight(%1);\n

الطُرق

الطريقة مفاتيح التعديل الوصف
addLoopTrap(branch, block) إضافة فخ حلقة لانهائي إلى محتوى التكرار الحلقي. أضف لاحقة عبارة في بداية كتلة التكرار الحلقي (مباشرةً بعد تنفيذ عبارة التكرار الحلقي)، وبادئة عبارة إلى نهاية كتلة التكرار الحلقي (مباشرةً قبل تنفيذ عبارة التكرار).
addReservedWords(words) يمكنك إضافة كلمة واحدة أو أكثر إلى قائمة الكلمات المحجوزة لهذه اللغة.
allNestedComments(block) تظهر العنكبوت بشكل متكرر على شكل شجرة من القوالب، وتعرض جميع تعليقاتها.
blockToCode(block, opt_thisOnly) إنشاء رمز للكتلة المحددة (والكتل المرفقة). يجب تهيئة المنشئ قبل استدعاء هذه الدالة.
finish(code) يمكنك إضافة عنصر جذب لتشغيل الرمز في نهاية عملية إنشاء الرمز. يمكن للفئات الفرعية إلغاء هذا، مثلاً في إضافة الرمز الذي تم إنشاؤه إلى عبارات الاستيراد أو تعريفات المتغيرات.
getProcedureName(name) يحصل على اسم قانوني فريد لإجراء يحدده المستخدم. قبل استدعاء هذه الطريقة، يجب أن يكون قد سبق إعداد السمة nameDB_ للفئة. يتم ذلك عادةً في الدالة init لفئة منشئ الرمز.
getVariableName(nameOrId) للحصول على اسم قانوني فريد لمتغيّر من تحديد المستخدم قبل استدعاء هذه الطريقة، يجب أن يكون قد سبق إعداد السمة nameDB_ للفئة. يتم ذلك عادةً في الدالة init لفئة منشئ الرمز.
init(_workspace) يمكنك إدراج رابط لتشغيل الرمز قبل بدء إنشاء الرمز. قد تتجاوز الفئات الفرعية هذا، على سبيل المثال لتهيئة قاعدة بيانات أسماء المتغيرات.
injectId(msg, block) يمكنك إدخال رقم تعريف حظر في رسالة لاستبدال '%1'. يتم استخدامها مع STATEMENT_PREFIX وSTATEMENT_ التنسيق وINFINITE_LOOP_TRAP.
prefixLines(text, prefix) أضف بادئة مشتركة إلى كل سطر من التعليمة البرمجية. هذا الحقل مخصّص للمسافة البادئة أو إضافة علامات التعليق.
توفيرFunction_(desiredName, code)

تحديد دالة من تحديد المطوّر (وليس إجراءً من تحديد المستخدم) لتضمينها في الرمز البرمجي الذي تم إنشاؤه تُستخدَم لإنشاء دوال المساعد الخاصة. في المرة الأولى التي يتم استدعاء هذه الدالة فيها باستخدام wantName معينة، يتم حفظ الرمز وإنشاء اسم فعلي. لا يكون للاستدعاءات اللاحقة التي لها نفس recognizedName أي تأثير، غير أنّ لها القيمة المعروضة نفسها.

والأمر متروك للمتصل للتأكّد من عدم استخدام نفس حقل صالح لوظائف المساعدة المختلفة (على سبيل المثال: استخدام "colourSmall" و "list")، وليس "العشوائي". ليس هناك خطر الاصطدام بالكلمات المحجوزة أو أسماء المتغيرات أو الإجراءات التي يحددها المستخدم.

يحصل الرمز على الإخراج عند استدعاء CodeGenerator.finish().

scrub_(_block, code, _opt_thisOnly) المهام الشائعة لإنشاء رمز من المجموعات يتم استدعاء هذه العملية من blockToCode ويتم استدعائها في كل جزء، وليس فقط في أقسام المستوى الأعلى. قد تلغي الفئات الفرعية هذا، مثلاً لإنشاء رمز للعبارات التي تلي المجموعة، أو معالجة التعليقات للكتلة المحددة وأي مجموعات قيم مرتبطة.
scrubNakedValue(line) القيم المجردة هي كتل من المستوى الأعلى مع مخرجات غير متصلة بأي شيء. يمكن للفئات الفرعية إلغاء هذا، على سبيل المثال إذا كانت لغتها لا تسمح بالقيم المجردة.
statementToCode(block, name) أنشِئ سلسلة رمز تمثل الكتل المرتبطة بإدخال العبارة المُسمّاة. إضافة مسافة بادئة للتعليمة البرمجية. يُستخدم هذا بشكل أساسي في المولدات. عند محاولة إنشاء رمز لتقييم النظر إليه باستخدام workspaceToCode أو blockToCode
valueToCode(block, name, outerOrder) إنشاء رمز يمثّل قيمة إدخال القيمة المحدّدة
workspaceToCode(workspace) إنشاء رمز لجميع الكتل في مساحة العمل باللغة المحددة