I'm studying (for self-betterment - I don't go to school) the 2nd edition of Compilers: Principles, Techniques and Tools by Aho et al. I'm not sure how to do Exercise 2.4.1 (b), which is to construct a recursive-descent parser, starting with the grammar:
$S\to S(S)S \mid \epsilon$.
It seem to me that the simpler grammar
$S\to (S)S \mid \epsilon$
can generate the same language as the given grammar, and if that's the case, I can construct a parser for it in a similar manner to the example that was shown in the previous section, without difficulty. Is that the right approach? (Keep in mind that I'm only in chapter 2, at around page 70 of this 1000+ page book, so the solution shouldn't be too "advanced".)