AS

AST মধ্যে Elixir

2টি অনুশীলনী

AST সম্পর্কে

অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST), যাকে quoted expression নামেও ডাকা হয়, হলো কোডকে ডেটা হিসেবে উপস্থাপন করার একটি উপায়।

AST-এর প্রতিটি নোড একটি তিন এলিমেন্টের টাপল।

# AST representation of:
# 2 + 3
{:+, [], [2, 3]}

প্রথম এলিমেন্টটি, একটি অ্যাটম, হলো অপারেশন। দ্বিতীয় এলিমেন্টটি, একটি কিওয়ার্ড লিস্ট, হলো মেটাডেটা। তৃতীয় এলিমেন্টটি আর্গুমেন্টের একটি অ্যারে, যার মধ্যে অন্য নোডগুলো থাকে। ইন্টিজার, অ্যাটম আর স্ট্রিংয়ের মতো লিটারাল মানগুলো AST-এ তিন এলিমেন্টের টাপলের বদলে নিজেদের রূপেই উপস্থাপিত হয়।

কোডকে AST-এ রূপান্তর করা

Elixir কোডকে AST-এ এবং AST-কে আবার কোডে বদলানো স্ট্যান্ডার্ড লাইব্রেরির অংশ। AST নিয়ে কাজ করার ফাংশন আপনি পাবেন Code মডিউলে (যেমন কোডসহ একটি স্ট্রিংকে AST-এ বদলাতে) এবং Macro মডিউলে (যেমন AST ঘুরে দেখতে বা এটিকে স্ট্রিংয়ে বদলাতে)।

মনে রাখবেন, স্ট্যান্ডার্ড লাইব্রেরির সব ফাংশনই AST বোঝাতে "quoted" নামটি ব্যবহার করে (সংক্ষেপে quoted expression)।

কোডকে AST-এ বদলানোর স্পেশাল ফর্মটির নাম quote। এটি একটি কোড ব্লক নেয় এবং তার AST রিটার্ন করে।

quote do
  2 + 3 - 1
end

# => {:-, [], [
#      {:+, [], [2, 3]},
#      1
#    ]}

ব্যবহারের ক্ষেত্র

কোডকে AST হিসেবে উপস্থাপন করার ক্ষমতাই Elixir-এ মেটাপ্রোগ্রামিংয়ের মূল ভিত্তি। ম্যাক্রো, অর্থাৎ Elixir কোড লেখার এমন একটি উপায় যা Elixir কোড তৈরি করে, আউটপুট হিসেবে AST রিটার্ন করে কাজ করে।

AST-এর আরেকটি ব্যবহার হচ্ছে স্ট্যাটিক কোড অ্যানালাইসিস, যেমন Exercism-এর নিজস্ব টুল Analyzer, যাকে আপনি হয়তো ছোট্ট বট হিসেবে চেনেন, যে আপনার সলুশনগুলোতে কমেন্ট করে।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

AST শিখুন

অনুশীলন লক করা আছে

AST অনুশীলন করতে আরও ১টি অনুশীলনী আনলক করুন