Shift-reduce parser
ஒரு ஷிப்ட்-ரிட்யூஸ் பார்ஸர் என்பது கணினி மொழிகள் மற்றும் ஒரு இலக்கணத்தால் முறையாக வரையறுக்கப்பட்ட பிற குறியீடுகளுக்கான திறமையான, அட்டவணை-இயக்கப்படும் கீழ்-மேல் பார்ஸிங் முறைகளின் ஒரு வகுப்பாகும். நிரலாக்க மொழிகளை பகுப்பாய்வு செய்ய பொதுவாகப் பயன்படுத்தப்படும் பகுப்பாய்வு முறைகள், எல். ஆர் பகுப்பாய்வு மற்றும் அதன் மாறுபாடுகள், ஷிப்ட்-ரிட்யூஸ் முறைகள் ஆகும். எல்ஆர் பகுப்பாய்வு கண்டுபிடிப்பதற்கு முன்பு பயன்படுத்தப்பட்ட முன்னுரிமை பாகுபடுத்திகளும் ஷிப்ட்-ரிட்யூஸ் முறைகள் ஆகும். அனைத்து ஷிப்ட்-ரிட்யூஸ் பார்ஸர்களும் ஒத்த வெளிப்புற விளைவுகளைக் கொண்டுள்ளன, அவை ஒரு பார்ஸ் மரத்தை உருவாக்கும் அல்லது குறிப்பிட்ட வெளியீட்டு செயல்களை அழைக்கும் அதிகரிக்கும் வரிசையில் உள்ளன. ஒரு ஷிப்ட்-ரிட்யூஸ் பார்ஸர் உள்ளீட்டு உரையை ஸ்கேன் செய்து, உரைக்கு மேல் ஒரு ஃபார்வர்டு பாஸில், காப்புப்பிரதி எடுக்காமல் பகுப்பாய்வு செய்கிறது. பகுப்பாய்வு செய்பவர் ஊகிக்காமலோ பின்வாங்காமலோ படிப்படியாக, கீழ்நோக்கி, இடமிருந்து வலமாக பகுப்பாய்வு மரத்தை உருவாக்குகிறார். இந்த பாஸின் ஒவ்வொரு புள்ளியிலும், பார்ஸர் ஏற்கனவே பார்ஸ் செய்யப்பட்ட உள்ளீட்டு உரையின் சப்ட்ரீக்கள் அல்லது சொற்றொடர்களின் பட்டியலைக் குவித்துள்ளது. அந்த சப்ட்ரீக்கள் இன்னும் ஒன்றாக இணைக்கப்படவில்லை, ஏனெனில் பார்ஸர் இன்னும் அவற்றை இணைக்கும் தொடரியல் வடிவத்தின் வலது முனையை எட்டவில்லை. சரம் A = B + C * 2 ஐக் கவனியுங்கள். எடுத்துக்காட்டில் படி 7 இல், "A = B +" மட்டுமே பகுப்பாய்வு செய்யப்பட்டுள்ளது. பார்ஸ் மரத்தின் நிழல் கீழ்-இடது மூலையில் மட்டுமே உள்ளது. 8 மற்றும் அதற்கு மேற்பட்ட எண்களைக் கொண்ட பார்ஸ் மர முனைகள் எதுவும் இன்னும் இல்லை. குறியீடுகள் 1,2,6 மற்றும் 7 ஆகியவை அனைத்து உருப்படிகளையும் உள்ளடக்கிய தனிமைப்படுத்தப்பட்ட துணை மரங்களின் வேர்கள். முனை 1 என்பது மாறி A, முனை 2 என்பது எல்லை வரையறை =, முனை 6 என்பது கூட்டுத்தொகை B, மற்றும் முனை 7 என்பது ஆபரேட்டர் + ஆகும். இந்த நான்கு வேர் முனைகளும் தற்காலிகமாக ஒரு பார்ஸ் அடுக்கில் வைக்கப்படுகின்றன. உள்ளீட்டு ஸ்ட்ரீமின் மீதமுள்ள பாகுபடுத்தப்படாத பகுதி "சி * 2" ஆகும். ஒரு ஷிப்ட்-ரிட்யூஸ் பார்ஸர் ஷிப்ட் படிகள் மற்றும் குறைப்பு படிகளின் சில கலவையைச் செய்வதன் மூலம் செயல்படுகிறது, எனவே இந்த பெயர். உள்ளீட்டு நீரோட்டத்தில் ஒரு சின்னத்தால் ஒரு ஷிப்ட் படி முன்னேறுகிறது. அந்த மாற்றப்பட்ட சின்னம் ஒரு புதிய ஒற்றை முனை பார்ஸ் மரமாக மாறுகிறது. ஒரு குறைப்பு படி சமீபத்திய சில பார்ஸ் மரங்களுக்கு ஒரு முழுமையான இலக்கண விதியைப் பயன்படுத்துகிறது, அவற்றை ஒரு புதிய வேர் சின்னத்துடன் ஒரு மரமாக ஒன்றாக இணைக்கிறது. அனைத்து உள்ளீடுகளும் நுகரப்பட்டு, அனைத்து பார்ஸ் மரங்களும் ஒரு முழு சட்ட உள்ளீட்டைக் குறிக்கும் ஒரே மரமாக குறைக்கப்படும் வரை பார்ஸர் இந்த படிகளுடன் தொடர்கிறது. மரத்தை உருவாக்கும் படிகள் ஒவ்வொரு சொற்பொழிவு படியிலும், முழு உள்ளீட்டு உரையும் சொற்பொழிவு அடுக்கு, தற்போதைய தோற்ற சின்னம் மற்றும் மீதமுள்ள ஸ்கேன் செய்யப்படாத உரை என பிரிக்கப்பட்டுள்ளது. பாகுபடுத்தியின் அடுத்த செயல் வலதுபுற அடுக்கு சின்னம் (கள்) மற்றும் தோற்ற சின்னத்தால் தீர்மானிக்கப்படுகிறது. ஸ்டேக் மற்றும் லுக்ஹெட் சின்னங்களின் அனைத்து சொல்லியல் ரீதியாக செல்லுபடியாகும் சேர்க்கைகளையும் கொண்ட ஒரு அட்டவணையில் இருந்து செயல் படிக்கப்படுகிறது. ஒரு எளிய உதாரணத்திற்கு பார்க்கவும். இலக்கணம் என்பது உள்ளீட்டு மொழிக்கான வடிவங்கள் அல்லது தொடரியல் விதிகளின் தொகுப்பாகும். எண்களின் அளவு அல்லது முழு திட்டத்தின் சூழலில் பெயர்கள் மற்றும் அவற்றின் வரையறைகளின் நிலையான பயன்பாடு போன்ற அனைத்து மொழி விதிகளையும் இது உள்ளடக்குவதில்லை. ஷிப்ட்-ரிட்யூஸ் பார்ஸர்கள் சூழல் இல்லாத இலக்கணத்தைப் பயன்படுத்துகின்றன, இது சின்னங்களின் உள்ளூர் வடிவங்களைக் கையாள்கிறது. ஏ = பி + சி * 2 உடன் பொருந்தக்கூடிய ஜாவா அல்லது சி மொழியின் ஒரு சிறிய துணைக்குழுவாக ஒரு எடுத்துக்காட்டு இலக்கணம் பின்வருமாறு இருக்கலாம்ஃ ஒதுக்குங்கள்ஃ ஐடி = கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்தொகை கூட்டுத்த இங்கே எந்தவொரு முழு எண் மாறிலிக்கும் = + * மற்றும் int மற்றும் எந்தவொரு அடையாளங்காட்டியின் பெயருக்கும் ஐடி ஆகியவை அடங்கும். இலக்கணம் இன்ட் மதிப்புகள் அல்லது ஐடி எழுத்துப்பிழைகள் என்ன என்பதைப் பொருட்படுத்தாது, வெற்றிடங்கள் அல்லது வரி இடைவெளிகள் பற்றியும் கவலைப்படுவதில்லை. இலக்கணம் இந்த முனைய சின்னங்களைப் பயன்படுத்துகிறது, ஆனால் அவற்றை வரையறுக்கவில்லை. அவை எப்போதும் பார்ஸ் மரத்தின் கீழ் புதர் முனையில் இருக்கும். சம்ஸ் போன்ற மூலதனப்படுத்தப்பட்ட சொற்கள் முடிவற்ற சின்னங்களாகும். இவை மொழியில் உள்ள கருத்துக்கள் அல்லது வடிவங்களுக்கான பெயர்கள். அவை இலக்கணத்தில் வரையறுக்கப்பட்டுள்ளன, மேலும் அவை ஒருபோதும் உள்ளீட்டு நீரோட்டத்தில் ஏற்படாது. அவை எப்போதும் பார்ஸ் மரத்தின் அடிப்பகுதிக்கு மேலே இருக்கும். சில இலக்கண விதிகளைப் பயன்படுத்தும் பாகுபடுத்தியின் விளைவாக மட்டுமே அவை நிகழ்கின்றன. சில முனையமற்றவை இரண்டு அல்லது அதற்கு மேற்பட்ட விதிகளுடன் வரையறுக்கப்படுகின்றன; இவை மாற்று வடிவங்கள். விதிகள் தங்களைத் தாங்களே குறிப்பிடலாம். இந்த இலக்கணம் மீண்டும் மீண்டும் கணித ஆபரேட்டர்களைக் கையாள தொடர்ச்சியான விதிகளைப் பயன்படுத்துகிறது. முழுமையான மொழிகளுக்கான இலக்கணங்கள் பட்டியல்கள், அடைப்புக்குறிப்பு வெளிப்பாடுகள் மற்றும் உள்ளமைக்கப்பட்ட அறிக்கைகளைக் கையாள தொடர்ச்சியான விதிகளைப் பயன்படுத்துகின்றன. எந்தவொரு கணினி மொழியையும் பல்வேறு இலக்கணங்களால் விவரிக்க முடியும். ஒரு ஷிப்ட்-ரிட்யூஸ் பார்ஸருக்கான இலக்கணம் தெளிவற்றதாக இருக்க வேண்டும், அல்லது டை-பிரேக்கிங் முன்னுரிமை விதிகளால் அதிகரிக்கப்பட வேண்டும். இதன் பொருள் என்னவென்றால், மொழியின் கொடுக்கப்பட்ட சட்ட உதாரணத்திற்கு இலக்கணத்தைப் பயன்படுத்த ஒரே ஒரு சரியான வழி மட்டுமே உள்ளது, இதன் விளைவாக ஒரு தனித்துவமான பகுப்பாய்வு மரம் மற்றும் அந்த உதாரணத்திற்கான மாற்றம்/குறைப்பு செயல்களின் தனித்துவமான வரிசை. ஒரு அட்டவணை-இயக்கப்படும் பாகுபாடு, பாகுபாடு அட்டவணைகள் எனப்படும் மாறாத தரவுகளில் குறியிடப்பட்ட இலக்கணத்தைப் பற்றிய அதன் அனைத்து அறிவையும் கொண்டுள்ளது. பாகுபடுத்தியின் நிரல் குறியீடு ஒரு எளிய பொதுவான வளையமாகும், இது பல இலக்கணங்கள் மற்றும் மொழிகளுக்கு மாறாமல் பொருந்தும். முன்னுரிமை முறைகளுக்கு அட்டவணைகள் கையால் வடிவமைக்கப்படலாம். எல்ஆர் முறைகளைப் பொறுத்தவரை, சிக்கலான அட்டவணைகள் பைசன் போன்ற சில பாகுபடுத்தும் ஜெனரேட்டர் கருவியால் ஒரு இலக்கணத்திலிருந்து இயந்திர ரீதியாக பெறப்படுகின்றன. பாகுபடுத்தும் அட்டவணைகள் பொதுவாக இலக்கணத்தை விட மிகப் பெரியவை. அட்டவணை-இயக்கப்படாத மற்ற பாகுபடுத்திகளில், மறுசுழற்சி வம்சாவளி போன்றவை, ஒவ்வொரு மொழி கட்டமைப்பும் வேறுபட்ட சப்ரூட்டினால் பாகுபடுத்தப்படுகிறது, இது ஒரு கட்டமைப்பின் தொடரியல் சிறப்பு வாய்ந்தது. பாகுபாடு செயல்கள் ஷிப்ட்-ரிட்யூஸ் பாகுபாடு திறமையானது, ஏனெனில் இது எந்த காப்புப்பிரதியையும் உள்ளடக்குவதில்லை. அதன் மொத்த செயலாக்க நேரம் உள்ளீட்டின் நீளம் மற்றும் முழுமையான பகுப்பாய்வு மரத்தின் அளவுடன் நேர்கோட்டில் அளவிடப்படுகிறது. பின்வாங்கும் பிற பாகுபடுத்தும் முறைகள் மோசமாக யூகிக்கும்போது அதிவேக நேரத்தை எடுக்கலாம். யூகிப்பதைத் தவிர்க்க, ஷிப்ட்-ரிட்யூஸ் பார்ஸர் பெரும்பாலும் முன்பு ஸ்கேன் செய்யப்பட்ட சின்னங்களை என்ன செய்வது என்று தீர்மானிக்கும் முன் அடுத்த ஸ்கேன் செய்யப்பட்ட சின்னத்தில் (இடது-வலது உரையில் வலதுபுறம்) முன்னோக்கி பார்க்கிறது. லெக்சிகல் ஸ்கேனர் ஒரு சின்னத்தை மற்ற பாகுபடுத்திக்கு முன்னால் வேலை செய்கிறது. ஒவ்வொரு பகுப்பாய்வு முடிவுக்கும் லுக்ஹெட் சின்னம் 'வலது கை சூழல்' என்றும் அழைக்கப்படுகிறது. (அரிதாக, இரண்டு அல்லது அதற்கு மேற்பட்ட தோற்ற சின்னங்கள் பயன்படுத்தப்படலாம், இருப்பினும் பெரும்பாலான நடைமுறை இலக்கணங்கள் ஒரு தோற்ற சின்னத்தைப் பயன்படுத்த வடிவமைக்கப்படலாம்.) ஒரு ஷிப்ட்-ரிட்யூஸ் பார்ஸர் ஒருங்கிணைந்த கட்டமைப்பை உறுதிப்படுத்துவதற்கு முன்பு சில கட்டமைப்பின் அனைத்து பகுதிகளையும் ஸ்கேன் செய்து பகுப்பாய்வு செய்யும் வரை காத்திருக்கிறது. பாகுபடுத்துபவர் மேலும் காத்திருப்பதற்குப் பதிலாக கலவையில் உடனடியாக செயல்படுகிறார். மேலே உள்ள பார்ஸ் ட்ரீ எடுத்துக்காட்டில், பார்ஸ் ட்ரீயின் அந்த பகுதிகளை ஒழுங்கமைக்க இனி காத்திருப்பதை விட, பார்ஸ் ட்ரீயில் + காணப்பட்டவுடன், B என்ற சொற்றொடர் மதிப்புக்கும் பின்னர் 3 முதல் 6 படிகளில் தயாரிப்புகள் மற்றும் கூட்டுத்தொகைக்கும் குறைக்கப்படுகிறது. B ஐ எவ்வாறு கையாள்வது என்பது பார்ஸர் மற்றும் ஸ்கேனர் ஏற்கனவே பார்த்ததை மட்டுமே அடிப்படையாகக் கொண்டது, வலதுபுறத்தில் மிகவும் பின்னர் தோன்றும் விஷயங்களைக் கருத்தில் கொள்ளாமல். குறைப்புகள் மிக சமீபத்தில் பகுப்பாய்வு செய்யப்பட்ட விஷயங்களை மறுசீரமைக்கின்றன, அதாவது, தோற்ற சின்னத்தின் இடதுபுறத்தில் உடனடியாக உள்ளன. எனவே ஏற்கனவே பகுப்பாய்வு செய்யப்பட்ட விஷயங்களின் பட்டியல் ஒரு அடுக்கைப் போல செயல்படுகிறது. இந்த பார்ஸ் அடுக்கு வலதுபுறம் வளரும். அடுக்கின் அடிப்பகுதி அல்லது அடிப்பகுதி இடதுபுறத்தில் உள்ளது மற்றும் இடதுபுறத்தில், பழமையான சொற்றொடர் துண்டு வைத்திருக்கிறது. ஒவ்வொரு குறைப்பு படியும் வலதுபுறத்தில் உள்ள, புதிய பகுப்பாய்வு துண்டுகளில் மட்டுமே செயல்படுகிறது. (இந்த திரட்டப்பட்ட பார்ஸ் அடுக்கு மேல்-கீழ் பாகுபடுத்திகளால் பயன்படுத்தப்படும் முன்கணிப்பு, இடதுபுறம் வளரும் பார்ஸ் அடுக்கைப் போலல்லாமல் மிகவும் வேறுபட்டது.) தயாரிப்புகள் * தயாரிப்புகள் * மதிப்பு போன்ற இலக்கண விதி பயன்படுத்தப்படும்போது, ஸ்டேக் டாப் பார்ஸ் மரங்களை வைத்திருக்கிறது. "தயாரிப்புகள் * மதிப்பு". விதியின் வலது புறத்தின் இந்த உதாரணம் கைப்பிடி என்று அழைக்கப்படுகிறது. குறைப்பு படி "தயாரிப்புகள் * மதிப்பு" என்ற கைப்பிடியை இடது புறம் அல்லாத முனையத்தால் மாற்றுகிறது, இந்த விஷயத்தில் ஒரு பெரிய தயாரிப்புகள். பாகுபடுத்துபவர் முழுமையான பகுப்பாய்வு மரங்களை உருவாக்கினால், உள் தயாரிப்புகளுக்கான மூன்று மரங்கள், *, மற்றும் மதிப்பு ஆகியவை பெரிய தயாரிப்புகளுக்கான புதிய மர வேர் மூலம் இணைக்கப்படுகின்றன. இல்லையெனில், உள் தயாரிப்புகள் மற்றும் மதிப்பிலிருந்து சொற்பொருள் விவரங்கள் சில பிற்கால தொகுப்பு பாஸுக்கு வெளியீடாக இருக்கும், அல்லது புதிய தயாரிப்புகள் சின்னத்தில் இணைக்கப்பட்டு சேமிக்கப்படும். புதிதாக முடிக்கப்பட்ட இலக்கண விதிகளின் எடுத்துக்காட்டுகளைக் கண்டுபிடிக்கும் வரை பாகுபாடு அடுக்கின் மேற்புறத்தில் குறைப்புகளைப் பயன்படுத்துகிறது. இனி எந்த விதிகளும் பயன்படுத்த முடியாதபோது, பாகுபடுத்துபவர் பார்ஸ் அடுக்கில் லுக்ஹெட் சின்னத்தை மாற்றி, ஒரு புதிய லுக்ஹெட் சின்னத்தை ஸ்கேன் செய்து மீண்டும் முயற்சிக்கிறார். ஷிப்ட்-ரிட்யூஸ் பார்ஸர்களின் வகைகள் பார்ஸர் அட்டவணைகள் மேலே உள்ள பார்ஸ் ஸ்டாக் சின்னங்கள் மற்றும் லுக்ஹெட் சின்னங்களின் ஒவ்வொரு சட்டப்பூர்வ கலவையிலும் அடுத்து என்ன செய்ய வேண்டும் என்பதைக் காட்டுகின்றன. அந்த அடுத்த நடவடிக்கை தனித்துவமானதாக இருக்க வேண்டும்; ஒன்று மாற்றம், அல்லது குறைத்தல், ஆனால் இரண்டும் அல்ல. (இது இலக்கணத்தில் இன்னும் சில வரம்புகளைக் குறிக்கிறது, சந்தேகத்திற்கு இடமின்றி.) பல்வேறு வகையான ஷிப்ட்-ரிட்யூஸ் பார்ஸர்களுக்கு இடையில் அட்டவணை விவரங்கள் பெரிதும் வேறுபடுகின்றன. முன்னுரிமை பாகுபடுத்திகளில், கைப்பிடிகளின் வலது முனை மேல் அடுக்கு சின்னங்களின் முன்னுரிமை நிலை அல்லது இலக்கண இறுக்கத்தை தோற்ற சின்னத்துடன் ஒப்பிடுவதன் மூலம் கண்டறியப்படுகிறது. மேலே உள்ள எடுத்துக்காட்டில், இன்ட் மற்றும் ஐடி ஆகியவை ஸ்டேட்மென்ட் டிலிமிட்டருடன் ஒப்பிடும்போது உள் இலக்கண நிலைகளைச் சேர்ந்தவை. எனவே இன்ட் மற்றும் ஐடி இரண்டும் அதை விட உயர்ந்த முன்னுரிமையாகக் கருதப்படுகின்றன; அதைத் தொடர்ந்து வரும்போதெல்லாம் வேறு எதற்காவது குறைக்கப்பட வேண்டும். முன்னுரிமை பாகுபடுத்திகளில் பல்வேறு வகைகள் உள்ளன, ஒவ்வொன்றும் கைப்பிடியின் இடது முனையைக் கண்டறிந்து பயன்படுத்த சரியான விதியைத் தேர்ந்தெடுப்பதற்கான வெவ்வேறு வழிகளைக் கொண்டுள்ளனஃ ஆபரேட்டர்-முன்னுரிமை பாகுபடுத்தல், வெளிப்பாடுகளுக்கு வேலை செய்யும் மிகவும் எளிய எண் முறை, ஆனால் பொதுவான நிரல் தொடரியல் அல்ல. எளிய முன்னுரிமை பாகுபாடு, வலது மற்றும் இடது முனைகளைக் கண்டறிய ஒரு பெரிய MxN அட்டவணையைப் பயன்படுத்துகிறது. பிஎல்360 இல் பயன்படுத்தப்படுகிறது. பொதுவான நிரலாக்க மொழிகளைக் கையாளாது. பலவீனமான முன்னுரிமை பாகுபாடு, கைப்பிடிகளின் வலது முனைகளைக் கண்டறிய மட்டுமே முன்னுரிமை அட்டவணையைப் பயன்படுத்துகிறது. எளிய முன்னுரிமையை விட அதிக இலக்கணங்களைக் கையாளுகிறது. நீட்டிக்கப்பட்ட முன்னுரிமை பாகுபாடு. கலப்பு மூலோபாயம் முன்னுரிமை பாகுபாடு, XPL இன் அசல் பதிப்பால் பயன்படுத்தப்படுகிறது. எந்தவொரு முன்னுரிமை அங்கீகாரத்திலும் உள்ளார்ந்த "இரட்டையர்" ஐ விரிவுபடுத்துகிறது, இதில் "மூன்று மடங்கு" அடங்கும். எஸ். எல். ஆரை விட குறைவான சக்தி வாய்ந்தது. முன்னுரிமை முறைகளால் விதிக்கப்பட்ட வரம்புகளுக்கு வெளியே இலக்கணங்களை அடையாளம் காண வேண்டிய பல "மூன்று" காரணங்களால் பொதுவாக எக்ஸ்பிஎல் போன்ற ஒப்பீட்டளவில் சிறிய மொழிகளுக்கு கூட மிகப் பெரிய அட்டவணைகள் உள்ளன. முன்னுரிமை பாகுபடுத்திகள் அவை கையாளக்கூடிய இலக்கணங்களில் வரையறுக்கப்பட்டுள்ளன. முடிவுகளை எடுக்கும்போது பெரும்பாலான பார்ஸ் அடுக்குகளை அவர்கள் புறக்கணிக்கிறார்கள். அவர்கள் மிக உயர்ந்த சின்னங்களின் பெயர்களை மட்டுமே கருத்தில் கொள்கிறார்கள், இலக்கணத்தில் அந்த சின்னங்கள் இப்போது எங்கு தோன்றுகின்றன என்பதற்கான முழு சூழலையும் அல்ல. முன்னுரிமைக்கு ஒத்த தோற்றமுடைய குறியீட்டு சேர்க்கைகள் பகுப்பாய்வு செய்யப்பட வேண்டும் மற்றும் இலக்கணம் முழுவதும் ஒரே மாதிரியான வழிகளில் பயன்படுத்தப்பட வேண்டும், இருப்பினும் அந்த சேர்க்கைகள் சூழலைப் பொருட்படுத்தாமல் நிகழ்கின்றன. எல்ஆர் பாகங்கள் என்பது ஷிப்ட்-ரிட்யூஸ் பாகுபடுத்தலின் மிகவும் நெகிழ்வான வடிவமாகும், மேலும் பல இலக்கணங்களைக் கையாளுகின்றன. எல்ஆர் பார்சர் செயலாக்க எல்ஆர் பார்சர்கள் ஒரு மாநில இயந்திரத்தைப் போல செயல்படுகின்றன, ஒவ்வொரு ஷிப்டுக்கும் ஒரு நிலை மாற்றத்தை செய்கின்றன அல்லது செயலைக் குறைக்கின்றன. இவை ஒரு அடுக்கைப் பயன்படுத்துகின்றன, அங்கு தற்போதைய நிலை ஷிப்ட் செயல்களால் (கீழே) தள்ளப்படுகிறது. இந்த அடுக்கு பின்னர் செயல்களைக் குறைப்பதன் மூலம் பாப் (அப்) செய்யப்படுகிறது. இந்த வழிமுறை எல்ஆர் பாகுபடுத்தியை அனைத்து தீர்மானகரமான சூழல் இல்லாத இலக்கணங்களையும் கையாள அனுமதிக்கிறது, இது முன்னுரிமை இலக்கணங்களின் மேற்பரப்பு ஆகும். LR பாகுபாடு முழுமையாக கனோனிக்கல் LR பாகுபாடு மூலம் செயல்படுத்தப்படுகிறது. லுக்-ஹெட் எல்ஆர் மற்றும் சிம்பிள் எல்ஆர் பார்ஸர்கள் அதன் எளிமைப்படுத்தப்பட்ட வகைகளை செயல்படுத்துகின்றன, அவை நினைவகத் தேவைகளை கணிசமாகக் குறைத்துள்ளன. க்னுத்தின் டேபிள்-பில்டிங் அல்காரிதம் மீது வியத்தகு முறையில் குறைக்கப்பட்ட அட்டவணை தேவைகளுடன் நியதி எல். ஆர் பாகுபடுத்திகளை செயல்படுத்தக்கூடிய முறைகளை சமீபத்திய ஆராய்ச்சி அடையாளம் கண்டுள்ளது. எல்ஆர், எல்ஏஎல்ஆர் அல்லது எஸ்எல்ஆர் ஆக இருந்தாலும், அடிப்படை நிலை இயந்திரம் ஒன்றுதான்; அட்டவணைகள் மட்டுமே வேறுபட்டவை, மேலும் இந்த அட்டவணைகள் கிட்டத்தட்ட எப்போதும் இயந்திர ரீதியாக உருவாக்கப்படுகின்றன. கூடுதலாக, இந்த அட்டவணைகள் வழக்கமாக செயல்படுத்தப்படுகின்றன, இதனால் ஒரு குறைப்பு ஒரு மூடிய சப்ரூட்டினுக்கு ஒரு அழைப்பை விளைவிக்கிறது, இது மாநில இயந்திரத்திற்கு வெளிப்புறமாக உள்ளது மற்றும் இது ஒரு செயல்பாட்டைச் செய்கிறது, இது இலக்கண விதியின் சொற்பொருள்களால் குறிக்கப்படுகிறது, இது REDUCEd ஆகும். எனவே, பாகுபாடு ஒரு மாறாத நிலை இயந்திர பகுதியாகவும், ஒரு மாறுபட்ட சொற்பொருள் பகுதியாகவும் பிரிக்கப்படுகிறது. இந்த அடிப்படை வேறுபாடு விதிவிலக்காக நம்பகமான உயர்தர பாகுபடுத்திகளின் வளர்ச்சியை ஊக்குவிக்கிறது. ஒரு குறிப்பிட்ட அடுக்கு நிலை மற்றும் தோற்ற சின்னத்தைப் பொறுத்தவரை, துல்லியமாக நான்கு சாத்தியமான செயல்கள் உள்ளன, பிழைகள், மாற்றுதல், குறைத்தல் மற்றும் நிறுத்து (இனிமேல் உள்ளமைவுகள் என்று குறிப்பிடப்படுகிறது). ஒரு உள்ளமைவில் ஒரு புள்ளி இருப்பது தற்போதைய தோற்ற நிலைப்பாட்டைக் குறிக்கிறது, புள்ளியின் வலதுபுறத்தில் தோற்ற சின்னம் காட்டப்பட்டுள்ளது (இது எப்போதும் ஒரு முனைய சின்னத்துடன் ஒத்திருக்கிறது), மற்றும் புள்ளியின் இடதுபுறத்தில் தற்போதைய அடுக்கு நிலை (இது பொதுவாக ஒரு முனையமற்ற சின்னத்துடன் ஒத்திருக்கிறது). அதிக செயல்திறன் உட்பட நடைமுறை காரணங்களுக்காக, அட்டவணைகள் பொதுவாக ஓரளவு பெரிய, இரண்டு-பிட் சின்னங்களின் துணை வரிசையால் நீட்டிக்கப்படுகின்றன, வெளிப்படையாக நான்கு இரண்டு-பிட் சின்னங்களாக சுருக்கப்படுகின்றன, ஒரு பைட், பைட் சார்ந்த இயந்திரங்களில் திறம்பட அணுகுவதற்காக, பெரும்பாலும் குறியிடப்படுகிறதுஃ 00b என்பது பிழையைக் குறிக்கிறது 01b என்பது ஷிஃப்ட் 10b ஐக் குறிக்கிறது REDUCE 11b என்பது STOP ஐக் குறிக்கிறது (STOP என்பது ஷிஃப்ட்டின் ஒரு சிறப்பு வழக்கு). முழு வரிசையும் பொதுவாக பெரும்பாலும் பிழை உள்ளமைவுகள், இலக்கணத்தால் வரையறுக்கப்பட்ட எண்ணிக்கையிலான ஷிஃப்ட் மற்றும் ரெடுஸ் உள்ளமைவுகள் மற்றும் ஒரு ஸ்டாப் உள்ளமைவு ஆகியவற்றை உள்ளடக்கியது. எக்ஸ்பிஎல் போன்ற குவாட்டர்னரி எண் அமைப்பில் (அடிப்படை 4, குவாட்டர்னரி இலக்கத்திற்கு இரண்டு பிட்கள்) மதிப்புகளின் விவரக்குறிப்பை ஆதரிக்கும் நிரலாக்க அமைப்புகளில், இவை குறியிடப்படுகின்றன, எடுத்துக்காட்டாகஃ "(2). 0" என்பது பிழையைக் குறிக்கிறது "(2). 1" என்பது மாற்றத்தைக் குறிக்கிறது "(2). 2" என்பது குறைப்பைக் குறிக்கிறது "(2). 3" என்பது நிறுத்தத்தைக் குறிக்கிறது மற்றும் குறைப்பு அட்டவணைகள் வரிசையிலிருந்து தனித்தனியாக செயல்படுத்தப்படுகின்றன. துணை வரிசை தற்போதைய நிலை மற்றும் தோற்ற சின்னத்திற்கு மட்டுமே "ஆராயப்படுகிறது". (துணை) வரிசை "முழு", அதேசமயம் (ஷிப்ட் மற்றும் குறை) அட்டவணைகள் உண்மையில் மிகவும் "குறைவாக" இருக்கலாம், மேலும் அந்த ஷிப்ட் மற்றும் ரெடுஸ் அட்டவணைகளின் உகந்த "சிதைவு" மூலம் குறிப்பிடத்தக்க செயல்திறனை அடைய முடியும் (பிழை மற்றும் நிறுத்த அட்டவணைகள் தேவையில்லை). ஒரு ஷிப்ட்-ரெடுஸ் பார்ஸரின் அடிப்படை வரையறையிலிருந்து, ஷிப்ட் மற்றும் ரெடுஸ் உள்ளமைவுகள் வெளிப்படையானவை. STOP, பின்னர், அடுக்கின் மேற்புறத்தில் உள்ள நிலை மற்றும் தோற்ற முனைய சின்னம் பொருள் இலக்கணத்திற்குள் இருக்கும் ஒரு உள்ளமைவைக் குறிக்கிறது, மேலும் நிரலின் முடிவைக் குறிக்கிறதுஃ δ <நிரல்> δ இறுதி δ க்கு அப்பால் மாற்றுவது சாத்தியமற்றது, கருத்தியல் ரீதியாக δ <நிரல்> δ> பிழை, பின்னர், அடுக்கின் மேற்புறத்தில் உள்ள நிலை மற்றும் தோற்ற முனைய சின்னம் பொருள் இலக்கணத்திற்குள் இல்லாத ஒரு உள்ளமைவைக் குறிக்கிறது. இது ஒரு பிழை மீட்பு செயல்முறையை அழைக்க ஒரு வாய்ப்பை வழங்குகிறது, ஒருவேளை, அதன் மிக எளிமையான வடிவத்தில், தோற்ற முனைய சின்னத்தை நிராகரிக்கவும், அடுத்த முனைய சின்னத்தைப் படிக்கவும், ஆனால் அடுக்கை சீரமைத்தல், அல்லது தோற்ற முனைய சின்னத்தை நிராகரிப்பது மற்றும் அடுக்கை சீரமைத்தல் உள்ளிட்ட பல திட்டமிடப்பட்ட செயல்கள் சாத்தியமாகும் (மேலும் ஒரு நோயியல் விஷயத்தில், பொதுவாக <நிரல்> இல் ஒரு "பூஜ்ய அறிக்கை" மட்டுமே உள்ளது). பெரும்பாலான சந்தர்ப்பங்களில், அடுக்கு வேண்டுமென்றே முன்கூட்டியே ஏற்றப்படுகிறது, அதாவது, துவக்கம் செய்யப்படுகிறது, இதன் மூலம் ஆரம்ப டிடி ஏற்கனவே அங்கீகரிக்கப்பட்டதாகக் கருதப்படுகிறது. இது, பின்னர், நிரலின் தொடக்கத்தைக் குறிக்கிறது, இதன் மூலம், ஒரு தனி START உள்ளமைவைக் கொண்டிருப்பதைத் தவிர்க்கிறது, இது கருத்தியல் ரீதியாக ஒரு சிறப்பு போலி-முனைய சின்னமாகும், இது இலக்கணத்தில் இயந்திரத்தனமாக சேர்க்கப்பட்டுள்ளது, அதே போல் <நிரல்> என்பது ஒரு சிறப்பு போலி-முனைய சின்னமாகும், இது இலக்கணத்தில் இயந்திரத்தனமாக சேர்க்கப்பட்டுள்ளது (புரோகிராமர் இலக்கணத்தில் வெளிப்படையாக <நிரலை> சேர்க்கவில்லை என்றால், பின்னர் <நிரல்> தானாகவே புரோகிராமர் சார்பாக இலக்கணத்தில் சேர்க்கப்படும்). தெளிவாக, அத்தகைய பாகுபாடு துல்லியமாக ஒரு (மறைமுகமான) START உள்ளமைவு மற்றும் ஒரு (வெளிப்படையான) STOP உள்ளமைவைக் கொண்டுள்ளது, ஆனால் இது நூற்றுக்கணக்கான ஷிப்ட் மற்றும் ரெடுஸ் உள்ளமைவுகளையும், ஆயிரக்கணக்கான பிழை உள்ளமைவுகளையும் கொண்டிருக்கலாம். குறிப்புகள் பாகுபடுத்தும் வழிமுறைகள்