nswer the given question with a proper explanation and step-by-step solution. Hello team,   Need some help with problems below using the langauge JAVA.     I need to modify the CalcParser class provided below. I need this to produce a string containing commands to evaluate the expression on a stack machine. For example, if you give the command java CalcParser 1+2*3, the output should be a sequence of stack commands such as this: push 1.0 push 2.0

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Answer the given question with a proper explanation and step-by-step solution.

Hello team,

 

Need some help with problems below using the langauge JAVA.

 

 

I need to modify the CalcParser class provided below. I need this to produce a string containing commands to evaluate the expression on a stack machine. For example, if you give the command java CalcParser 1+2*3, the output should be a sequence of stack commands such as this:

push 1.0

push 2.0

push 3.0

multiply

add

7.0

For the command java CalcParser (1+2)*3, on the other hand, it should print a sequence like this:

push 1.0

push 2.0

add

push 3.0

multiply

9.0

CODE:


public class CalcParser {


private CalcLexer lexer;


private String errorMessage = null;


private double value;


public CalcParser(String s) {

lexer = new CalcLexer(s);
errorMessage = lexer.getErrorMessage();
if (errorMessage != null) return;

value = parseExpression();
if (errorMessage != null) return;

match(CalcLexer.EOLN_TOKEN);
if (errorMessage != null) return;

}


public String getErrorMessage() {
return errorMessage;
}


public String getValue() {
return Double.toString(value);
}


private void match(int token) {

if (lexer.nextToken() != token) {
if (token == CalcLexer.EOLN_TOKEN)
errorMessage =
"Unexpected text after the expression.";
else if (token == CalcLexer.NUMBER_TOKEN)
errorMessage = "Expected a number.";
else errorMessage =
"Expected a " + ((char) token) + ".";
return;
}

lexer.advance();
errorMessage = lexer.getErrorMessage();
}


private double parseExpression() {

double result = parseMulexp();
if (errorMessage != null) return result;

while (true) {
if (lexer.nextToken() == '+') {
match('+');
if (errorMessage != null) return result;
result += parseMulexp();
if (errorMessage != null) return result;
}
else if (lexer.nextToken() == '-') {
match('-');
if (errorMessage != null) return result;
result -= parseMulexp();
if (errorMessage != null) return result;
}
else return result;
}
}



private double parseMulexp() {

double result = parseRootexp();
if (errorMessage != null) return result;

while (true) {
if (lexer.nextToken() == '*') {
match('*');
if (errorMessage != null) return result;
result *= parseRootexp();
if (errorMessage != null) return result;
}
else if (lexer.nextToken() == '/') {
match('/');
if (errorMessage != null) return result;
result /= parseRootexp();
if (errorMessage != null) return result;
}
else return result;
}
}


private double parseRootexp() {
double result = 0.0;

if (lexer.nextToken() == '(') {
match('(');
if (errorMessage != null) return result;
result = parseExpression();
if (errorMessage != null) return result;
match(')');
if (errorMessage != null) return result;
}

else if (lexer.nextToken()==CalcLexer.NUMBER_TOKEN){
result = lexer.getNum();
if (errorMessage != null) return result;
match(CalcLexer.NUMBER_TOKEN);
if (errorMessage != null) return result;
}

else {
errorMessage =
"Expected a number or a parenthesis.";
}

return result;
}

}

 

Thank you in advance!

Expert Solution
steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Stack
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education