blockly > CodeGenerator

فئة CodeGenerator

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

Signature:

export declare class CodeGenerator 

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

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

أماكن إقامة

الموقع مفاتيح التعديل النوع الوصف
COMMENT_WRAP الرقم الحد الأقصى لطول التعليق قبل اختتامه. لا يأخذ في الاعتبار مستوى المسافة البادئة.
definitions_ protected { [key: string]: string; } تمثّل هذه السمة قاموسًا للتعريفات التي ستتم طباعتها قبل الرمز.
forBlock Record<string, (block: Block، منشئ: هذا) => [سلسلة، رقم] | سلسلة | null>

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

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

والمرتجعات:

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

FUNCTION_NAME_PLACEHOLDER_ سلسلة يُستخدم هذا كعنصر نائب في الدوال المحددة باستخدام CodeGenerator.ProvideFunction_. ويجب ألا تكون عبارة عن تعليمة برمجية قانونية يمكن أن تظهر بشكل شرعي في تعريف دالة (أو تعليق)، ويجب ألا تؤدي إلى إرباك المحلل اللغوي للتعبير العادي.
FUNCTION_NAME_PLACEHOLDER_REGEXP_ RegExp
functionNames_ protected { [key: string]: string; } قاموس تعيين أسماء الدوال المطلوبة في التعريفات_ لأسماء الدوال الفعلية (لتجنب التضارب مع دوال المستخدم).
الحركة سلسلة طريقة المسافة البادئة. يتم ضبط مسافتين تلقائيًا على مسافتين، إلا أنّ أدوات إنشاء اللغة قد تلغي هذه القيمة لزيادة المسافة البادئة أو التغيير إلى علامات التبويب.
INFINITE_LOOP_TRAP سلسلة | فارغ يشير هذا المصطلح إلى رمز عشوائي يتم إدخاله في المواقع الجغرافية التي قد تؤدي إلى حدوث حلقات لانهائية. أي حالات لـ '%1' سيتم استبداله بمعرّف الحظر الذي تعذّر إكماله. مثلاً checkTimeout(%1);\n
isInitialized منطقية | فارغ ما إذا تم استدعاء طريقة init أم لا. في حال عدم ضبط هذه العلامة على "خطأ" بعد إنشائها وضبطها على "صحيح"، ستُصدر سياسة حظر الرمز البرمجي تحذيرًا في حال عدم إعداد أداة الإنشاء. إذا لم يتم تغيير هذه العلامة، فلن يكون لها أي تأثير.
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_STATUS وINFINITE_LOOP_TRAP.
prefixLines(text, prefix) أضف بادئة مشتركة في كل سطر من أسطر الرمز. مخصص لترميز المسافة البادئة أو إضافة علامات التعليق.
provideFunction_(desiredName, code)

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

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

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

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