Question: regular grammar for this code : public class RecursiveDescentParser { private String input; private int index; private char inputSymbol; public RecursiveDescentParser ( String input )

regular grammar for this code :
public class RecursiveDescentParser {
private String input;
private int index;
private char inputSymbol;
public RecursiveDescentParser(String input){
this.input = input;
this.index =0;
this.inputSymbol = input.charAt(index);
}
private void nextToken(){
index++;
if (index < input.length()){
inputSymbol = input.charAt(index);
} else {
inputSymbol ='\0';
}
}
private void expected(char token){
if (inputSymbol == token){
nextToken();
} else {
throwError("Unexpected symbol: "+ inputSymbol);
}
}
private void throwError(String errorMessage){
throw new RuntimeException("Parsing error: "+errorMessage);
}
// E TE'
public void parseE(){
parseT();
parseEPrime();
}
// E'+TE'|-TE'|
private void parseEPrime(){
if (inputSymbol =='+'){
expected('+');
parseT();
parseEPrime();
} else if (inputSymbol =='-'){
expected('-');
parseT();
parseEPrime();
}
}
// T FT'
private void parseT(){
parseF();
parseTPrime();
}
// T'*FT'|/FT'|
private void parseTPrime(){
if (inputSymbol =='*'){
expected('*');
parseF();
parseTPrime();
} else if (inputSymbol =='/'){
expected('/');
parseF();
parseTPrime();
}
}
// F (E)| id
private void parseF(){
if (Character.isDigit(inputSymbol)){// Check if it's a digit
parseNumber();
} else if (inputSymbol =='('){
expected('(');
parseE();
if (inputSymbol ==')'){
expected(')');
} else {
throwError("')' expected");
}
} else {
throwError("Unexpected symbol: "+ inputSymbol);
}
}
// Method to parse a number
private void parseNumber(){
while (Character.isDigit(inputSymbol)){
nextToken();
}
}
public static void main(String[] args){
String input1="(3+5-4)*2/1";
String input2="(3+-5)*2";
RecursiveDescentParser parser1= new RecursiveDescentParser(input1);
RecursiveDescentParser parser2= new RecursiveDescentParser(input2);
try {
parser1.parseE();
System.out.println("Parser1 is successful!");
} catch (RuntimeException e){
System.out.println(e.getMessage());
}
try {
parser2.parseE();
System.out.println(" and Parser2 is successful!");
} catch (RuntimeException e){
System.out.println(e.getMessage());
}
}
}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!