Shift-reduce parser
ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ ಎಂಬುದು ಕಂಪ್ಯೂಟರ್ ಭಾಷೆಗಳು ಮತ್ತು ವ್ಯಾಕರಣದಿಂದ ಔಪಚಾರಿಕವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಇತರ ಸಂಕೇತಗಳಿಗೆ ಸಮರ್ಥವಾದ, ಟೇಬಲ್-ಚಾಲಿತ ಬಾಟಮ್-ಅಪ್ ಪಾರ್ಸಿಂಗ್ ವಿಧಾನಗಳ ಒಂದು ವರ್ಗವಾಗಿದೆ. ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಪಾರ್ಸಿಂಗ್ ವಿಧಾನಗಳು, ಎಲ್ಆರ್ ಪಾರ್ಸಿಂಗ್ ಮತ್ತು ಅದರ ವ್ಯತ್ಯಾಸಗಳು ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ವಿಧಾನಗಳಾಗಿವೆ. ಎಲ್ಆರ್ ಪಾರ್ಸಿಂಗ್ನ ಆವಿಷ್ಕಾರಕ್ಕೆ ಮೊದಲು ಬಳಸಲಾದ ಆದ್ಯತೆಯ ಪಾರ್ಸರ್ಗಳು ಸಹ ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ವಿಧಾನಗಳಾಗಿವೆ. ಎಲ್ಲಾ ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ಗಳು ಒಂದೇ ರೀತಿಯ ಬಾಹ್ಯ ಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿವೆ, ಹೆಚ್ಚುತ್ತಿರುವ ಕ್ರಮದಲ್ಲಿ ಅವು ಪಾರ್ಸ್ ಟ್ರೀ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತವೆ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಔಟ್ಪುಟ್ ಕ್ರಿಯೆಗಳನ್ನು ಕರೆಯುತ್ತವೆ. ಒಂದು ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ ಇನ್ಪುಟ್ ಪಠ್ಯವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಬ್ಯಾಕಪ್ ಮಾಡದೆಯೇ ಪಠ್ಯದ ಮೇಲೆ ಒಂದು ಫಾರ್ವರ್ಡ್ ಪಾಸ್ನಲ್ಲಿ ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ. ಪಾರ್ಸರ್ ಪಾರ್ಸ್ ಮರವನ್ನು ಊಹೆ ಮಾಡದೆಯೇ ಅಥವಾ ಹಿಂತೆಗೆದುಕೊಳ್ಳದೆಯೇ, ಕೆಳಗಿನಿಂದ ಮೇಲಕ್ಕೆ ಮತ್ತು ಎಡದಿಂದ ಬಲಕ್ಕೆ ಹೆಚ್ಚಿಸುತ್ತದೆ. ಈ ಪಾಸ್ನ ಪ್ರತಿಯೊಂದು ಹಂತದಲ್ಲೂ, ಪಾರ್ಸರ್ ಈಗಾಗಲೇ ಪಾರ್ಸ್ ಮಾಡಲಾದ ಇನ್ಪುಟ್ ಪಠ್ಯದ ಸಬ್ಟ್ರೀಗಳು ಅಥವಾ ಪದಗುಚ್ಛಗಳ ಪಟ್ಟಿಯನ್ನು ಸಂಗ್ರಹಿಸಿದೆ. ಪಾರ್ಸರ್ ಇನ್ನೂ ಅವುಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಸಿಂಟ್ಯಾಕ್ಸ್ ಮಾದರಿಯ ಬಲ ತುದಿಯನ್ನು ತಲುಪದ ಕಾರಣ ಆ ಸಬ್ಟ್ರೀಗಳನ್ನು ಇನ್ನೂ ಒಟ್ಟಿಗೆ ಸೇರಿಸಲಾಗಿಲ್ಲ. ಸ್ಟ್ರಿಂಗ್ A = B + C * 2 ಅನ್ನು ಪರಿಗಣಿಸಿ. ಉದಾಹರಣೆಯ 7ನೇ ಹಂತದಲ್ಲಿ, "A = B +" ಅನ್ನು ಮಾತ್ರ ಪಾರ್ಸ್ ಮಾಡಲಾಗಿದೆ. ಪಾರ್ಸ್ ಮರದ ನೆರಳಿನ ಕೆಳ-ಎಡ ಮೂಲೆ ಮಾತ್ರ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. 8 ಮತ್ತು ಅದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಪಾರ್ಸ್ ಟ್ರೀ ನೋಡ್ಗಳು ಇನ್ನೂ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ. 1, 2, 6, ಮತ್ತು 7 ಸಂಖ್ಯೆಗಳು ಎಲ್ಲಾ ಐಟಂಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಪ್ರತ್ಯೇಕ ಉಪವೃಕ್ಷಗಳ ಮೂಲಗಳಾಗಿವೆ. ನೋಡ್ 1 ವೇರಿಯೇಬಲ್ ಎ, ನೋಡ್ 2 ಡಿಲಿಮಿಟರ್ =, ನೋಡ್ 6 ಸಾರಾಂಶ ಬಿ, ಮತ್ತು ನೋಡ್ 7 ಆಪರೇಟರ್ + ಆಗಿದೆ. ಈ ನಾಲ್ಕು ರೂಟ್ ನೋಡ್ಗಳನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ಪಾರ್ಸ್ ಸ್ಟಾಕ್ನಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ. ಇನ್ಪುಟ್ ಸ್ಟ್ರೀಮ್ನ ಉಳಿದ ಪಾರ್ಸ್ ಮಾಡದ ಭಾಗವು "ಸಿ * 2" ಆಗಿದೆ. ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ ಕೆಲವು ಶಿಫ್ಟ್ ಹಂತಗಳು ಮತ್ತು ರಿಡ್ಯೂಸ್ ಹಂತಗಳ ಸಂಯೋಜನೆಯನ್ನು ಮಾಡುವ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಈ ಹೆಸರು ಬಂದಿದೆ. ಇನ್ಪುಟ್ ಸ್ಟ್ರೀಮ್ನಲ್ಲಿ ಶಿಫ್ಟ್ ಹಂತವು ಒಂದು ಚಿಹ್ನೆಯಿಂದ ಮುಂದುವರಿಯುತ್ತದೆ. ಆ ಸ್ಥಳಾಂತರಗೊಂಡ ಚಿಹ್ನೆಯು ಹೊಸ ಏಕ-ನೋಡ್ ಪಾರ್ಸ್ ಮರವಾಗುತ್ತದೆ. ಎ ರಿಡ್ಯೂಸ್ ಹಂತವು ಇತ್ತೀಚಿನ ಕೆಲವು ಪಾರ್ಸ್ ಮರಗಳಿಗೆ ಪೂರ್ಣಗೊಂಡ ವ್ಯಾಕರಣ ನಿಯಮವನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ, ಅವುಗಳನ್ನು ಹೊಸ ಬೇರಿನ ಚಿಹ್ನೆಯೊಂದಿಗೆ ಒಂದೇ ಮರವಾಗಿ ಜೋಡಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಇನ್ಪುಟ್ ಅನ್ನು ಸೇವಿಸುವವರೆಗೆ ಪಾರ್ಸರ್ ಈ ಹಂತಗಳೊಂದಿಗೆ ಮುಂದುವರಿಯುತ್ತದೆ ಮತ್ತು ಎಲ್ಲಾ ಪಾರ್ಸ್ ಮರಗಳನ್ನು ಸಂಪೂರ್ಣ ಕಾನೂನು ಇನ್ಪುಟ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಒಂದೇ ಮರಕ್ಕೆ ಇಳಿಸಲಾಗುತ್ತದೆ. ಟ್ರೀ ಬಿಲ್ಡಿಂಗ್ ಹಂತಗಳು ಪ್ರತಿ ಪಾರ್ಸ್ ಹಂತದಲ್ಲೂ, ಸಂಪೂರ್ಣ ಇನ್ಪುಟ್ ಪಠ್ಯವನ್ನು ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್, ಪ್ರಸ್ತುತ ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆ ಮತ್ತು ಉಳಿದ ಸ್ಕ್ಯಾನ್ ಮಾಡದ ಪಠ್ಯ ಎಂದು ವಿಂಗಡಿಸಲಾಗಿದೆ. ಪಾರ್ಸರ್ನ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಬಲಭಾಗದ ಸ್ಟ್ಯಾಕ್ ಚಿಹ್ನೆ (ಗಳು) ಮತ್ತು ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯಿಂದ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ. ಸ್ಟ್ಯಾಕ್ ಮತ್ತು ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಗಳ ಎಲ್ಲಾ ವಾಕ್ಯರಚನೆಯ ಮಾನ್ಯ ಸಂಯೋಜನೆಗಳನ್ನು ಹೊಂದಿರುವ ಟೇಬಲ್ನಿಂದ ಕ್ರಿಯೆಯನ್ನು ಓದಲಾಗುತ್ತದೆ. ಒಂದು ಸರಳ ಉದಾಹರಣೆಗಾಗಿ ನೋಡಿ. ವ್ಯಾಕರಣವು ಇನ್ಪುಟ್ ಭಾಷೆಯ ಮಾದರಿಗಳು ಅಥವಾ ವಾಕ್ಯರಚನೆಯ ನಿಯಮಗಳ ಗುಂಪಾಗಿದೆ. ಇದು ಸಂಖ್ಯೆಗಳ ಗಾತ್ರ, ಅಥವಾ ಇಡೀ ಕಾರ್ಯಕ್ರಮದ ಸಂದರ್ಭದಲ್ಲಿ ಹೆಸರುಗಳ ಸ್ಥಿರವಾದ ಬಳಕೆ ಮತ್ತು ಅವುಗಳ ವ್ಯಾಖ್ಯಾನಗಳಂತಹ ಎಲ್ಲಾ ಭಾಷಾ ನಿಯಮಗಳನ್ನು ಒಳಗೊಂಡಿರುವುದಿಲ್ಲ. ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ಗಳು ಕೇವಲ ಚಿಹ್ನೆಗಳ ಸ್ಥಳೀಯ ಮಾದರಿಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವ ಸಂದರ್ಭ-ಮುಕ್ತ ವ್ಯಾಕರಣವನ್ನು ಬಳಸುತ್ತವೆ. ಎ = ಬಿ + ಸಿ * 2 ಅನ್ನು ಹೊಂದಿಸುವ ಸಾಮರ್ಥ್ಯವಿರುವ ಜಾವಾ ಅಥವಾ ಸಿ ಭಾಷೆಯ ಸಣ್ಣ ಉಪವಿಭಾಗವಾಗಿ ಒಂದು ಉದಾಹರಣೆ ವ್ಯಾಕರಣವು ಹೀಗಿರಬಹುದುಃ ಅಸೈನ್ ಐಡಿ = ಸಮ್ಸ್ ಸಮ್ಸ್ | ಸಮ್ಸ್ + ಪ್ರಾಡಕ್ಟ್ಸ್ ಸಮ್ಸ್ | ಪ್ರಾಡಕ್ಟ್ಸ್ | ಪ್ರಾಡಕ್ಟ್ಸ್ | ವ್ಯಾಲ್ಯೂ ಪ್ರಾಡಕ್ಟ್ಸ್ | ವ್ಯಾಲ್ಯೂ ವ್ಯಾಲ್ಯೂ | ಇನ್ಟ್ ವ್ಯಾಲ್ಯೂ | ಐಡಿ ವ್ಯಾಕರಣದ ಅಂತಿಮ ಚಿಹ್ನೆಗಳು ಲೆಕ್ಸಿಕಲ್ ಸ್ಕ್ಯಾನರ್ನಿಂದ ಇನ್ಪುಟ್ ಸ್ಟ್ರೀಮ್ನಲ್ಲಿ ಕಂಡುಬರುವ ಬಹು-ಅಕ್ಷರ ಚಿಹ್ನೆಗಳು ಅಥವಾ 'ಟೋಕನ್ಗಳು' ಆಗಿವೆ. ಇಲ್ಲಿ ಇವುಗಳು ಯಾವುದೇ ಪೂರ್ಣಾಂಕ ಸ್ಥಿರಾಂಕಕ್ಕೆ = + * ಮತ್ತು ಪೂರ್ಣಾಂಕವನ್ನು ಮತ್ತು ಯಾವುದೇ ಗುರುತಿನ ಹೆಸರಿಗೆ ಐಡಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ. ವ್ಯಾಕರಣವು ಇಂಟ್ ಮೌಲ್ಯಗಳು ಅಥವಾ ಐಡಿ ಕಾಗುಣಿತಗಳು ಯಾವುವು ಎಂಬುದರ ಬಗ್ಗೆ ಕಾಳಜಿ ವಹಿಸುವುದಿಲ್ಲ, ಅಥವಾ ಖಾಲಿ ಅಥವಾ ಲೈನ್ ಬ್ರೇಕ್ಗಳ ಬಗ್ಗೆಯೂ ಕಾಳಜಿ ವಹಿಸುವುದಿಲ್ಲ. ವ್ಯಾಕರಣವು ಈ ಅಂತಿಮ ಚಿಹ್ನೆಗಳನ್ನು ಬಳಸುತ್ತದೆ ಆದರೆ ಅವುಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದಿಲ್ಲ. ಅವು ಯಾವಾಗಲೂ ಪಾರ್ಸ್ ಮರದ ಕೆಳಭಾಗದ ಪೊದೆಸಸ್ಯದ ತುದಿಯಲ್ಲಿರುತ್ತವೆ. ಸಮ್ಗಳಂತಹ ದೊಡ್ಡಕ್ಷರದ ಪದಗಳು ಶಾಶ್ವತವಲ್ಲದ ಚಿಹ್ನೆಗಳಾಗಿವೆ. ಇವು ಭಾಷೆಯಲ್ಲಿನ ಪರಿಕಲ್ಪನೆಗಳು ಅಥವಾ ಮಾದರಿಗಳ ಹೆಸರುಗಳಾಗಿವೆ. ಅವುಗಳನ್ನು ವ್ಯಾಕರಣದಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ ಮತ್ತು ಇನ್ಪುಟ್ ಸ್ಟ್ರೀಮ್ನಲ್ಲಿ ಎಂದಿಗೂ ಸಂಭವಿಸುವುದಿಲ್ಲ. ಅವು ಯಾವಾಗಲೂ ಪಾರ್ಸ್ ಮರದ ಕೆಳಭಾಗದಲ್ಲಿರುತ್ತವೆ. ಪಾರ್ಸರ್ ಕೆಲವು ವ್ಯಾಕರಣ ನಿಯಮವನ್ನು ಅನ್ವಯಿಸಿದ ಪರಿಣಾಮವಾಗಿ ಮಾತ್ರ ಅವು ಸಂಭವಿಸುತ್ತವೆ. ಕೆಲವು ನಾನ್-ಟರ್ಮಿನಲ್ಗಳನ್ನು ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ನಿಯಮಗಳೊಂದಿಗೆ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ; ಇವು ಪರ್ಯಾಯ ಮಾದರಿಗಳಾಗಿವೆ. ನಿಯಮಗಳು ತಮ್ಮನ್ನು ತಾವು ಉಲ್ಲೇಖಿಸಿಕೊಳ್ಳಬಹುದು. ಈ ವ್ಯಾಕರಣವು ಪುನರಾವರ್ತಿತ ಗಣಿತ ನಿರ್ವಾಹಕರನ್ನು ನಿರ್ವಹಿಸಲು ಪುನರಾವರ್ತಿತ ನಿಯಮಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಸಂಪೂರ್ಣ ಭಾಷೆಗಳಿಗೆ ವ್ಯಾಕರಣಗಳು ಪಟ್ಟಿಗಳು, ಆವರಣದ ಅಭಿವ್ಯಕ್ತಿಗಳು ಮತ್ತು ಸಮೂಹ ಹೇಳಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಪುನರಾವರ್ತಿತ ನಿಯಮಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಯಾವುದೇ ಕಂಪ್ಯೂಟರ್ ಭಾಷೆಯನ್ನು ಹಲವಾರು ವಿಭಿನ್ನ ವ್ಯಾಕರಣಗಳಿಂದ ವಿವರಿಸಬಹುದು. ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ನ ವ್ಯಾಕರಣವು ಸ್ವತಃ ನಿಸ್ಸಂದಿಗ್ಧವಾಗಿರಬೇಕು, ಅಥವಾ ಟೈ-ಬ್ರೇಕಿಂಗ್ ಆದ್ಯತೆಯ ನಿಯಮಗಳಿಂದ ವರ್ಧಿತವಾಗಿರಬೇಕು. ಇದರರ್ಥ ಭಾಷೆಯ ನಿರ್ದಿಷ್ಟ ಕಾನೂನು ಉದಾಹರಣೆಗೆ ವ್ಯಾಕರಣವನ್ನು ಅನ್ವಯಿಸಲು ಒಂದೇ ಒಂದು ಸರಿಯಾದ ಮಾರ್ಗವಿದೆ, ಇದರ ಪರಿಣಾಮವಾಗಿ ಒಂದು ವಿಶಿಷ್ಟವಾದ ಪಾರ್ಸ್ ಟ್ರೀ ಮತ್ತು ಆ ಉದಾಹರಣೆಗಾಗಿ ಶಿಫ್ಟ್/ರಿಡ್ಯೂಸ್ ಕ್ರಿಯೆಗಳ ವಿಶಿಷ್ಟ ಅನುಕ್ರಮವಿದೆ. ಟೇಬಲ್-ಚಾಲಿತ ಪಾರ್ಸರ್ ವ್ಯಾಕರಣದ ಬಗ್ಗೆ ಅದರ ಎಲ್ಲಾ ಜ್ಞಾನವನ್ನು ಪಾರ್ಸರ್ ಕೋಷ್ಟಕಗಳು ಎಂದು ಕರೆಯಲಾಗುವ ಬದಲಾಗದ ದತ್ತಾಂಶವಾಗಿ ಎನ್ಕೋಡ್ ಮಾಡಿದೆ. ಪಾರ್ಸರ್ ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ ಸರಳವಾದ ಜೆನೆರಿಕ್ ಲೂಪ್ ಆಗಿದ್ದು ಅದು ಅನೇಕ ವ್ಯಾಕರಣಗಳು ಮತ್ತು ಭಾಷೆಗಳಿಗೆ ಬದಲಾಗದೆ ಅನ್ವಯಿಸುತ್ತದೆ. ಆದ್ಯತೆಯ ವಿಧಾನಗಳಿಗಾಗಿ ಟೇಬಲ್ಗಳನ್ನು ಕೈಯಿಂದ ತಯಾರಿಸಬಹುದು. ಎಲ್ಆರ್ ವಿಧಾನಗಳಿಗೆ, ಸಂಕೀರ್ಣ ಕೋಷ್ಟಕಗಳನ್ನು ಬೈಸನ್ ನಂತಹ ಕೆಲವು ಪಾರ್ಸರ್ ಜನರೇಟರ್ ಉಪಕರಣದಿಂದ ವ್ಯಾಕರಣದಿಂದ ಯಾಂತ್ರಿಕವಾಗಿ ಪಡೆಯಲಾಗಿದೆ. ಪಾರ್ಸರ್ ಕೋಷ್ಟಕಗಳು ಸಾಮಾನ್ಯವಾಗಿ ವ್ಯಾಕರಣಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿರುತ್ತವೆ. ಟೇಬಲ್-ಚಾಲಿತವಲ್ಲದ ರಿಕರ್ಸಿವ್ ಡಿಸೆಂಟ್ನಂತಹ ಇತರ ಪಾರ್ಸರ್ಗಳಲ್ಲಿ, ಪ್ರತಿ ಭಾಷೆಯ ರಚನೆಯನ್ನು ಬೇರೆ ಬೇರೆ ಸಬ್ರುಟೈನ್ ಮೂಲಕ ಪಾರ್ಸ್ ಮಾಡಲಾಗುತ್ತದೆ, ಇದು ಆ ಒಂದು ರಚನೆಯ ವಾಕ್ಯರಚನೆಗೆ ವಿಶೇಷವಾಗಿದೆ. ಪಾರ್ಸರ್ ಕ್ರಿಯೆಗಳು ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಯಾವುದೇ ಬ್ಯಾಕಪ್ ಅನ್ನು ಒಳಗೊಂಡಿರುವುದಿಲ್ಲ. ಇದರ ಒಟ್ಟು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯವು ಇನ್ಪುಟ್ನ ಉದ್ದ ಮತ್ತು ಸಂಪೂರ್ಣ ಪಾರ್ಸ್ ಮರದ ಗಾತ್ರದೊಂದಿಗೆ ರೇಖೀಯವಾಗಿ ಅಳೆಯುತ್ತದೆ. ಬ್ಯಾಕ್ಟ್ರಾಕ್ ಮಾಡುವ ಇತರ ಪಾರ್ಸರ್ ವಿಧಾನಗಳು ಕೆಟ್ಟದಾಗಿ ಊಹಿಸಿದಾಗ ಘಾತೀಯ ಸಮಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಊಹೆಯನ್ನು ತಪ್ಪಿಸಲು, ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ ಆಗಾಗ್ಗೆ ಈ ಹಿಂದೆ ಸ್ಕ್ಯಾನ್ ಮಾಡಿದ ಚಿಹ್ನೆಗಳೊಂದಿಗೆ ಏನು ಮಾಡಬೇಕೆಂದು ನಿರ್ಧರಿಸುವ ಮೊದಲು ಮುಂದಿನ ಸ್ಕ್ಯಾನ್ ಮಾಡಿದ ಚಿಹ್ನೆಯಲ್ಲಿ ಮುಂದೆ ನೋಡುತ್ತದೆ (ಎಡದಿಂದ ಬಲಕ್ಕೆ ಪಠ್ಯದಲ್ಲಿ). ಲೆಕ್ಸಿಕಲ್ ಸ್ಕ್ಯಾನರ್ ಒಂದು ಚಿಹ್ನೆಯನ್ನು ಉಳಿದ ಪಾರ್ಸರ್ಗಿಂತ ಮುಂದೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಪ್ರತಿ ಪಾರ್ಸಿಂಗ್ ನಿರ್ಧಾರಕ್ಕೂ ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯನ್ನು 'ಬಲಗೈ ಸಂದರ್ಭ' ಎಂದೂ ಕರೆಯಲಾಗುತ್ತದೆ. (ವಿರಳವಾಗಿ, ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಗಳನ್ನು ಬಳಸಬಹುದು, ಆದಾಗ್ಯೂ ಹೆಚ್ಚಿನ ಪ್ರಾಯೋಗಿಕ ವ್ಯಾಕರಣಗಳನ್ನು ಒಂದು ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯನ್ನು ಬಳಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಬಹುದು.) ಒಂದು ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ ಸಂಯೋಜಿತ ರಚನೆಗೆ ಬದ್ಧವಾಗುವ ಮೊದಲು ಕೆಲವು ರಚನೆಯ ಎಲ್ಲಾ ಭಾಗಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ ಪಾರ್ಸ್ ಮಾಡುವವರೆಗೆ ಕಾಯುತ್ತದೆ. ಪಾರ್ಸರ್ ನಂತರ ಮತ್ತಷ್ಟು ಕಾಯುವ ಬದಲು ಸಂಯೋಜನೆಯ ಮೇಲೆ ತಕ್ಷಣವೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಮೇಲಿನ ಪಾರ್ಸ್ ಟ್ರೀ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪಾರ್ಸ್ ಟ್ರೀನ ಆ ಭಾಗಗಳನ್ನು ಸಂಘಟಿಸಲು ಇನ್ನು ಮುಂದೆ ಕಾಯುವ ಬದಲು, ಬಿ ಪದಗುಚ್ಛವು ಮೌಲ್ಯಕ್ಕೆ ಇಳಿಯುತ್ತದೆ ಮತ್ತು ನಂತರ 3-6 ಹಂತಗಳಲ್ಲಿ ಉತ್ಪನ್ನಗಳು ಮತ್ತು ಮೊತ್ತಗಳಿಗೆ ಇಳಿಯುತ್ತದೆ. ಬಿ ಅನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸಬೇಕು ಎಂಬುದರ ನಿರ್ಧಾರಗಳು ಪಾರ್ಸರ್ ಮತ್ತು ಸ್ಕ್ಯಾನರ್ ಈಗಾಗಲೇ ನೋಡಿದ್ದನ್ನು ಮಾತ್ರ ಆಧರಿಸಿವೆ, ಬಲಕ್ಕೆ ಬಹಳ ನಂತರ ಕಾಣಿಸಿಕೊಳ್ಳುವ ವಿಷಯಗಳನ್ನು ಪರಿಗಣಿಸದೆ. ಕಡಿತಗಳು ಇತ್ತೀಚೆಗೆ ಪಾರ್ಸ್ ಮಾಡಲಾದ ವಿಷಯಗಳನ್ನು ಮರುಸಂಘಟಿಸುತ್ತವೆ, ಅಂದರೆ, ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯ ಎಡಭಾಗಕ್ಕೆ ತಕ್ಷಣವೇ. ಆದ್ದರಿಂದ ಈಗಾಗಲೇ ಪಾರ್ಸ್ ಮಾಡಲಾದ ವಸ್ತುಗಳ ಪಟ್ಟಿಯು ಸ್ಟಾಕ್ನಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಈ ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್ ಬಲಕ್ಕೆ ಬೆಳೆಯುತ್ತದೆ. ಸ್ಟ್ಯಾಕ್ನ ತಳ ಅಥವಾ ಕೆಳಭಾಗವು ಎಡಭಾಗದಲ್ಲಿದೆ ಮತ್ತು ಎಡಭಾಗದ ಅತ್ಯಂತ ಹಳೆಯ ಪಾರ್ಸ್ ತುಣುಕನ್ನು ಹೊಂದಿದೆ. ಪ್ರತಿ ಕಡಿತ ಹಂತವು ಬಲಭಾಗದ, ಹೊಸ ಪಾರ್ಸ್ ತುಣುಕುಗಳ ಮೇಲೆ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. (ಈ ಶೇಖರಣೆಯ ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್ ಮೇಲ್ಭಾಗದಿಂದ ಕೆಳಕ್ಕೆ ಪಾರ್ಸರ್ಗಳು ಬಳಸುವ ಮುನ್ಸೂಚಕ, ಎಡಕ್ಕೆ ಬೆಳೆಯುವ ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್ಗಿಂತ ಬಹಳ ಭಿನ್ನವಾಗಿದೆ.) ಉತ್ಪನ್ನಗಳ * ಮೌಲ್ಯದಂತಹ ವ್ಯಾಕರಣದ ನಿಯಮವನ್ನು ಅನ್ವಯಿಸಿದಾಗ, ಸ್ಟ್ಯಾಕ್ ಟಾಪ್ ಪಾರ್ಸ್ ಮರಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ. "ಉತ್ಪನ್ನಗಳು * ಮೌಲ್ಯ". ನಿಯಮದ ಬಲಭಾಗದ ಈ ಉದಾಹರಣೆಯನ್ನು ಹ್ಯಾಂಡಲ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಕಡಿಮೆ ಮಾಡುವ ಹಂತವು "ಉತ್ಪನ್ನಗಳು * ಮೌಲ್ಯ" ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಎಡಭಾಗದ ಟರ್ಮಿನಲ್ ಅಲ್ಲದ ಮೂಲಕ ಬದಲಾಯಿಸುತ್ತದೆ, ಈ ಸಂದರ್ಭದಲ್ಲಿ ದೊಡ್ಡ ಉತ್ಪನ್ನಗಳು. ಪಾರ್ಸರ್ ಸಂಪೂರ್ಣ ಪಾರ್ಸ್ ಮರಗಳನ್ನು ನಿರ್ಮಿಸಿದರೆ, ಆಂತರಿಕ ಉತ್ಪನ್ನಗಳ ಮೂರು ಮರಗಳು, *, ಮತ್ತು ಮೌಲ್ಯವನ್ನು ದೊಡ್ಡ ಉತ್ಪನ್ನಗಳಿಗೆ ಹೊಸ ಮರದ ಮೂಲದಿಂದ ಸಂಯೋಜಿಸಲಾಗುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, ಆಂತರಿಕ ಉತ್ಪನ್ನಗಳು ಮತ್ತು ಮೌಲ್ಯದಿಂದ ಶಬ್ದಾರ್ಥದ ವಿವರಗಳು ನಂತರದ ಕೆಲವು ಕಂಪೈಲರ್ ಪಾಸ್ಗೆ ಔಟ್ಪುಟ್ ಆಗುತ್ತವೆ, ಅಥವಾ ಅವುಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸಿ ಹೊಸ ಉತ್ಪನ್ನಗಳ ಚಿಹ್ನೆಯಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ. ಪಾರ್ಸರ್ ಅಲ್ಲಿ ವ್ಯಾಕರಣ ನಿಯಮಗಳ ಹೊಸದಾಗಿ ಪೂರ್ಣಗೊಂಡ ಉದಾಹರಣೆಗಳನ್ನು ಕಂಡುಕೊಳ್ಳುವವರೆಗೆ ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್ನ ಮೇಲ್ಭಾಗಕ್ಕೆ ಕಡಿತಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತಲೇ ಇರುತ್ತದೆ. ಯಾವುದೇ ಹೆಚ್ಚಿನ ನಿಯಮಗಳನ್ನು ಅನ್ವಯಿಸಲಾಗದಿದ್ದಾಗ, ಪಾರ್ಸರ್ ನಂತರ ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯನ್ನು ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್ಗೆ ಬದಲಾಯಿಸುತ್ತದೆ, ಹೊಸ ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ಗಳ ವಿಧಗಳು ಪಾರ್ಸರ್ ಕೋಷ್ಟಕಗಳು ಅಗ್ರ ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್ ಚಿಹ್ನೆಗಳು ಮತ್ತು ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಗಳ ಪ್ರತಿ ಕಾನೂನು ಸಂಯೋಜನೆಗೆ ಮುಂದೆ ಏನು ಮಾಡಬೇಕೆಂದು ತೋರಿಸುತ್ತವೆ. ಆ ಮುಂದಿನ ಕ್ರಮವು ಅನನ್ಯವಾಗಿರಬೇಕು; ಶಿಫ್ಟ್ ಆಗಿರಬಹುದು ಅಥವಾ ಕಡಿಮೆ ಆಗಿರಬಹುದು, ಆದರೆ ಎರಡೂ ಆಗಿರಬಾರದು. (ಇದು ವ್ಯಾಕರಣದ ಮೇಲೆ ಇನ್ನೂ ಕೆಲವು ಮಿತಿಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು ನಿಸ್ಸಂದಿಗ್ಧವಾಗಿದೆ.) ಕೋಷ್ಟಕದ ವಿವರಗಳು ವಿವಿಧ ರೀತಿಯ ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸರ್ಗಳ ನಡುವೆ ಬಹಳವಾಗಿ ಬದಲಾಗುತ್ತವೆ. ಆದ್ಯತೆಯ ಪಾರ್ಸರ್ಗಳಲ್ಲಿ, ಮೇಲಿನ ಸ್ಟ್ಯಾಕ್ ಚಿಹ್ನೆಗಳ ಆದ್ಯತೆಯ ಮಟ್ಟ ಅಥವಾ ವ್ಯಾಕರಣ ಬಿಗಿತವನ್ನು ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯೊಂದಿಗೆ ಹೋಲಿಸುವ ಮೂಲಕ ಹ್ಯಾಂಡಲ್ಗಳ ಬಲ ತುದಿಯನ್ನು ಕಾಣಬಹುದು. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಇಂಟ ಮತ್ತು ಐಡಿ ಹೇಳಿಕೆ ಡಿಲಿಮಿಟರ್ಗೆ ಹೋಲಿಸಿದರೆ ಆಂತರಿಕ ವ್ಯಾಕರಣ ಮಟ್ಟಗಳಿಗೆ ಸೇರಿವೆ. ಆದ್ದರಿಂದ ಪೂರ್ಣಾಂಕ ಮತ್ತು ಐಡಿ ಎರಡನ್ನೂ ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯೆಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ; ಮತ್ತು ಅದನ್ನು ಅನುಸರಿಸಿದಾಗಲೆಲ್ಲಾ ಬೇರೆ ಯಾವುದನ್ನಾದರೂ ಕಡಿಮೆ ಮಾಡಬೇಕು. ವಿವಿಧ ರೀತಿಯ ಆದ್ಯತೆಯ ಪಾರ್ಸರ್ಗಳಿವೆ, ಪ್ರತಿಯೊಂದೂ ಹ್ಯಾಂಡಲ್ನ ಎಡ ತುದಿಯನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ಅನ್ವಯಿಸಲು ಸರಿಯಾದ ನಿಯಮವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ವಿಭಿನ್ನ ಮಾರ್ಗಗಳನ್ನು ಹೊಂದಿದೆಃ ಆಪರೇಟರ್-ಪೂರ್ವಭಾವಿ ಪಾರ್ಸರ್, ಇದು ಅಭಿವ್ಯಕ್ತಿಗಳಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅತ್ಯಂತ ಸರಳವಾದ ಸಂಖ್ಯಾತ್ಮಕ ವಿಧಾನವಾಗಿದೆ ಆದರೆ ಸಾಮಾನ್ಯ ಪ್ರೋಗ್ರಾಂ ವಾಕ್ಯರಚನೆಯಲ್ಲ. ಸರಳ ಆದ್ಯತೆಯ ಪಾರ್ಸರ್, ಬಲ ಮತ್ತು ಎಡ ತುದಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಒಂದು ದೊಡ್ಡ MxN ಟೇಬಲ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಪಿಎಲ್360ನಲ್ಲಿ ಬಳಸಲಾಗಿದೆ. ಸಾಮಾನ್ಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು ನಿರ್ವಹಿಸುವುದಿಲ್ಲ. ದುರ್ಬಲ ಆದ್ಯತೆಯ ಪಾರ್ಸರ್, ಹ್ಯಾಂಡಲ್ಗಳ ಬಲ ತುದಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮಾತ್ರ ಆದ್ಯತೆಯ ಕೋಷ್ಟಕವನ್ನು ಬಳಸುತ್ತದೆ. ಸರಳ ಆದ್ಯತೆಗಿಂತ ಹೆಚ್ಚು ವ್ಯಾಕರಣಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ವಿಸ್ತರಿಸಿದ ಆದ್ಯತೆಯ ಪಾರ್ಸರ್. ಎಕ್ಸ್. ಪಿ. ಎಲ್. ನ ಮೂಲ ಆವೃತ್ತಿಯು ಬಳಸುವ ಮಿಶ್ರ ಕಾರ್ಯತಂತ್ರದ ಆದ್ಯತೆಯ ಪಾರ್ಸರ್. ಯಾವುದೇ ಆದ್ಯತೆಯ ಗುರುತಿಸುವಿಕೆಯಲ್ಲಿ ಅಂತರ್ಗತವಾಗಿರುವ "ಡಬಲ್ಸ್" ಅನ್ನು "ಟ್ರಿಪಲ್" ಗಳನ್ನು ಸೇರಿಸಲು ವಿಸ್ತರಿಸುತ್ತದೆ. ಎಸ್ಎಲ್ಆರ್ ಗಿಂತ ಕಡಿಮೆ ಶಕ್ತಿಶಾಲಿಯಾಗಿದೆ. ಆದ್ಯತೆಯ ವಿಧಾನಗಳಿಂದ ವಿಧಿಸಲಾದ ಮಿತಿಗಳ ಹೊರಗೆ ವ್ಯಾಕರಣಗಳನ್ನು ಗುರುತಿಸಲು ಅಗತ್ಯವಿರುವ ಅನೇಕ "ತ್ರಿವಳಿಗಳ" ಕಾರಣದಿಂದಾಗಿ ಸಾಮಾನ್ಯವಾಗಿ ಎಕ್ಸ್. ಪಿ. ಎಲ್. ನಂತಹ ತುಲನಾತ್ಮಕವಾಗಿ ಸಣ್ಣ ಭಾಷೆಗಳಿಗೆ ಸಹ ಬಹಳ ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಆದ್ಯತೆಯ ಪಾರ್ಸರ್ಗಳು ಅವರು ನಿಭಾಯಿಸಬಹುದಾದ ವ್ಯಾಕರಣಗಳಲ್ಲಿ ಸೀಮಿತವಾಗಿವೆ. ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವಾಗ ಅವರು ಹೆಚ್ಚಿನ ಪಾರ್ಸ್ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತಾರೆ. ಅವರು ಅತ್ಯುನ್ನತ ಚಿಹ್ನೆಗಳ ಹೆಸರುಗಳನ್ನು ಮಾತ್ರ ಪರಿಗಣಿಸುತ್ತಾರೆ, ವ್ಯಾಕರಣದಲ್ಲಿ ಆ ಚಿಹ್ನೆಗಳು ಈಗ ಎಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಿವೆ ಎಂಬುದರ ಸಂಪೂರ್ಣ ಸಂದರ್ಭವಲ್ಲ. ಆದ್ಯತೆಗೆ ಹೋಲುವ ಚಿಹ್ನೆಗಳ ಸಂಯೋಜನೆಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡಬೇಕು ಮತ್ತು ವ್ಯಾಕರಣದಾದ್ಯಂತ ಒಂದೇ ರೀತಿಯಲ್ಲಿ ಬಳಸಬೇಕು, ಆದಾಗ್ಯೂ ಆ ಸಂಯೋಜನೆಗಳು ಸಂದರ್ಭವನ್ನು ಲೆಕ್ಕಿಸದೆ ಸಂಭವಿಸುತ್ತವೆ. ಎಲ್ಆರ್ ಪಾರ್ಸರ್ಗಳು ಶಿಫ್ಟ್-ರಿಡ್ಯೂಸ್ ಪಾರ್ಸಿಂಗ್ನ ಹೆಚ್ಚು ಹೊಂದಿಕೊಳ್ಳುವ ರೂಪವಾಗಿದ್ದು, ಇನ್ನೂ ಅನೇಕ ವ್ಯಾಕರಣಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. ಎಲ್ಆರ್ ಪಾರ್ಸರ್ ಪ್ರೊಸೆಸಿಂಗ್ ಎಲ್ಆರ್ ಪಾರ್ಸರ್ಗಳು ಸ್ಟೇಟ್ ಮೆಷಿನ್ನಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ, ಪ್ರತಿ ಶಿಫ್ಟ್ಗೆ ಸ್ಟೇಟ್ ಟ್ರಾನ್ಸಿಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ ಅಥವಾ ಕ್ರಿಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತವೆ. ಇವು ಶಿಫ್ಟ್ ಕ್ರಿಯೆಗಳ ಮೂಲಕ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯನ್ನು ತಳ್ಳುವ (ಕೆಳಗೆ) ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ಈ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ನಂತರ ಕಡಿಮೆ ಕ್ರಿಯೆಗಳ ಮೂಲಕ ಪಾಪ್ (ಅಪ್) ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಕಾರ್ಯವಿಧಾನವು ಎಲ್ಆರ್ ಪಾರ್ಸರ್ಗೆ ಎಲ್ಲಾ ನಿರ್ಣಾಯಕ ಸಂದರ್ಭ-ಮುಕ್ತ ವ್ಯಾಕರಣಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಇದು ಆದ್ಯತೆಯ ವ್ಯಾಕರಣಗಳ ಸೂಪರ್ಸೆಟ್ ಆಗಿದೆ. ಎಲ್ಆರ್ ಪಾರ್ಸರ್ ಅನ್ನು ಕ್ಯಾನೊನಿಕಲ್ ಎಲ್ಆರ್ ಪಾರ್ಸರ್ ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಲುಕ್-ಎಹೆಡ್ ಎಲ್ಆರ್ ಮತ್ತು ಸಿಂಪಲ್ ಎಲ್ಆರ್ ಪಾರ್ಸರ್ಗಳು ಅದರ ಸರಳೀಕೃತ ರೂಪಾಂತರಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ, ಇದು ಮೆಮೊರಿ ಅವಶ್ಯಕತೆಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಿದೆ. ಇತ್ತೀಚಿನ ಸಂಶೋಧನೆಯು ಕ್ನತ್ನ ಟೇಬಲ್-ಬಿಲ್ಡಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ನ ಮೇಲೆ ಟೇಬಲ್ ಅವಶ್ಯಕತೆಗಳನ್ನು ನಾಟಕೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ ಕ್ಯಾನೊನಿಕಲ್ ಎಲ್ಆರ್ ಪಾರ್ಸರ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ವಿಧಾನಗಳನ್ನು ಗುರುತಿಸಿದೆ. ಎಲ್. ಆರ್. ಆಗಿರಲಿ, ಎಲ್. ಎ. ಎಲ್. ಆರ್. ಆಗಿರಲಿ ಅಥವಾ ಎಸ್. ಎಲ್. ಆರ್. ಆಗಿರಲಿ, ಮೂಲ ಸ್ಥಿತಿ ಯಂತ್ರವು ಒಂದೇ ಆಗಿರುತ್ತದೆ; ಕೋಷ್ಟಕಗಳು ಮಾತ್ರ ವಿಭಿನ್ನವಾಗಿರುತ್ತವೆ ಮತ್ತು ಈ ಕೋಷ್ಟಕಗಳು ಬಹುತೇಕ ಯಾವಾಗಲೂ ಯಾಂತ್ರಿಕವಾಗಿ ಉತ್ಪತ್ತಿಯಾಗುತ್ತವೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಈ ಕೋಷ್ಟಕಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ರಾಜ್ಯ ಯಂತ್ರಕ್ಕೆ ಬಾಹ್ಯವಾಗಿರುವ ಮತ್ತು REDUCEd ಎಂದು ಕರೆಯಲಾಗುವ ವ್ಯಾಕರಣ ನಿಯಮದ ಶಬ್ದಾರ್ಥಗಳಿಂದ ಸೂಚಿಸಲ್ಪಡುವ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸುವ ಒಂದು ಮುಚ್ಚಿದ ಸಬ್ರುಟೈನ್ಗೆ ಕರೆಗೆ ಕಾರಣವಾಗುವ ರೀತಿಯಲ್ಲಿ ಅನುಷ್ಠಾನಗೊಳಿಸಲಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ, ಪಾರ್ಸರ್ ಅನ್ನು ಅಸ್ಥಿರ ಸ್ಥಿತಿಯ ಯಂತ್ರದ ಭಾಗವಾಗಿ ಮತ್ತು ವಿಭಿನ್ನ ಶಬ್ದಾರ್ಥದ ಭಾಗವಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ. ಈ ಮೂಲಭೂತ ವ್ಯತ್ಯಾಸವು ಅಸಾಧಾರಣವಾಗಿ ವಿಶ್ವಾಸಾರ್ಹವಾದ ಉತ್ತಮ-ಗುಣಮಟ್ಟದ ಪಾರ್ಸರ್ಗಳ ಅಭಿವೃದ್ಧಿಯನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುತ್ತದೆ. ನಿರ್ದಿಷ್ಟ ಸ್ಟ್ಯಾಕ್ ಸ್ಥಿತಿ ಮತ್ತು ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯನ್ನು ನೀಡಿದರೆ, ನಿಖರವಾಗಿ ನಾಲ್ಕು ಸಂಭವನೀಯ ಕ್ರಿಯೆಗಳಿವೆ, ದೋಷ, ವರ್ಗಾವಣೆ, ಕಡಿತ ಮತ್ತು ನಿಲ್ಲಿಸಿ (ಇನ್ನು ಮುಂದೆ ಸಂರಚನೆಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ). ಒಂದು ಸಂರಚನೆಯಲ್ಲಿ ಒಂದು ಚುಕ್ಕೆಯ ಉಪಸ್ಥಿತಿಯು, ಡಾಟ್ನ ಬಲಭಾಗದಲ್ಲಿ ತೋರಿಸಲಾದ ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಯೊಂದಿಗೆ ಪ್ರಸ್ತುತ ಲುಕ್ಹೆಡ್ ಸ್ಥಾನವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ (ಮತ್ತು ಇದು ಯಾವಾಗಲೂ ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಗೆ ಅನುರೂಪವಾಗಿದೆ), ಮತ್ತು ಡಾಟ್ನ ಎಡಭಾಗದಲ್ಲಿ ಪ್ರಸ್ತುತ ಸ್ಟ್ಯಾಕ್ ಸ್ಥಿತಿಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ (ಮತ್ತು ಇದು ಸಾಮಾನ್ಯವಾಗಿ ನಾನ್ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಗೆ ಅನುರೂಪವಾಗಿದೆ). ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆ ಸೇರಿದಂತೆ ಪ್ರಾಯೋಗಿಕ ಕಾರಣಗಳಿಗಾಗಿ, ಕೋಷ್ಟಕಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಸ್ವಲ್ಪ ದೊಡ್ಡದಾದ, ಎರಡು-ಬಿಟ್ ಚಿಹ್ನೆಗಳ ಸಹಾಯಕ ಶ್ರೇಣಿಯಿಂದ ವಿಸ್ತರಿಸಲಾಗುತ್ತದೆ, ಸ್ಪಷ್ಟವಾಗಿ ಬೈಟ್-ಆಧಾರಿತ ಯಂತ್ರಗಳಲ್ಲಿ ಸಮರ್ಥ ಪ್ರವೇಶಕ್ಕಾಗಿ ನಾಲ್ಕು ಎರಡು-ಬಿಟ್ ಚಿಹ್ನೆಗಳಾಗಿ ಸಂಕುಚಿತಗೊಳ್ಳುತ್ತದೆ, ಸಾಮಾನ್ಯವಾಗಿ ಎನ್ಕೋಡ್ ಮಾಡಲಾದಃ 00b ದೋಷವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ 01b ಶಿಫ್ಟ್ 10b ಅನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ 11b ಕಡಿತವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ (STOP ಎಂಬುದು ಶಿಫ್ಟ್ನ ವಿಶೇಷ ಪ್ರಕರಣವಾಗಿದೆ). ಇಡೀ ಶ್ರೇಣಿಯು ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚಾಗಿ ದೋಷಯುಕ್ತ ಸಂರಚನೆಗಳು, ವ್ಯಾಕರಣ-ವ್ಯಾಖ್ಯಾನಿತ ಸಂಖ್ಯೆಯ ಶಿಫ್ಟ್ ಮತ್ತು ರಿಡ್ಯೂಸ್ ಸಂರಚನೆಗಳು ಮತ್ತು ಒಂದು ಸ್ಟಾಪ್ ಸಂರಚನೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಕ್ವಾಟರ್ನರಿ ಅಂಕಿ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಮೌಲ್ಯಗಳ ವಿವರಣೆಯನ್ನು ಬೆಂಬಲಿಸುವ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ (ಬೇಸ್ 4, ಪ್ರತಿ ಕ್ವಾಟರ್ನರಿ ಅಂಕೆಗೆ ಎರಡು ಬಿಟ್ಗಳು), ಉದಾಹರಣೆಗೆ ಎಕ್ಸ್ಪಿಎಲ್, ಇವುಗಳನ್ನು ಕೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆಃ "(2). 0" ದೋಷವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ "(2). 1." ಶಿಫ್ಟ್ "(2). 2 ಅನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ." ಕಡಿತವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ "(2). 3." ಸ್ಟಾಪ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಶಿಫ್ಟ್ ಮತ್ತು ರಿಡ್ಯೂಸ್ ಕೋಷ್ಟಕಗಳನ್ನು ರಚನೆಯಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸಹಾಯಕ ಶ್ರೇಣಿಯನ್ನು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿ ಮತ್ತು ಲುಕ್ಹೆಡ್ ಚಿಹ್ನೆಗೆ ಮಾತ್ರ "ಪರಿಶೀಲಿಸಲಾಗಿದೆ". (ಸಹಾಯಕ) ಶ್ರೇಣಿಯು "ಪೂರ್ಣವಾಗಿದೆ", ಆದರೆ (ಶಿಫ್ಟ್ ಮತ್ತು ರಿಡ್ಯೂಸ್) ಕೋಷ್ಟಕಗಳು ನಿಜವಾಗಿಯೂ ಬಹಳ "ವಿರಳವಾಗಿರಬಹುದು", ಮತ್ತು ಆ ಶಿಫ್ಟ್ ಮತ್ತು ರಿಡ್ಯೂಸ್ ಕೋಷ್ಟಕಗಳ ಅತ್ಯುತ್ತಮ "ವಿಭಜನೆಯ" ಮೂಲಕ ಗಮನಾರ್ಹ ದಕ್ಷತೆಯನ್ನು ಸಾಧಿಸಬಹುದು (ದೋಷ ಮತ್ತು ನಿಲುಗಡೆಗೆ ಯಾವುದೇ ಕೋಷ್ಟಕಗಳ ಅಗತ್ಯವಿಲ್ಲ). ಶಿಫ್ಟ್-ರೆಡ್ಯೂಸ್ ಪಾರ್ಸರ್ನ ಮೂಲ ವ್ಯಾಖ್ಯಾನದಿಂದ, ಶಿಫ್ಟ್ ಮತ್ತು ರೆಡ್ಯೂಸ್ ಸಂರಚನೆಗಳು ಸ್ಪಷ್ಟವಾಗಿವೆ. ಸ್ಟಾಪ್, ನಂತರ, ಸ್ಟ್ಯಾಕ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿರುವ ಸ್ಥಿತಿ ಮತ್ತು ಲುಕ್ಹೆಡ್ ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಯು ವಿಷಯ ವ್ಯಾಕರಣದೊಳಗೆ ಇರುವ ಸಂರಚನೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರೋಗ್ರಾಂನ ಅಂತ್ಯವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆಃ δ <ಪ್ರೋಗ್ರಾಂ> δ ಅಂತಿಮ δ ಅನ್ನು ಮೀರಿ ಶಿಫ್ಟ್ ಮಾಡುವುದು ಅಸಾಧ್ಯವಾಗಿದೆ ಆದ್ದರಿಂದ ತಲುಪಲು, ಪರಿಕಲ್ಪನಾತ್ಮಕವಾಗಿ δ <ಪ್ರೋಗ್ರಾಂ> δ • ದೋಷ, ನಂತರ, ಸ್ಟ್ಯಾಕ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿರುವ ಸ್ಥಿತಿಯು ಮತ್ತು ಲುಕ್ಹೆಡ್ ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಯು ವಿಷಯ ವ್ಯಾಕರಣದೊಳಗೆ ಇಲ್ಲದಿರುವ ಸಂರಚನೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಇದು ಲುಕ್ಹೆಡ್ ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಯನ್ನು ತ್ಯಜಿಸಲು ಮತ್ತು ಮುಂದಿನ ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಯನ್ನು ಓದಲು, ಬಹುಶಃ ಅದರ ಅತ್ಯಂತ ಸರಳವಾದ ರೂಪದಲ್ಲಿ, ದೋಷ ಚೇತರಿಕೆ ಕಾರ್ಯವಿಧಾನವನ್ನು ಆಹ್ವಾನಿಸುವ ಅವಕಾಶವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಆದರೆ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಕತ್ತರಿಸುವುದು, ಅಥವಾ ಲುಕ್ಹೆಡ್ ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಯನ್ನು ತ್ಯಜಿಸುವುದು ಮತ್ತು ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಕತ್ತರಿಸುವುದು ಸೇರಿದಂತೆ ಅನೇಕ ಇತರ ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಲಾದ ಕ್ರಿಯೆಗಳು ಸಾಧ್ಯವಿದೆ (ಮತ್ತು ರೋಗಶಾಸ್ತ್ರೀಯ ಸಂದರ್ಭದಲ್ಲಿ, ಸಾಮಾನ್ಯವಾಗಿ "ಶೂನ್ಯ ಹೇಳಿಕೆ" ಯನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿರುವ "ಪ್ರೋಗ್ರಾಂ" ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಿದೆ). ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಮೊದಲೇ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ, ಅಂದರೆ, ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ, δ· <ಪ್ರೋಗ್ರಾಂ> δ ಯೊಂದಿಗೆ ಆರಂಭಿಕ δ ಅನ್ನು ಈಗಾಗಲೇ ಗುರುತಿಸಲಾಗಿದೆ ಎಂದು ಭಾವಿಸಲಾಗಿದೆ. ಇದು, ನಂತರ, ಪ್ರೋಗ್ರಾಂನ ಆರಂಭವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ, ಮತ್ತು ಆ ಮೂಲಕ, ಪ್ರತ್ಯೇಕ START ಸಂರಚನೆಯನ್ನು ಹೊಂದಿರುವುದನ್ನು ತಪ್ಪಿಸುತ್ತದೆ, ಇದು ಪರಿಕಲ್ಪನಾತ್ಮಕವಾಗಿ ವ್ಯಾಕರಣಕ್ಕೆ ಯಾಂತ್ರಿಕವಾಗಿ ಸೇರಿಸಲಾದ ವಿಶೇಷ ಹುಸಿ-ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಯಾಗಿದೆ, ಅದೇ ರೀತಿ <ಪ್ರೋಗ್ರಾಂ> ಎಂಬುದು ವ್ಯಾಕರಣಕ್ಕೆ ಯಾಂತ್ರಿಕವಾಗಿ ಸೇರಿಸಲಾದ ವಿಶೇಷ ಹುಸಿ-ಟರ್ಮಿನಲ್ ಚಿಹ್ನೆಯಾಗಿದೆ (ಪ್ರೋಗ್ರಾಮರ್ ವ್ಯಾಕರಣದಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿ <ಪ್ರೋಗ್ರಾಂ> ಅನ್ನು ಸೇರಿಸದಿದ್ದರೆ, ನಂತರ <ಪ್ರೋಗ್ರಾಂ> ಅನ್ನು ಪ್ರೋಗ್ರಾಮರ್ನ ಪರವಾಗಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವ್ಯಾಕರಣಕ್ಕೆ ಸೇರಿಸಲಾಗುತ್ತದೆ). ಸ್ಪಷ್ಟವಾಗಿ, ಅಂತಹ ಪಾರ್ಸರ್ ನಿಖರವಾಗಿ ಒಂದು (ಸೂಚ್ಯ) START ಸಂರಚನೆ ಮತ್ತು ಒಂದು (ಸ್ಪಷ್ಟ) STOP ಸಂರಚನೆಯನ್ನು ಹೊಂದಿದೆ, ಆದರೆ ಇದು ನೂರಾರು ಶಿಫ್ಟ್ ಮತ್ತು ರಿಡ್ಯೂಸ್ ಸಂರಚನೆಗಳನ್ನು ಮತ್ತು ಬಹುಶಃ ಸಾವಿರಾರು ದೋಷ ಸಂರಚನೆಗಳನ್ನು ಹೊಂದಿರಬಹುದು ಮತ್ತು ಹೊಂದಿರಬಹುದು. ಉಲ್ಲೇಖಗಳ ಪಾರ್ಸಿಂಗ್ ಕ್ರಮಾವಳಿಗಳು