Given the following grammar:
- S -> A
- A -> AB
- A -> ϵ
- B -> aB
- B -> b
Check whether it is CLR(1) or not.
I have drawn the canonical itemsets as well as the parse table. But I'm not sure whether it is actually correct or not. I have tried searching for some similar examples that have epsilon productions but could not find any. Could someone please help me out?

The initial state of your parser is
I0, and$is the only lookahead-terminal for whichI0has an action. So if the input is anything other than the empty string, your parser will raise an error. But the grammar has non-empty strings in its language. So this can't be a correct parser for the grammar.I think your main mistake is in propagating lookaheads. For example, when you close
A -> .AB, $, you need to addA -> .whateveritems with lookaheads equal to each terminal inFIRST(B$), and you haven't done that.