سؤال

كيف C/C++ compiler التعامل مع الحرف ["\"] في شفرة المصدر ؟ كيف هو مترجم اللغة المكتوبة من أجل معالجة هذه الشخصية ؟ ماذا مترجم القيام به بعد أن واجهت هذه الشخصية ؟

هل كانت مفيدة؟

المحلول

وتنقسم معظم المجمعين إلى أجزاء: يسمى الأمامية مترجم على محلل المفردات أو ماسح ضوئي. هذا الجزء من المترجم يقرأ الأحرف الفعلية ويخلق الرموز. أنه يحتوي على آلة الدولة التي تقرر، بناء على رؤية حرف هروب، سواء كان حقيقي (على سبيل المثال عندما يظهر داخل سلسلة) أو أنه يعدل الحرف التالي. الرمز المميز هو الإخراج وفقا لذلك حرف الهروب أو بعض رمز الأخرى (مثل علامة تبويب أو سطر جديد) إلى الجزء التالي من المترجم (<لأ href = "http://en.wikipedia.org/wiki/Parser" يختلط = "noreferrer"> محلل ). حالة الجهاز يمكن مجموعة عدة شخصيات في عربون.

نصائح أخرى

ومذكرة مثيرة للاهتمام حول هذا الموضوع في يثق ثقة [رابط PDF] .

وتصف ورقة واحدة بطريقة مترجم يمكن التعامل مع هذه المشكلة بالضبط، كيف لا يكون المترجم مكتوبة بخط ج-في-ج ترجمة صريحة من رموز إلى قيم ASCII. وكيف ألبس الحذاء رمز هروب جديد في المجمع بحيث فهم قيمة ASCII لرمز جديد هو أيضا ضمني.

عموما يهرب من الأحرف التالية:

  • في سلسلة حرفية أو الطابع الحرفي ، فهذا يعني الهروب الحرف التالي. \a يعني "تنبيه" (وميض المحطة ، التصفير أو أيا كان) ، \n يعني 'آلية', \xNUM يعني رقم ست عشري على سبيل المثال.
  • إذا كان يبدو مثل الماضي مرئية الحرف قبل السطر ، سواء داخل سلسلة أو لا (و حتى داخل خط واسعة تعليق!), انها بمثابة متابعة سطر:التالي حرف السطر الجديد هو تجاهل السطر التالي هو اندمجت مع الخط الحالي.

وحرف الهروب مع الأحرف التالية (مثل \n) هو حرف واحد للمترجم C - قدم الماسح الضوئي لمحلل كما رمزية الطابع، لذلك ليس هناك حاجة في قواعد النحو الخاصة في محلل لحرف الهروب

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top