شجرة البنية المجرّدة (AST)، وتُسمى أيضًا التعبير المُقتبَس، هي طريقة لتمثيل الكود كبيانات.
كل عقدة في شجرة البنية المجرّدة عبارة عن صف ثلاثي العناصر.
# AST representation of:
# 2 + 3
{:+, [], [2, 3]}
العنصر الأول، وهو ذرّة، هو العملية. والعنصر الثاني، وهو قائمة كلمات مفتاحية، هو البيانات الوصفية. والعنصر الثالث قائمة من الوسائط، تحتوي على عقد أخرى. أما القيم الحرفية مثل الأعداد الصحيحة والذرّات والسلاسل النصية، فتُُمثَّل في شجرة البنية المجرّدة بنفسها بدلًا من صفوف ثلاثية العناصر.
تحويل كود Elixir إلى أشجار البنية المجرّدة، وتحويل هذه الأشجار مرة أخرى إلى كود، جزء من المكتبة القياسية. تجد دوال التعامل مع أشجار البنية المجرّدة في الوحدتين Code (مثل تحويل سلسلة نصية تحتوي على كود إلى شجرة بنية مجرّدة) وMacro (مثل التنقل في شجرة البنية المجرّدة أو تحويلها إلى سلسلة نصية).
لاحظ أن جميع الدوال في المكتبة القياسية تستخدم الاسم "quoted" للدلالة على شجرة البنية المجرّدة (وهو اختصار لـ التعبير المُقتبَس).
تُسمى الصيغة الخاصة لتحويل الكود إلى شجرة بنية مجرّدة quote. وهي تستقبل كتلة كود وتُرجع شجرة البنية المجرّدة المقابلة لها.
quote do
2 + 3 - 1
end
# => {:-, [], [
# {:+, [], [2, 3]},
# 1
# ]}
القدرة على تمثيل الكود كشجرة بنية مجرّدة تقع في قلب البرمجة الفوقية في Elixir. أما الماكرو، وهي طريقة لكتابة كود Elixir يُنتج كود Elixir، فتعمل بإرجاع أشجار البنية المجرّدة كمخرجات.
من حالات الاستخدام الأخرى لأشجار البنية المجرّدة التحليل الساكن للكود، مثل أداة Exercism نفسها، Analyzer، التي ربما تعرفها بالفعل باسم الروبوت الصغير الذي يترك تعليقات على حلولك.