{"id":2818,"date":"2025-06-01T14:47:29","date_gmt":"2025-06-01T14:47:29","guid":{"rendered":"https:\/\/diznr.com\/?p=2818"},"modified":"2025-06-01T14:47:29","modified_gmt":"2025-06-01T14:47:29","slug":"short-trick-method-to-find-follow-of-any-grammar-compiler-design","status":"publish","type":"post","link":"https:\/\/www.reilsolar.com\/pdf\/short-trick-method-to-find-follow-of-any-grammar-compiler-design\/","title":{"rendered":"Short trick method to find Follow of any grammar- Compiler Design"},"content":{"rendered":"<p>Short trick method to find Follow of any grammar- Compiler Design<\/p>\n<p>[fvplayer id=&#8221;128&#8243;]<\/p>\n<h3 data-start=\"0\" data-end=\"76\"><strong data-start=\"4\" data-end=\"74\">\u00a0Short Trick to Find FOLLOW of Any Grammar in Compiler Design\u00a0<\/strong><\/h3>\n<p data-start=\"78\" data-end=\"295\">In <strong data-start=\"81\" data-end=\"100\">Compiler Design<\/strong>, the <strong data-start=\"106\" data-end=\"120\">FOLLOW set<\/strong> of a non-terminal helps in <strong data-start=\"148\" data-end=\"179\">parsing and syntax analysis<\/strong>. It determines the set of <strong data-start=\"206\" data-end=\"274\">terminals that can appear immediately after a given non-terminal<\/strong> in the derivation.<\/p>\n<p data-start=\"297\" data-end=\"405\">Finding the <strong data-start=\"309\" data-end=\"323\">FOLLOW set<\/strong> can be tricky, but here\u2019s a <strong data-start=\"352\" data-end=\"377\">simple and easy trick<\/strong> to compute it quickly!<\/p>\n<p data-start=\"297\" data-end=\"405\"><strong data-start=\"415\" data-end=\"465\">\u00a0Steps to Find FOLLOW Set Using a Short Trick<\/strong><\/p>\n<h3 data-start=\"469\" data-end=\"517\"><strong data-start=\"473\" data-end=\"515\">\u00a0Step 1: Start with the Start Symbol<\/strong><\/h3>\n<ul data-start=\"518\" data-end=\"653\">\n<li data-start=\"518\" data-end=\"588\">Always <strong data-start=\"527\" data-end=\"551\">add <code data-start=\"533\" data-end=\"536\">$<\/code> (EOF symbol)<\/strong> to the FOLLOW of the start symbol.<\/li>\n<li data-start=\"589\" data-end=\"653\">Example: If <code data-start=\"603\" data-end=\"606\">S<\/code> is the start symbol, then <code data-start=\"633\" data-end=\"650\">FOLLOW(S) = {$}<\/code>.<\/li>\n<\/ul>\n<h3 data-start=\"655\" data-end=\"718\"><strong data-start=\"659\" data-end=\"716\">\u00a0Step 2: Look at the Right-Hand Side of Productions<\/strong><\/h3>\n<ul data-start=\"719\" data-end=\"942\">\n<li data-start=\"719\" data-end=\"873\">If a <strong data-start=\"726\" data-end=\"746\">non-terminal (A)<\/strong> appears in a production <strong data-start=\"771\" data-end=\"808\">before a terminal or non-terminal<\/strong>, then <strong data-start=\"815\" data-end=\"828\">FOLLOW(A)<\/strong> will contain <strong data-start=\"842\" data-end=\"851\">FIRST<\/strong> of the next symbol.<\/li>\n<li data-start=\"874\" data-end=\"942\">Example:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-[5px] h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">css<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><span class=\"\" data-state=\"closed\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><\/span><span class=\"\" data-state=\"closed\"><button class=\"flex select-none items-center gap-1\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre\">S \u2192 <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">B<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<p>Here, <code data-start=\"917\" data-end=\"939\">FOLLOW(A) \u2287 FIRST(B)<\/code>.<\/li>\n<\/ul>\n<h3 data-start=\"944\" data-end=\"1012\"><strong data-start=\"948\" data-end=\"1010\">\u00a0Step 3: If a Non-Terminal is at the End of a Production<\/strong><\/h3>\n<ul data-start=\"1013\" data-end=\"1183\">\n<li data-start=\"1013\" data-end=\"1090\">If <code data-start=\"1018\" data-end=\"1021\">A<\/code> is at the end of a production, then <strong data-start=\"1058\" data-end=\"1087\">FOLLOW(A) \u2287 FOLLOW of LHS<\/strong>.<\/li>\n<li data-start=\"1091\" data-end=\"1183\">Example:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-[5px] h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">css<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><span class=\"\" data-state=\"closed\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><\/span><span class=\"\" data-state=\"closed\"><button class=\"flex select-none items-center gap-1\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre\">S \u2192 <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">B<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<p>Since <code data-start=\"1134\" data-end=\"1137\">B<\/code> is at the <strong data-start=\"1148\" data-end=\"1155\">end<\/strong>, <code data-start=\"1157\" data-end=\"1180\">FOLLOW(B) \u2287 FOLLOW(S)<\/code>.<\/li>\n<\/ul>\n<h3 data-start=\"1185\" data-end=\"1237\"><strong data-start=\"1189\" data-end=\"1235\">\u00a0Step 4: If a Nullable Symbol is Present<\/strong><\/h3>\n<ul data-start=\"1238\" data-end=\"1450\">\n<li data-start=\"1238\" data-end=\"1352\">If a <strong data-start=\"1245\" data-end=\"1264\">nullable symbol<\/strong> (\u03b5-production) is after <code data-start=\"1289\" data-end=\"1292\">A<\/code>, then check the <strong data-start=\"1309\" data-end=\"1349\">next symbol\u2019s FOLLOW or LHS\u2019s FOLLOW<\/strong>.<\/li>\n<li data-start=\"1353\" data-end=\"1450\">Example:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-[5px] h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">css<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><span class=\"\" data-state=\"closed\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><\/span><span class=\"\" data-state=\"closed\"><button class=\"flex select-none items-center gap-1\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre\">S \u2192 <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">B<\/span> (where FIRST(<span class=\"hljs-selector-tag\">B<\/span>) contains \u03b5)<br \/>\n<\/code><\/div>\n<\/div>\n<p>Then, <code data-start=\"1424\" data-end=\"1447\">FOLLOW(A) \u2287 FOLLOW(S)<\/code>.<\/li>\n<\/ul>\n<h3 data-start=\"1457\" data-end=\"1499\"><strong data-start=\"1460\" data-end=\"1497\">Shortcut Formula for FOLLOW\u00a0<\/strong><\/h3>\n<table data-start=\"1501\" data-end=\"1729\">\n<thead data-start=\"1501\" data-end=\"1526\">\n<tr data-start=\"1501\" data-end=\"1526\">\n<th data-start=\"1501\" data-end=\"1508\">Case<\/th>\n<th data-start=\"1508\" data-end=\"1526\">Rule to Follow<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"1551\" data-end=\"1729\">\n<tr data-start=\"1551\" data-end=\"1603\">\n<td><code data-start=\"1553\" data-end=\"1562\">A \u2192 \u03b1B\u03b2<\/code><\/td>\n<td><code data-start=\"1565\" data-end=\"1601\">FOLLOW(B) \u2287 FIRST(\u03b2) (excluding \u03b5)<\/code><\/td>\n<\/tr>\n<tr data-start=\"1604\" data-end=\"1660\">\n<td><code data-start=\"1606\" data-end=\"1614\">A \u2192 \u03b1B<\/code> (B is at the end)<\/td>\n<td><code data-start=\"1635\" data-end=\"1658\">FOLLOW(B) \u2287 FOLLOW(A)<\/code><\/td>\n<\/tr>\n<tr data-start=\"1661\" data-end=\"1729\">\n<td><code data-start=\"1663\" data-end=\"1672\">A \u2192 \u03b1B\u03b2<\/code>, and <code data-start=\"1678\" data-end=\"1688\">FIRST(\u03b2)<\/code> contains <code data-start=\"1698\" data-end=\"1701\">\u03b5<\/code><\/td>\n<td><code data-start=\"1704\" data-end=\"1727\">FOLLOW(B) \u2287 FOLLOW(A)<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 data-start=\"1736\" data-end=\"1779\"><strong data-start=\"1739\" data-end=\"1777\">\u00a0Example for Quick Understanding<\/strong><\/h3>\n<h3 data-start=\"1781\" data-end=\"1797\"><strong data-start=\"1785\" data-end=\"1797\">Grammar:<\/strong><\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-[5px] h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">less<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><span class=\"\" data-state=\"closed\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><\/span><span class=\"\" data-state=\"closed\"><button class=\"flex select-none items-center gap-1\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre\"><span class=\"hljs-selector-tag\">S<\/span> \u2192 <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">B<\/span><br \/>\n<span class=\"hljs-selector-tag\">A<\/span> \u2192 <span class=\"hljs-selector-tag\">a<\/span> | \u03b5<br \/>\n<span class=\"hljs-selector-tag\">B<\/span> \u2192 <span class=\"hljs-selector-tag\">b<\/span> | <span class=\"hljs-selector-tag\">C<\/span><br \/>\n<span class=\"hljs-selector-tag\">C<\/span> \u2192 <span class=\"hljs-selector-tag\">c<\/span> | \u03b5<br \/>\n<\/code><\/div>\n<\/div>\n<h3 data-start=\"1845\" data-end=\"1888\"><strong data-start=\"1849\" data-end=\"1886\">Step-by-Step Trick to Find FOLLOW<\/strong><\/h3>\n<p data-start=\"1890\" data-end=\"2059\"><code data-start=\"1894\" data-end=\"1911\">FOLLOW(S) = {$}<\/code> (Start symbol rule)<br data-start=\"1931\" data-end=\"1934\" \/><code data-start=\"1938\" data-end=\"1969\">FOLLOW(A) \u2287 FIRST(B) = {b, c}<\/code><br data-start=\"1969\" data-end=\"1972\" \/><code data-start=\"1976\" data-end=\"2005\">FOLLOW(B) \u2287 FOLLOW(S) = {$}<\/code><br data-start=\"2005\" data-end=\"2008\" \/><code data-start=\"2012\" data-end=\"2041\">FOLLOW(C) \u2287 FOLLOW(B) = {$}<\/code> (Since <code data-start=\"2049\" data-end=\"2056\">C \u2192 \u03b5<\/code>)<\/p>\n<h3 data-start=\"2061\" data-end=\"2087\"><strong data-start=\"2065\" data-end=\"2087\">Final FOLLOW Sets:<\/strong><\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-[5px] h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">ruby<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><span class=\"\" data-state=\"closed\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><\/span><span class=\"\" data-state=\"closed\"><button class=\"flex select-none items-center gap-1\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre\"><span class=\"hljs-variable constant_\">FOLLOW<\/span>(S) = { <span class=\"hljs-variable\">$ <\/span>}<br \/>\n<span class=\"hljs-variable constant_\">FOLLOW<\/span>(A) = { b, c }<br \/>\n<span class=\"hljs-variable constant_\">FOLLOW<\/span>(B) = { <span class=\"hljs-variable\">$ <\/span>}<br \/>\n<span class=\"hljs-variable constant_\">FOLLOW<\/span>(C) = { <span class=\"hljs-variable\">$ <\/span>}<br \/>\n<\/code><\/div>\n<\/div>\n<h3 data-start=\"2177\" data-end=\"2198\"><strong data-start=\"2180\" data-end=\"2198\">\u00a0Conclusion:<\/strong><\/h3>\n<p data-start=\"2199\" data-end=\"2451\">With this <strong data-start=\"2209\" data-end=\"2224\">short trick<\/strong>, you can quickly find FOLLOW sets without confusion!\u00a0<br data-start=\"2280\" data-end=\"2283\" \/>\u2714 Start with <code data-start=\"2296\" data-end=\"2299\">$<\/code> for the start symbol.<br data-start=\"2321\" data-end=\"2324\" \/>\u2714 Use <strong data-start=\"2330\" data-end=\"2354\">FIRST of next symbol<\/strong> for FOLLOW.<br data-start=\"2366\" data-end=\"2369\" \/>\u2714 If at the end, take <strong data-start=\"2391\" data-end=\"2408\">FOLLOW of LHS<\/strong>.<br data-start=\"2409\" data-end=\"2412\" \/>\u2714 Handle <strong data-start=\"2421\" data-end=\"2448\">\u03b5-productions carefully<\/strong>.<\/p>\n<p data-start=\"2453\" data-end=\"2504\" data-is-last-node=\"\" data-is-only-node=\"\">Would you like me to explain with more examples?<\/p>\n<h3 data-start=\"2453\" data-end=\"2504\"><a href=\"https:\/\/www.vssut.ac.in\/lecture_notes\/lecture1422914957.pdf\" target=\"_blank\" rel=\"noopener\">Short trick method to find Follow of any grammar- Compiler Design<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/www3.nd.edu\/~dthain\/compilerbook\/compilerbook.pdf\" target=\"_blank\" rel=\"noopener\">Introduction to Compilers and Language Design<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/sircrrengg.ac.in\/images\/CSEMATERIALS\/3_1_COMPILER_DESIGN.pdf\" target=\"_blank\" rel=\"noopener\">LECTURE NOTES ON COMPILER DESIGN<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/uomustansiriyah.edu.iq\/media\/lectures\/9\/9_2019_04_12!12_55_27_PM.pdf\" target=\"_blank\" rel=\"noopener\">FIRST and FOLLOW<\/a><\/h3>\n<p>Sure! Here&#8217;s a <strong>short-trick method<\/strong> to find the <strong>FOLLOW set<\/strong> of any non-terminal in <strong>Compiler Design<\/strong> (used in parsing, especially LL(1) parsers):<\/p>\n<hr \/>\n<h1>\ud83e\udde0 <strong>Shortcut Method to Find FOLLOW Set in Compiler Design<\/strong><\/h1>\n<hr \/>\n<h2>\ud83d\udccc <strong>What is the FOLLOW set?<\/strong><\/h2>\n<p>The <strong>FOLLOW(A)<\/strong> of a non-terminal A is the set of terminals that <strong>can appear immediately after A<\/strong> in some &#8220;sentential form&#8221; (derivation).<\/p>\n<hr \/>\n<h2>\ud83e\ude84 <strong>Short Trick to Find FOLLOW(A):<\/strong><\/h2>\n<hr \/>\n<h3>\u2705 <strong>Step-by-Step Shortcut (Simple Rules):<\/strong><\/h3>\n<hr \/>\n<h3>\ud83d\udd39 <strong>Rule 1: Start Symbol Rule<\/strong><\/h3>\n<p><strong>If A is the start symbol<\/strong>, then add <strong><code>$<\/code> (end marker)<\/strong> to FOLLOW(A).<\/p>\n<blockquote><p>\ud83d\udcdd <code>If S is start \u2192 FOLLOW(S) = { $ }<\/code><\/p><\/blockquote>\n<hr \/>\n<h3>\ud83d\udd39 <strong>Rule 2: A \u2192 \u03b1B\u03b2 Rule (Non-terminal followed by symbols)<\/strong><\/h3>\n<p>If there is a production like:<br \/>\n<code>A \u2192 \u03b1 B \u03b2<\/code><\/p>\n<p>\u27a1 Then, everything in <strong>FIRST(\u03b2)<\/strong> (except \u03b5) is added to <strong>FOLLOW(B)<\/strong>.<\/p>\n<blockquote><p>\u2705 <strong>FOLLOW(B) += FIRST(\u03b2) \u2013 { \u03b5 }<\/strong><\/p><\/blockquote>\n<hr \/>\n<h3>\ud83d\udd39 <strong>Rule 3: A \u2192 \u03b1B or A \u2192 \u03b1B\u03b2 where \u03b2 \u21d2 \u03b5 (Nullable)<\/strong><\/h3>\n<p>If B is at the <strong>end<\/strong>, or <strong>\u03b2 \u21d2 \u03b5<\/strong>, then<br \/>\n<strong>FOLLOW(B) += FOLLOW(A)<\/strong><\/p>\n<blockquote><p>\u2705 This is called <strong>&#8220;FOLLOW through FOLLOW&#8221;<\/strong><br \/>\n(when nothing follows B, or what follows is nullable)<\/p><\/blockquote>\n<hr \/>\n<h3>\ud83d\udd39 <strong>Rule 4: Keep Applying Until Stable<\/strong><\/h3>\n<p>Apply all above rules <strong>iteratively<\/strong> until no new symbols are added.<\/p>\n<hr \/>\n<h2>\ud83e\uddea <strong>Example Using Shortcut:<\/strong><\/h2>\n<p>Let\u2019s take a simple grammar:<\/p>\n<pre><code>S \u2192 A B  \nA \u2192 a | \u03b5  \nB \u2192 b\n<\/code><\/pre>\n<hr \/>\n<h3>\ud83d\udd0d Step-by-Step:<\/h3>\n<h4>\u27a4 FIRST Sets:<\/h4>\n<ul>\n<li>FIRST(A) = { a, \u03b5 }<\/li>\n<li>FIRST(B) = { b }<\/li>\n<\/ul>\n<hr \/>\n<h3>\ud83d\udd0e FOLLOW(S):<\/h3>\n<ul>\n<li>S is start symbol \u2192 FOLLOW(S) = { <code>$<\/code> }<\/li>\n<\/ul>\n<hr \/>\n<h3>\ud83d\udd0e FOLLOW(A):<\/h3>\n<p>S \u2192 A B<br \/>\n\u2192 A is followed by B \u2192 so:<\/p>\n<p>\u2705 FOLLOW(A) += FIRST(B) = { b }<\/p>\n<hr \/>\n<h3>\ud83d\udd0e FOLLOW(B):<\/h3>\n<p>S \u2192 A B \u2192 B is at end \u2192 FOLLOW(B) += FOLLOW(S) = { <code>$<\/code> }<\/p>\n<hr \/>\n<h3>\u2705 Final FOLLOW Sets:<\/h3>\n<table>\n<thead>\n<tr>\n<th>Non-terminal<\/th>\n<th>FOLLOW<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>S<\/td>\n<td>{ <code>$<\/code> }<\/td>\n<\/tr>\n<tr>\n<td>A<\/td>\n<td>{ b }<\/td>\n<\/tr>\n<tr>\n<td>B<\/td>\n<td>{ <code>$<\/code> }<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>\ud83d\udca1 <strong>Pro Tips:<\/strong><\/h2>\n<ul>\n<li>Always calculate <strong>FIRST sets first<\/strong> \u2014 they are used in FOLLOW computation.<\/li>\n<li>Don\u2019t forget to handle <strong>\u03b5 (epsilon)<\/strong> carefully.<\/li>\n<li>Keep applying rules until sets <strong>stop changing<\/strong> (fixpoint).<\/li>\n<\/ul>\n<hr \/>\n<p>Would you like:<\/p>\n<ul>\n<li>\ud83d\udcc4 PDF cheat sheet of FOLLOW &amp; FIRST shortcuts?<\/li>\n<li>\ud83c\udfa5 Animated YouTube script for this?<\/li>\n<li>\ud83e\uddea Practice problems with solutions?<\/li>\n<\/ul>\n<p>Let me know what you need next!<\/p>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/dpvipracollege.ac.in\/wp-content\/uploads\/2023\/01\/Modern.Compiler.Design.2nd.pdf\" target=\"_blank\" rel=\"noopener\">Short trick method to find Follow of any grammar- Compiler Design<\/a><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Short trick method to find Follow of any grammar- Compiler Design [fvplayer id=&#8221;128&#8243;] \u00a0Short Trick to Find FOLLOW of Any Grammar in Compiler Design\u00a0 In Compiler Design, the FOLLOW set of a non-terminal helps in parsing and syntax analysis. It determines the set of terminals that can appear immediately after a given non-terminal in the [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[86],"tags":[],"class_list":["post-2818","post","type-post","status-publish","format-standard","hentry","category-compiler-design"],"_links":{"self":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/comments?post=2818"}],"version-history":[{"count":0,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2818\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/media?parent=2818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/categories?post=2818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/tags?post=2818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}