Given the following grammar:
S -> aB | b | cC
B -> aB | bS
C -> aaS | b | caB
Question 1) Perform the pairwise disjointness test for each rule to show that this grammar allows top-down parsing.
Question 2) Write a recursive descent parser for this grammar in Java. Submit the source code of your parser (including the very simple lexer for this grammar). The main method will ask the user for a string and will attempt to parse it, displaying the result of this attempt and all the steps followed. Report all syntax errors.
Question 3) Verify that the following string is recognized: caaabccabb.
Solve these questions and show each and every step in detail.