ஒரு Lisp interpreter-ஐ எழுதுவது எப்படி

நிரலாக்க மொழிகள் (programming languages) எவ்வாறு செயல்படுகின்றன என்பதை நீங்கள் கற்றுக்கொள்ளும்போது, ஆழமான அறிவைப் பெறுகிறீர்கள். Python-இல் ஒரு Lisp interpreter-ஐ உருவாக்குவது இதை உணர்ந்து கொள்ள ஒரு சிறந்த வழியாகும்.

பீட்டர் நோர்விக் (Peter Norvig) 2010-இல் இந்தத் தலைப்பில் ஒரு புகழ்பெற்ற வழிகாட்டியை எழுதினார். interpreter வடிவமைப்பின் கொள்கைகள் மாறுவதில்லை. குறியீடு (code) எவ்வாறு செயல்பாடாக மாறுகிறது என்பதை நீங்கள் இதன் மூலம் கற்றுக்கொள்ளலாம்.

ஒரு interpreter மூன்று முக்கிய நிலைகளைக் கொண்டுள்ளது:

  • Lexical Analysis: நீங்கள் மூலக் குறியீட்டை (raw code) tokens-களாகப் பிரிக்கிறீர்கள். இவை சொற்கள் மற்றும் குறியீடுகள் போன்ற சிறிய துண்டுகள் ஆகும்.
  • Syntactic Analysis: நீங்கள் tokens-களை ஒரு மரக் கட்டமைப்பாக (tree) மாற்றுகிறீர்கள். இந்த மரம் குறியீட்டின் கட்டமைப்பைக் காட்டுகிறது.
  • Evaluation: செயல்பாடுகளைச் செய்து முடிவைப் பெற, நீங்கள் அந்த மரக் கட்டமைப்பைப் பின்பற்றுகிறீர்கள்.

Lisp இதை எளிதாக்குகிறது. இது S-expressions-களைப் பயன்படுத்துகிறது. அதாவது அனைத்தும் அடைப்புக்குறிக்குள் (parentheses) ஒரு பட்டியலாக (list) இருக்கும். முதல் உறுப்பு பொதுவாகச் செயல்பாடாக (function) இருக்கும். மற்றவை அளவுருக்கள் (arguments) ஆகும்.

தொடங்குவதற்கு, (+ 10 (* 2 5)) போன்ற குறியீட்டை tokens-களாக மாற்றுகிறீர்கள்.

உங்கள் tokens இவ்வாறு இருக்கும்: '(', '+', '10', '(', '*', '2', '5', ')', ')'

இந்த அடிப்படை இயக்கவியலைப் (core mechanics) படிப்பது, நீங்கள் ஒவ்வொரு நாளும் உங்கள் கருவிகளைப் பயன்படுத்தும் முறையை மாற்றும்.

ஆதாரம்: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-how-to-write-a-lisp-interpreter-in-python-2010-22ca