Compiler Description Language
தொகுப்பு விளக்க மொழி (சி. டி. எல்) என்பது அஃபிக்ஸ் இலக்கணங்களை அடிப்படையாகக் கொண்ட ஒரு நிரலாக்க மொழியாகும். இது பேக்கஸ்-நௌர் வடிவம் (பி. என். எஃப்) குறியீட்டிற்கு மிகவும் ஒத்திருக்கிறது. இது தொகுப்பான்களின் வளர்ச்சிக்காக வடிவமைக்கப்பட்டது. இது அதன் திறன்கள் மற்றும் கட்டுப்பாட்டு ஓட்டத்தில் மிகவும் குறைவாக உள்ளது, மேலும் வேண்டுமென்றே அவ்வாறு உள்ளது. இந்த வரம்புகளின் நன்மைகள் இரு மடங்கு ஆகும். ஒருபுறம், அவை அதிநவீன தரவு மற்றும் சிடிஎல் 2 ஆப்டிமைசர்களால் பயன்படுத்தப்படும் கட்டுப்பாட்டு ஓட்ட பகுப்பாய்வை சாத்தியமாக்குகின்றன, இதன் விளைவாக மிகவும் திறமையான குறியீடு உருவாகிறது. மற்ற நன்மை என்னவென்றால், அவை மிகவும் சொற்களஞ்சியமான பெயரிடும் நடைமுறையை வளர்க்கின்றன. இது, ஒரு பெரிய அளவிற்கு, சுய ஆவணப்படுத்தும் திட்டங்களுக்கு வழிவகுக்கிறது. மொழி ஓரளவு புரோலாக் போலத் தெரிகிறது (இரண்டு மொழிகளும் ஒரே நேரத்தில் அஃபிக்ஸ் இலக்கணங்களில் வேலை செய்யாமல் தோன்றியதால் இது ஆச்சரியமல்ல). இருப்பினும், புரோலாக்கிற்கு மாறாக, சிடிஎல்லில் கட்டுப்பாட்டு ஓட்டம் என்பது வெற்றி/தோல்வியை அடிப்படையாகக் கொண்டது, அதாவது, தற்போதைய ஒன்று வெற்றி பெறும்போது வேறு எந்த மாற்றுகளும் முயற்சிக்கப்படுவதில்லை. இந்த யோசனை சொற்றொடர் இலக்கணங்களை பகுப்பாய்வு செய்வதிலும் பயன்படுத்தப்படுகிறது. சிடிஎல் 3 என்பது சிடிஎல் மொழியின் மூன்றாவது பதிப்பாகும், இது முந்தைய இரண்டு பதிப்புகளிலிருந்து கணிசமாக வேறுபட்டது. 1971 ஆம் ஆண்டில் நிஜ்மெகன் பல்கலைக்கழகத்தில் கார்னலிஸ் எச். ஏ. கோஸ்டர் வடிவமைத்த அசல் பதிப்பு, ஒரு அசாதாரண கருத்தைக் கொண்டிருந்ததுஃ அதற்கு மையப்பகுதி இல்லை. ஒரு வழக்கமான நிரலாக்க மொழி ஆதாரம் இயந்திர அறிவுறுத்தல்கள் அல்லது அந்த அறிவுறுத்தல்களின் பதிவு செய்யப்பட்ட வரிசைகளுக்கு மொழிபெயர்க்கப்பட்டுள்ளது. அவை மையத்தைக் குறிக்கின்றன, கொடுக்கப்பட்ட மொழி ஆதரிக்கும் மிக அடிப்படையான சுருக்கங்கள். இத்தகைய முதன்மை எண்கள் எண்களைச் சேர்ப்பது, ஒருவருக்கொருவர் மாறிகளை நகலெடுப்பது மற்றும் பலவாக இருக்கலாம். சி. டி. எல். 1-ல் அத்தகைய மையப்பகுதி இல்லை. பழமையான செயல்பாடுகளை ஒரு வடிவத்தில் வழங்குவது புரோகிராமரின் பொறுப்பாகும், பின்னர் அதை ஒரு அசெம்ப்ளர் அல்லது ஒரு பாரம்பரிய மொழிக்கான கம்பைலர் மூலம் இயந்திர அறிவுறுத்தல்களாக மாற்ற முடியும். சி. டி. எல். 1 மொழிக்குத் தானே பூர்வீகங்கள் பற்றிய கருத்து இல்லை, இயந்திர வார்த்தையைத் தவிர தரவு வகைகளின் கருத்து இல்லை (சேமிப்பகத்தின் ஒரு சுருக்க அலகு-ஒரு உண்மையான இயந்திர வார்த்தை அவசியமில்லை). மதிப்பீட்டு விதிகள் பேக்கஸ்-நௌர் வடிவ தொடரியல் விளக்கங்களைப் போலவே உள்ளன; உண்மையில், பி. என். எஃப் இல் விவரிக்கப்பட்டுள்ள ஒரு மொழிக்கு ஒரு பாகுபடுத்தியை எழுதுவது சிடிஎல் 1 இல் மிகவும் எளிதானது. அடிப்படையில், மொழி விதிகளைக் கொண்டுள்ளது. ஒரு விதி வெற்றி பெறலாம் அல்லது தோல்வியடையலாம். ஒரு விதி மற்ற விதி அழைப்புகளின் வரிசைகளாக இருக்கும் மாற்றுகளைக் கொண்டுள்ளது. ஒரு விதி அதன் மாற்று வழிகளில் ஏதேனும் வெற்றி பெற்றால் வெற்றி பெறுகிறது; இவை வரிசையாக முயற்சிக்கப்படுகின்றன. அதன் அனைத்து விதி அழைப்புகளும் வெற்றி பெற்றால் ஒரு மாற்று வெற்றி பெறுகிறது. மறுநிகழ்வு இல்லாமல் மதிப்பீட்டு சுழல்களை உருவாக்க ஆபரேட்டர்களுக்கு மொழி வழங்குகிறது (சி. டி. எல் 2 இல் இது கண்டிப்பாக தேவையில்லை என்றாலும், ஆப்டிமைசர் அதே விளைவை அடைகிறது) மற்றும் சில குறுக்குவழிகள் இல்லையெனில் மறுநிகழ்வு மதிப்பீட்டின் செயல்திறனை அதிகரிக்க, ஆனால் அடிப்படை கருத்து மேலே உள்ளது. சூழல்-இல்லாத இலக்கணப் பகுப்பாய்வில் வெளிப்படையான பயன்பாட்டைத் தவிர, சி. டி. எல் பயன்பாடுகளைக் கட்டுப்படுத்துவதற்கும் மிகவும் பொருத்தமானது, ஏனெனில் நிறைய கட்டுப்பாட்டு பயன்பாடுகள் அடிப்படையில் ஆழமாக உள்ளமைக்கப்பட்டவை என்றால்-பின்னர் விதிகள். ஒவ்வொரு சி. டி. எல் 1 விதியும், மதிப்பீடு செய்யப்படும்போது, தரவுகளின் மீது செயல்பட முடியும், இது குறிப்பிடப்படாத வகையாகும். வெறுமனே, விதி வெற்றிகரமாக இல்லாவிட்டால் தரவை மாற்றக்கூடாது (தோல்விக்கு பக்க விளைவுகள் இல்லை). இந்த விதி வெற்றிபெறக்கூடும் என்றாலும், அதை அழைக்கும் விதி இன்னும் தோல்வியடையக்கூடும், இந்த விஷயத்தில் தரவு மாற்றம் நடைமுறைக்கு வரக்கூடாது. அனைத்து தரவுகளும் ஒரு அடுக்கில் மாறும் வகையில் ஒதுக்கப்பட்டிருந்தால் மேலே உள்ள நடத்தையை உறுதிப்படுத்துவது மிகவும் எளிதானது (நினைவக தீவிரம் என்றாலும்). இருப்பினும், நிலையான தரவு இருக்கும்போது இது மிகவும் கடினம், இது பெரும்பாலும் நிகழ்கிறது. சி. டி. எல். 2 தொகுப்பாளரால் சாத்தியமான மீறல்களைக் குறிக்க முடியும், ஏனெனில் அளவுருக்களின் திசை (உள்ளீடு, வெளியீடு, உள்ளீடு-வெளியீடு) மற்றும் விதிகளின் வகை (தோல்வியடையலாம்ஃ சோதனை, கணிப்பு; தோல்வியடைய முடியாதுஃ செயல்பாடு, செயல்; ஒரு பக்க விளைவைக் கொண்டிருக்கலாம்ஃ கணிப்பு, செயல்; ஒரு பக்க விளைவைக் கொண்டிருக்க முடியாதுஃ சோதனை, செயல்பாடு) புரோகிராமரால் குறிப்பிடப்பட வேண்டும். விதி மதிப்பீடு எளிமையான மற்றும் எளிமையான விதிகளை அழைப்பதை அடிப்படையாகக் கொண்டிருப்பதால், கீழே, உண்மையான வேலையைச் செய்யும் சில பழமையான விதிகள் இருக்க வேண்டும். இங்குதான் சி. டி. எல். 1 மிகவும் ஆச்சரியமாக இருக்கிறதுஃ அதில் அந்த பூர்வீகங்கள் இல்லை. அந்த விதிகளை நீங்களே வழங்க வேண்டும். உங்கள் நிரலில் கூட்டல் தேவைப்பட்டால், நீங்கள் இரண்டு உள்ளீட்டு அளவுருக்கள் மற்றும் ஒரு வெளியீட்டு அளவுருவுடன் ஒரு விதியை உருவாக்க வேண்டும், மேலும் வெளியீடு உங்கள் குறியீட்டின் மூலம் இரண்டு உள்ளீடுகளின் கூட்டுத்தொகையாக அமைக்கப்படுகிறது. சிடிஎல் கம்பைலர் உங்கள் குறியீட்டை சரங்களாகப் பயன்படுத்துகிறது (உள்ளீடு மற்றும் வெளியீட்டு மாறிகளை எவ்வாறு குறிப்பிடுவது என்பது குறித்த மரபுகள் உள்ளன) மற்றும் தேவைக்கேற்ப அதை வெளியிடுகிறது. அசெம்பிளியைப் பயன்படுத்தி உங்கள் சேர்க்கும் விதியை நீங்கள் விவரித்தால், சிடிஎல் கம்பைலரின் வெளியீட்டை இயந்திரக் குறியீட்டிற்குள் மொழிபெயர்க்க உங்களுக்கு ஒரு அசெம்ப்ளர் தேவைப்படும். பாஸ்கல் அல்லது சி இல் உள்ள அனைத்து பழமையான விதிகளையும் (சிடிஎல் சொற்களில் மேக்ரோக்கள்) நீங்கள் விவரித்தால், சிடிஎல் தொகுப்புக்குப் பிறகு இயக்க உங்களுக்கு ஒரு பாஸ்கல் அல்லது சி தொகுப்பாளர் தேவை. எளிய இயந்திர அறிவுறுத்தல் செயல்பாட்டிற்கு கூட, குறியீட்டின் ஒரு பகுதியை நீங்கள் எழுத வேண்டியிருக்கும் போது, இந்த முக்கிய ஆரம்பகாலத்தின் பற்றாக்குறை மிகவும் வேதனையாக இருக்கும். இருப்பினும், மறுபுறம், கவர்ச்சியான சுருக்கமான பொருட்களில் செயல்படும் மர்மமான, சுருக்கமான பழங்காலங்களை செயல்படுத்துவதில் இது உங்களுக்கு பெரும் நெகிழ்வுத்தன்மையை அளிக்கிறது (சி. டி. எல் இல் உள்ள 'இயந்திர வார்த்தை' என்பது 'தரவு சேமிப்பகத்தின் அலகு போன்றது, அங்கு சேமிக்கப்பட்ட தரவு வகையைப் பற்றி எந்த குறிப்பும் இல்லை). கூடுதலாக, பெரிய திட்டங்கள் கவனமாக வடிவமைக்கப்பட்ட பழங்கால நூலகங்களைப் பயன்படுத்தின. இவை பின்னர் ஒவ்வொரு இலக்கு கட்டமைப்பிற்கும் OS க்கும் நகலெடுக்கப்பட்டன, இது அனைவருக்கும் மிகவும் திறமையான குறியீட்டை உற்பத்தி செய்ய அனுமதிக்கிறது. மொழியைப் பற்றிய ஒரு உணர்வைப் பெற, CDL2 கையேட்டில் இருந்து தழுவி எடுக்கப்பட்ட ஒரு சிறிய குறியீடு துண்டு இங்கே உள்ளதுஃ ACTIN விரைவு +> இலிருந்து +> முதல்-p-q: குறைவான + இலிருந்து +, பிளப்பு + இலிருந்து + p + q, விரைவு + இலிருந்து + q, விரைவு + p + இலிருந்து; +. செயல் பிளவு +> i +> j + p> + q>-m: + p + i ஐ உருவாக்கவும், + q + j ஐ உருவாக்கவும், + i + j + m ஐ சேர்க்கவும், + m ஐ பாதியாக மாற்றவும், (மீண்டும்ஃ + j + p + m ஐ மேலே நகர்த்தவும், + i + q + m ஐ கீழே நகர்த்தவும், (குறைவான + p + q, ஸ்வாப் உருப்படி + p + q, Incr + p, டெக்ர் + q, * மீண்டும்; குறைவான + p + m, ஸ்வாப் உருப்படி + p + m, Incr + p; குறைவான + m + q, ஸ்வாப் உருப்படி + q + m, டெக்ர் + q; +). செயல்பாடு +> ஜே +> பி> +> எம்ஃ குறைவான + ஜே + பி; சிறிய உருப்படி + எம் + பி; இன்க்ர் + பி, *. செயல்பாடு +> i +> q> +> m: குறைவானது + q + j; சிறிய உருப்படி + q + m; டெக்ர் + q, *. டெஸ்ட் லெஸ் +> a +> b: = a "<" b. செயல்பாடு + a> +> b: = a "=" b. செயல்பாடு கூட்டல் +> a +> b + தொகை>: = கூட்டல் "=" a "+" b. செயல்பாடு பாதியாக +> a>: = a "/= 2". செயல்பாடு முறுக்கு +> a>: = a "+ +". செயல்பாடு டெக்ர் +> a>: = a "--". சிறிய உருப்படி +> i +> j: = "உருப்படிகள் [" i "] <உருப்படிகள் [" j "]". செயல் இடமாற்ற உருப்படிகள் +> i +> j-t: = t "= உருப்படிகள் [" i "]; உருப்படிகள் [" i "] = உருப்படிகள் [" j "]; உருப்படிகள் [" j "] =" t. இங்கு ஜாவா (அல்லது சி) அடிப்படையில் பழமையான செயல்பாடுகள் வரையறுக்கப்படுகின்றன. இது ஒரு முழுமையான நிரல் அல்ல; ஜாவா வரிசை உருப்படிகளை வேறு இடங்களில் வரையறுக்க வேண்டும். 1976 இல் தோன்றிய சி. டி. எல் 2, சி. டி. எல் 1 இன் கொள்கைகளை வைத்திருந்தது, ஆனால் மொழியை பெரிய திட்டங்களுக்கு ஏற்றதாக மாற்றியது. இது தொகுதிகளை அறிமுகப்படுத்தியது, தரவு மாற்றத்தை மட்டுமே வெற்றிகரமாக அமல்படுத்தியது, மேலும் மொழியின் திறன்களை ஓரளவு விரிவுபடுத்தியது. சி. டி. எல் 2 தொகுப்பில் உள்ள உகப்பான்கள் மற்றும் குறிப்பாக சி. டி. எல் 2 ஆய்வகத்தில் (சி. டி. எல் 2 க்கான ஐ. டி. இ) உலகத் தரம் வாய்ந்தவை, அவற்றின் நேரத்திற்கு மட்டுமல்ல. சிடிஎல்2 ஆய்வக உகப்பாக்கியின் ஒரு அம்சம் கிட்டத்தட்ட தனித்துவமானதுஃ இது தொகுப்பு அலகுகள் முழுவதும் உகப்பாக்கங்களைச் செய்ய முடியும், அதாவது, முழு திட்டத்தையும் ஒரே தொகுப்பாகக் கருதுகிறது. சி. டி. எல் 3 மிகவும் சமீபத்திய மொழியாகும். இது முந்தைய சி. டி. எல் பதிப்புகளின் திறந்த-இறுதி அம்சத்தை கைவிட்டது, மேலும் இது அடிப்படை எண்கணிதம் மற்றும் சேமிப்பு அணுகலுக்கு முதன்மையானவற்றை வழங்குகிறது. முந்தைய சிடிஎல் பதிப்புகளின் மிகவும் தூய்மையான தொடரியல் (ஒற்றை இலக்கங்களில் இயங்கும் முக்கிய வார்த்தைகள் மற்றும் சின்னங்களின் எண்ணிக்கை) தளர்த்தப்பட்டுள்ளது. சில அடிப்படை கருத்துக்கள் இப்போது வெளிப்படையான சொற்பொருளை விட தொடரியல் மூலம் வெளிப்படுத்தப்படுகின்றன. கூடுதலாக, தரவு வகைகள் மொழியில் அறிமுகப்படுத்தப்பட்டுள்ளன. வணிக ரீதியான எம்பிபி கோபால் (பிசி-க்கான ஒரு கோபால் தொகுப்பாளர்) மற்றும் எம்பிராலஜி சிஸ்டம் (ஏராளமான கட்டமைப்புகளில் இயங்கும் ஒரு தொழில்துறை-வலிமை புரோலாக் செயல்படுத்தல் (ஐபிஎம் மெயின்ஃப்ரேம், விஏஎக்ஸ், பிடிபி-11, இன்டெல் 8086 போன்றவை) ஆகியவற்றைப் பயன்படுத்தவும். மற்றும் OS-s (DOS/OS/CMS/BS2000, VMS/UNIX, DOS/Windows/OS2). பிந்தையது, குறிப்பாக, சி. டி. எல் 2 இன் பெயர்வுத்திறனுக்கு சான்றாகும். சி. டி. எல் உடன் எழுதப்பட்ட பெரும்பாலான நிரல்கள் தொகுப்பாளர்களாக இருந்தபோதிலும், குறைந்தபட்சம் ஒரு வணிக ரீதியான ஜி. யு. ஐ பயன்பாடு சி. டி. எல் இல் உருவாக்கப்பட்டு பராமரிக்கப்படுகிறது. இந்த பயன்பாடு இப்போது DEXIS க்கு சொந்தமான பல் பட கையகப்படுத்தல் பயன்பாடாகும். ஒரு பல் அலுவலக மேலாண்மை அமைப்பும் ஒரு காலத்தில் சி. டி. எல். இல் உருவாக்கப்பட்டது. மெஃபிஸ்டோ III சதுரங்கக் கணினிக்கான மென்பொருள் சிடிஎல் 2 உடன் எழுதப்பட்டது. குறிப்புகள் மேலும் வாசிப்பு சி. டி. எல் 1/சி. டி. எல் 2 மொழியைப் பற்றிய ஒரு புத்தகம் சி. டி. எல் 3 பெடோ அர்பாட்டின் விளக்கம்ஃ புரோகிராம்கெஸிடெசி மாட்ஸெரெக்; கோஸ்காஸ்டாசாகி எஸ் ஜோகி கோனிவ்கியாடோ, 1979. பாகுபாடு ஜெனரேட்டர்கள் தொகுப்பு கட்டுமான முறையான மொழிகள் தொகுப்பு கோட்பாடு