المعرف (لغات البرمجة)
في لغات برمجة الحاسوب ، يُعدّ المعرّف رمزًا معجميًا (يُسمى أيضًا رمزًا ، ولكن لا ينبغي الخلط بينه وبين نوع البيانات الرمزي الأولي ) يُشير إلى كيانات اللغة. ومن أنواع الكيانات التي قد يدل عليها المعرّف: المتغيرات ، وأنواع البيانات ، والتسميات ، والبرامج الفرعية ، والوحدات .
الشكل المعجمي
تعتمد تسلسلات الأحرف التي تُشكّل مُعرّفات على القواعد المعجمية للغة. القاعدة الشائعة هي التسلسلات الأبجدية الرقمية ، مع السماح باستخدام الشرطة السفلية (في بعض اللغات، لا يُسمح باستخدامها)، بشرط ألا تبدأ برقم (لتبسيط التحليل المعجمي وتجنب الخلط بينها وبين الأعداد الصحيحة ) - لذا foo, foo1, foo_bar, _fooيُسمح باستخدامها، ولكن 1fooلا يُسمح باستخدامها - هذا هو التعريف المُستخدم في الإصدارات السابقة من لغات C و C++ و Python والعديد من اللغات الأخرى. تدعم الإصدارات اللاحقة من هذه اللغات، إلى جانب العديد من اللغات الحديثة الأخرى، عددًا أكبر من أحرف Unicode في المُعرّف. ومع ذلك، يتمثل القيد الشائع في عدم السماح باستخدام المسافات البيضاء وعوامل اللغة؛ هذا يُبسّط عملية التجزئة بجعلها حرة الشكل وخالية من السياق . على سبيل المثال، منع استخدام +في المُعرّفات بسبب استخدامها كعملية ثنائية يعني أنه يمكن تجزئة a+bو a + bبنفس الطريقة، بينما لو سُمح بها، a+bلكانت مُعرّفًا، وليست عملية جمع. تُعدّ المسافات البيضاء في المعرّفات إشكاليةً خاصة، لأنه إذا سُمح باستخدام المسافات في المعرّفات، فإن عبارةً مثل ` if rainy day then 1{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}} rainy day}) تُعتبر صحيحةً ، حيث يمكن real half pi;إدخالها على .real. half pi;النحو التالي : ` { ...
في معظم اللغات، تتخذ بعض تسلسلات الأحرف شكلًا معجميًا يُشبه المُعرِّف، ولكنها تُعرف بالكلمات المفتاحية . على سبيل المثال، ifغالبًا ما تكون كلمة مفتاحية في جملة شرطية، ولكنها معجميًا تُشابه في شكلها كلمة مفتاحية أخرى، igأي fooأنها سلسلة من الأحرف. يُمكن التعامل مع هذا التداخل بطرقٍ مُختلفة: فقد يُمنع استخدامها كمُعرِّفات - مما يُبسِّط عملية التجزئة والتحليل - وفي هذه الحالة تُعتبر كلمات محجوزة ؛ أو قد يُسمح باستخدامها مع التمييز بينها بطرقٍ أخرى، مثل استخدام تقنية الحذف؛ أو قد يُسمح باستخدام تسلسلات الكلمات المفتاحية كمُعرِّفات، ويُحدَّد معناها من السياق، مما يتطلب مُحلِّلًا معجميًا حساسًا للسياق. قد تكون الكلمات غير المفتاحية أيضًا كلمات محجوزة (ممنوع استخدامها كمُعرِّفات)، خاصةً من أجل التوافق مع الإصدارات اللاحقة ، تحسُّبًا لأن تُصبح كلمة ما كلمة مفتاحية في المستقبل. في بعض اللغات، مثل PL/1 ، يكون التمييز غير واضح.
علم الدلالة
يمكن أن يكون نطاق المعرّف، أو إمكانية الوصول إليه داخل البرنامج، محليًا أو عامًا. يُصرَّح عن المعرّف العام خارج الدوال ويكون متاحًا في جميع أنحاء البرنامج. أما المعرّف المحلي فيُصرَّح عنه داخل دالة محددة ويكون متاحًا فقط داخل تلك الدالة. [ 1 ]
بالنسبة لتطبيقات لغات البرمجة التي تستخدم مُترجمًا ، غالبًا ما تكون المعرفات كيانات وقت الترجمة فقط . أي أن البرنامج المُترجم في وقت التشغيل يحتوي على مراجع لعناوين الذاكرة والإزاحات بدلاً من رموز المعرفات النصية (حيث يتم تعيين عناوين الذاكرة أو الإزاحات هذه بواسطة المُترجم لكل مُعرف).
في اللغات التي تدعم الانعكاس ، مثل التقييم التفاعلي لشفرة المصدر (باستخدام مترجم أو مُجمِّع تزايدي)، تُعتبر المعرّفات أيضًا كيانات وقت التشغيل، بل وأحيانًا كائنات من الدرجة الأولى يمكن التلاعب بها وتقييمها بحرية. في لغة ليسب ، تُسمى هذه الرموز .
لا تُسند المترجمات والمفسرات عادةً أي معنى دلالي للمعرف بناءً على تسلسل الأحرف المستخدم فعليًا. ومع ذلك، توجد استثناءات. على سبيل المثال:
- في لغة بيرل، يتم الإشارة إلى المتغير باستخدام بادئة تسمى sigil ، والتي تحدد جوانب كيفية تفسير المتغير في التعبيرات .
- في لغة روبي، يُعتبر المتغير غير قابل للتغيير تلقائياً إذا بدأ مُعرّفه بحرف كبير.
- في لغة Go ، تحدد حالة الحرف الأول من اسم المتغير مدى رؤيته (حرف كبير للعام، وحرف صغير للخاص).
- في لغة فورتران، يُحدد نوع افتراضي للمتغير بناءً على الحرف الأول منه. يكون عددًا صحيحًا إذا كان ضمن النطاق IN، أو عددًا حقيقيًا في غير ذلك.
في بعض اللغات، مثل لغة Go، تعتمد فرادة المعرفات على تهجئتها ومدى ظهورها. [ 2 ]
في لغة HTML، يُعد المعرّف أحد السمات الممكنة لعنصر HTML . وهو فريد داخل المستند.
انظر أيضاً
مراجع
- ↑ مالك، د. (2014). برمجة C++ : من تحليل المشكلة إلى تصميم البرنامج ( الطبعة السابعة). سينجايج ليرنينج. ص 397. ISBN 978-1-285-85274-4.
- ↑ "مواصفات لغة برمجة Go - لغة برمجة Go" . Golang.org. 2013-05-08 . تم الاطلاع عليه بتاريخ 2013-06-05 .
- المعرفات
- مفاهيم لغة البرمجة
- البيانات الوصفية
- الكيانات التركيبية
