الملحق الثاني
لمنفعة القارئ، هاهو الشيفرة التي يُنتجها السكربت الصغير الذي بنيناه لأتمتة توليد أصناف شجرة التحليل الخاصّة بـ 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