blockly > CodeGenerator

فئة CodeGenerator

فئة لمنشئ رموز يترجم القوالب إلى لغة.

Signature:

export declare class CodeGenerator 

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

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

أماكن إقامة

الموقع مفاتيح التعديل Type الوصف
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_SUFFIX، وINFINITE_LOOP_TRAP.
prefixLines(text, prefix) ضع بادئة مشتركة في كل سطر من التعليمة البرمجية. هذا الحقل مخصّص لإضافة مسافة بادئة للتعليمة البرمجية أو لإضافة علامات تعليق.
توفيرFunction_(desiredName, الرمز)

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

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

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

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