محب علوی
مدیر
کمپیوٹر سائنس میں پارسنگ عمل ہے ٹیکسٹ کے تجزریہ تاکہ یہ معلوم کیا جا سکے کہ یہ کسی خاص زبان سے متعلق ہے یا نہیں (نحوی طور پر کسی زبان کی گرامر کے تحت)۔ غیر رسمی طور پر اسے نحوی تجزیاتی عمل (syntactic analysis process) کہتے ہیں۔
مندرجہ ذیل مثال میں ایک کمپیوٹر زبان کی پارسنگ گرامر کے دو لیول کی مدد سے بتائی گئی ہے ۔ lexical and syntactic
پہلی سٹیج میں ٹوکن بنائے جاتے ہیں ، اسے lexical analysis بھی کہتے ہیں ۔حروف پر مشتمل مواد () کو معنوی علامات میں تقسیم کر لیا جاتا ہے ریگولر ایکسپریشن کی گرامر کی بنیاد پر۔ مثلا ، ایک کیلکولیٹر کے پروگرام میں ان پٹ "12*(3+4)^2)" ہو تو اسے ان ٹوکنوں میں تقسیم کیا جا سکتا ہے۔
, * , (, 3, + , 4, ), ^ , 212
اس میں ہر ایک پر معنی علامت ہے علم حساب کے سیاق میں۔ Lexer وہ تمام قواعد کا علم رکھے گا جو بتائیں گے کہ حروف * ، + ، ^ ، (،) ایک نئے ٹوکن کا آغاز ہیں سو بے معنی ٹوکن جیسے کہ "12*" یا "(3" پیدا نہیں ہوں گے۔
اگلی سٹیج عموما پارسنگ یا syntactic analysis کہلاتی ہے۔ اس میں یہ چیک کیا جاتا ہے کہ جو ٹوکن بنے ہیں وہ قابل اجازت کلمات پر مشتمل ہیں۔ اسے انجام دینے کے لیے Context Free Grammar کا استعمال کیا جاتا ہے جوعمل دہرائی سے ایسے ترکیبی جزو بیان کرتی ہے جو کلمات بنا سکتی ہے اور بتاتے ہیں کہ کس ترتیب سے وہ منظر عام پر آئیں گے۔ بہرحال ، تمام قواعد اور قانون جو پروگرامنگ زبان کا احاطہ کریں صرف Context Free Grammar سے ان کا اظہار ممکن نہیں مثلا
type validity
proper declaration of identifiers
۔اس کے لیے ایک اور گرامر استعمال کرنے کی ضرورت پڑتی ہے جس کا نام ہے attribute grammars۔
آخری مرحلہ ہوتا ہے معنوی پارسنگ () یا تجزیہ کا جس میں دیکھا جاتاہے کہ جن اظہاریہ یا مرکب کلمے () کو قبولیا گیا ہے اس پر اب کیا عمل کرنا ہے۔ کیلکولیٹر یا انٹرپریٹر کے معاملے میں ، پروگرام یا ایکسپریشن کو جانچا جائے گا۔ کمپائلر کے معاملے میں کوڈ کی شکل میں نتیجہ نکلے گا۔ attribute grammars کا استعمال بھی کیا جا سکتا ہے ان عوامل کو بروئے کار لانے کے لیے۔
مندرجہ ذیل مثال میں ایک کمپیوٹر زبان کی پارسنگ گرامر کے دو لیول کی مدد سے بتائی گئی ہے ۔ lexical and syntactic
پہلی سٹیج میں ٹوکن بنائے جاتے ہیں ، اسے lexical analysis بھی کہتے ہیں ۔حروف پر مشتمل مواد () کو معنوی علامات میں تقسیم کر لیا جاتا ہے ریگولر ایکسپریشن کی گرامر کی بنیاد پر۔ مثلا ، ایک کیلکولیٹر کے پروگرام میں ان پٹ "12*(3+4)^2)" ہو تو اسے ان ٹوکنوں میں تقسیم کیا جا سکتا ہے۔
, * , (, 3, + , 4, ), ^ , 212
اس میں ہر ایک پر معنی علامت ہے علم حساب کے سیاق میں۔ Lexer وہ تمام قواعد کا علم رکھے گا جو بتائیں گے کہ حروف * ، + ، ^ ، (،) ایک نئے ٹوکن کا آغاز ہیں سو بے معنی ٹوکن جیسے کہ "12*" یا "(3" پیدا نہیں ہوں گے۔
اگلی سٹیج عموما پارسنگ یا syntactic analysis کہلاتی ہے۔ اس میں یہ چیک کیا جاتا ہے کہ جو ٹوکن بنے ہیں وہ قابل اجازت کلمات پر مشتمل ہیں۔ اسے انجام دینے کے لیے Context Free Grammar کا استعمال کیا جاتا ہے جوعمل دہرائی سے ایسے ترکیبی جزو بیان کرتی ہے جو کلمات بنا سکتی ہے اور بتاتے ہیں کہ کس ترتیب سے وہ منظر عام پر آئیں گے۔ بہرحال ، تمام قواعد اور قانون جو پروگرامنگ زبان کا احاطہ کریں صرف Context Free Grammar سے ان کا اظہار ممکن نہیں مثلا
type validity
proper declaration of identifiers
۔اس کے لیے ایک اور گرامر استعمال کرنے کی ضرورت پڑتی ہے جس کا نام ہے attribute grammars۔
آخری مرحلہ ہوتا ہے معنوی پارسنگ () یا تجزیہ کا جس میں دیکھا جاتاہے کہ جن اظہاریہ یا مرکب کلمے () کو قبولیا گیا ہے اس پر اب کیا عمل کرنا ہے۔ کیلکولیٹر یا انٹرپریٹر کے معاملے میں ، پروگرام یا ایکسپریشن کو جانچا جائے گا۔ کمپائلر کے معاملے میں کوڈ کی شکل میں نتیجہ نکلے گا۔ attribute grammars کا استعمال بھی کیا جا سکتا ہے ان عوامل کو بروئے کار لانے کے لیے۔