ഒരു Lisp ഇന്റർപ്രെറ്റർ എങ്ങനെ എഴുതാം
പ്രോഗ്രാമിംഗ് ഭാഷകൾ എങ്ങനെയാണ് പ്രവർത്തിക്കുന്നതെന്ന് പഠിക്കുമ്പോൾ നിങ്ങൾക്ക് ആഴത്തിലുള്ള അറിവ് ലഭിക്കുന്നു. പൈത്തണിൽ (Python) ഒരു Lisp ഇന്റർപ്രെറ്റർ നിർമ്മിക്കുന്നത് ഇത് മനസ്സിലാക്കാനുള്ള മികച്ചൊരു മാർഗമാണ്.
2010-ൽ പീറ്റർ നോർവിഗ് (Peter Norvig) ഈ വിഷയത്തിൽ പ്രശസ്തമായ ഒരു ഗൈഡ് എഴുതിയിട്ടുണ്ട്. ഇന്റർപ്രെറ്റർ ഡിസൈനിന്റെ തത്വങ്ങൾ മാറുന്നില്ല. കോഡ് എങ്ങനെയാണ് പ്രവർത്തനങ്ങളായി മാറുന്നത് എന്ന് ഇതിലൂടെ നിങ്ങൾക്ക് പഠിക്കാം.
ഒരു ഇന്റർപ്രെറ്റർ പ്രധാനമായും മൂന്ന് ഘട്ടങ്ങളിലൂടെയാണ് കടന്നുപോകുന്നത്:
- ലെക്സിക്കൽ അനാലിസിസ് (Lexical Analysis): നിങ്ങൾ കോഡിനെ ടോക്കണുകളായി (tokens) വിഭജിക്കുന്നു. വാക്കുകളും ചിഹ്നങ്ങളും പോലുള്ള ചെറിയ ഭാഗങ്ങളാണിവ.
- സിന്റാക്റ്റിക് അനാലിസിസ് (Syntactic Analysis): നിങ്ങൾ ടോക്കണുകളെ ഒരു ട്രീ (tree) രൂപത്തിലേക്ക് മാറ്റുന്നു. കോഡിന്റെ ഘടനയെ ഈ ട്രീ കാണിക്കുന്നു.
- ഇവാലുവേഷൻ (Evaluation): പ്രവർത്തനങ്ങൾ നടപ്പിലാക്കാനും ഫലം ലഭിക്കാനും നിങ്ങൾ ഈ ട്രീ പിന്തുടരുന്നു.
Lisp ഇത് ലളിതമാക്കുന്നു. ഇത് S-expressions ഉപയോഗിക്കുന്നു. അതായത്, ബ്രാക്കറ്റുകൾക്കുള്ളിലുള്ള (parentheses) എല്ലാം ഒരു ലിസ്റ്റ് ആണ് എന്നാണ് ഇതിനർത്ഥം. സാധാരണയായി ആദ്യത്തെ ഐറ്റം ഫങ്ക്ഷനും (function) ബാക്കിയുള്ളവ ആർഗ്യുമെന്റുകളും (arguments) ആണ്.
തുടങ്ങാനായി, (+ 10 (* 2 5)) പോലുള്ള കോഡിനെ ടോക്കണുകളാക്കി മാറ്റുന്നു.
നിങ്ങളുടെ ടോക്കണുകൾ ഇപ്രകാരമായിരിക്കും: '(', '+', '10', '(', '*', '2', '5', ')', ')'
ഈ അടിസ്ഥാന പ്രവർത്തനങ്ങളെക്കുറിച്ച് പഠിക്കുന്നത് നിങ്ങളുടെ ഉപകരണങ്ങൾ (tools) ദിവസവും ഉപയോഗിക്കുന്ന രീതിയെ തന്നെ മാറ്റും.