صناعة المفسّرات › التذييل II 35 / 35 السابق

الملحق الثاني

لمنفعة القارئ، هاهو الشيفرة التي يُنتجها السكربت الصغير الذي بنيناه لأتمتة توليد أصناف شجرة التحليل الخاصّة بـ jlox.

التعبيرات

التعبيرات هي أوّل عُقد شجرة التحليل التي نراها، وهي مُقدَّمة في "تمثيل الشيفرة". ويُعرّف صنف Expr الرئيسي (class) واجهة الزائر (visitor interface) المستخدَمة للتوجيه نحو أنواع التعبيرات المحدّدة، ويحتوي الأصناف الفرعية لتلك التعبيرات الأخرى كأصناف متداخلة.

^code expr

تعبير الإسناد

إسناد (assignment) المتغيّرات مُقدَّم في "الجمل والحالة".

^code expr-assign

تعبير ثنائي

المعاملات الثنائية مُقدَّمة في "تمثيل الشيفرة".

^code expr-binary

تعبير استدعاء

تعبيرات استدعاء الدوال مُقدَّمة في "الدوال".

^code expr-call

تعبير الجلب (get)

الوصول إلى الخصائص، أو تعبيرات "get"، مُقدَّمة في "الأصناف".

^code expr-get

تعبير تجميع

استخدام الأقواس لتجميع التعبيرات مُقدَّم في "تمثيل الشيفرة".

^code expr-grouping

تعبير قيمة حرفية

تعبيرات القيم الحرفية مُقدَّمة في "تمثيل الشيفرة".

^code expr-literal

تعبير منطقي

معاملا and وor المنطقيان مُقدَّمان في "التحكّم في المسار".

^code expr-logical

تعبير الضبط (set)

إسناد الخصائص، أو تعبيرات "set"، مُقدَّمة في "الأصناف".

^code expr-set

تعبير الاستدعاء الفائق (super)

تعبير super مُقدَّم في "الوراثة".

^code expr-super

تعبير this

تعبير this مُقدَّم في "الأصناف".

^code expr-this

تعبير أحادي

المعاملات الأحادية مُقدَّمة في "تمثيل الشيفرة".

^code expr-unary

تعبير متغيّر

تعبيرات الوصول إلى المتغيّرات (variables) مُقدَّمة في "البيانات والحالة".

^code expr-variable

الجمل

تشكّل الجمل تسلسلاً ثانياً من عُقد شجرة التحليل مستقلاً عن التعبيرات. وقد أضفنا أول عبارتين منها في "البيانات والحالة".

^code stmt

جملة الكتلة (block)

جملة الكتلة بأقواسها المعقوفة التي تُعرّف نطاقاً (scope) محلياً مُقدَّمة في "الجمل والحالة".

^code stmt-block

جملة الصنف (class)

إعلانات الأصناف مُقدَّمة -- ومن المتوقّع تماماً -- في "الأصناف".

^code stmt-class

جملة تعبير

جملة التعبير مُقدَّمة في "البيانات والحالة".

^code stmt-expression

جملة دالة

إعلانات الدوال مُقدَّمة -- وقد خمّنت ذلك -- في "الدوال".

^code stmt-function

جملة if

جملة if مُقدَّمة في "التحكّم في المسار".

^code stmt-if

جملة print

جملة print مُقدَّمة في "البيانات والحالة".

^code stmt-print

جملة return

تحتاج دالة كي تُرجع منها، لذا فإنّ جُمل return مُقدَّمة في "الدوال".

^code stmt-return

جملة متغيّر

إعلانات المتغيّرات مُقدَّمة في "البيانات والحالة".

^code stmt-var

جملة while

جملة while مُقدَّمة في "التحكّم في المسار".

^code stmt-while