1. Develop Java programs to do the following tasks:
a. Building an NFA from a given regular expression.
b. Converting a giving NFA into a DFA.
c. Building a DFA from a given regular expression directly without going through an NFA.
2. For the following grammar write a Java program that uses the LR(1) method to decide whether a given string can be derived in the grammar. If the sentence is derivable, your program should output the derivation of the sentence.
S’ → S
1) S → L=R
2) S → R
3) L→ *R
4) L → id
5) R → L
3. Write an implementation for 5 type system rules included in the type checking slides.