How to treat $\epsilon$ and '\$' in top-down parser using predict table?
The construction of the predict table
Given a product $X \rightarrow w$, row $X$ and column $t$
-Mark $X \rightarrow w$ for each $t \in FIRST(w)$
-If $NULLABLE(w)$, then mark $X \rightarrow w$ for each $t \in FOLLOW(w)$ as well
says to create columns for all terminal symbols. $\epsilon$ is a terminal symbol so it's naturally added as a column.
However, I've somehow interpreted that I could/should add '\$' as a terminal symbol as well. Basically because '\$' is used in the FOLLOW sets (and the FOLLOW sets don't contain $\epsilon$).
But does this create redundancy since then the table would hold basically the same predict rules for '\$' and $\epsilon$ (at least in the implementation I have here)?
The rules given here also treat '\$' and $\epsilon$ as if they were separate:
The FOLLOW sets basically use '\$' in place of $\epsilon$, but the predict table uses $\epsilon$, because it's a terminal symbol.