I need help with my Optimizing the intermediate code to improve the efficiency of the generated machine code. I need to improve the effixiency of the generated machine code  import java.util.*;   public class SimpleCalculator {   private final String input; private int position; private boolean hasDivByZero = false; private Map symbolTable; private List instructions;   public SimpleCalculator(String input) { this.input = input; this.position = 0; this.symbolTable = new HashMap<>(); this.instructions = new ArrayList<>(); }   public static void main(String[] args) { SimpleCalculator calculator = new SimpleCalculator("3 + 5 * (2 - 1)"); calculator.parseExpression(); if (calculator.hasDivByZero) { System.out.println("Error: division by zero"); } else { System.out.println("Result: " + calculator.instructions); } }   public void parseExpression() { String t1 = parseTerm(); while (true) { String op = null; if (consume('+')) { op = "+"; } else if (consume('-')) { op = "-"; } else { break; } String t2 = parseTerm(); String result = newTemp(); emit(result + " = " + t1 + " " + op + " " + t2); t1 = result; } }   public String parseTerm() { String t1 = parseFactor(); while (true) { String op = null; if (consume('*')) { op = "*"; } else if (consume('/')) { op = "/"; } else { break; } String t2 = parseFactor(); if (op.equals("/") && t2.equals("0")) { hasDivByZero = true; break; } String result = newTemp(); emit(result + " = " + t1 + " " + op + " " + t2); t1 = result; } return t1; }   public String parseFactor() { if (consume('(')) { String result = parseExpression(); consume(')'); return result; } StringBuilder sb = new StringBuilder(); while (Character.isDigit(peek())) { sb.append(consume()); } String variable = sb.toString(); if (symbolTable.containsKey(variable)) { String type = symbolTable.get(variable); if (!type.equals("int")) { System.out.println("Error: " + variable + " is not an integer"); } } else { System.out.println("Error: " + variable + " is not defined"); } return variable; }   private String newTemp() { String temp = "t" + (instructions.size() + 1); symbolTable.put(temp, "int"); return temp; }   private void emit(String instruction) { instructions.add(instruction); }   private char consume() { return input.charAt(position++); }   private boolean consume(char c) { if (peek() == c) { position++; return true; } return false; }   private char peek() { return position < input.length() ? input.charAt(position) : '\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

I need help with my Optimizing the intermediate code to improve the efficiency of the generated machine code.

I need to improve the effixiency of the generated machine code 

import java.util.*;

 

public class SimpleCalculator {

 

private final String input;

private int position;

private boolean hasDivByZero = false;

private Map<String, String> symbolTable;

private List<String> instructions;

 

public SimpleCalculator(String input) {

this.input = input;

this.position = 0;

this.symbolTable = new HashMap<>();

this.instructions = new ArrayList<>();

}

 

public static void main(String[] args) {

SimpleCalculator calculator = new SimpleCalculator("3 + 5 * (2 - 1)");

calculator.parseExpression();

if (calculator.hasDivByZero) {

System.out.println("Error: division by zero");

} else {

System.out.println("Result: " + calculator.instructions);

}

}

 

public void parseExpression() {

String t1 = parseTerm();

while (true) {

String op = null;

if (consume('+')) {

op = "+";

} else if (consume('-')) {

op = "-";

} else {

break;

}

String t2 = parseTerm();

String result = newTemp();

emit(result + " = " + t1 + " " + op + " " + t2);

t1 = result;

}

}

 

public String parseTerm() {

String t1 = parseFactor();

while (true) {

String op = null;

if (consume('*')) {

op = "*";

} else if (consume('/')) {

op = "/";

} else {

break;

}

String t2 = parseFactor();

if (op.equals("/") && t2.equals("0")) {

hasDivByZero = true;

break;

}

String result = newTemp();

emit(result + " = " + t1 + " " + op + " " + t2);

t1 = result;

}

return t1;

}

 

public String parseFactor() {

if (consume('(')) {

String result = parseExpression();

consume(')');

return result;

}

StringBuilder sb = new StringBuilder();

while (Character.isDigit(peek())) {

sb.append(consume());

}

String variable = sb.toString();

if (symbolTable.containsKey(variable)) {

String type = symbolTable.get(variable);

if (!type.equals("int")) {

System.out.println("Error: " + variable + " is not an integer");

}

} else {

System.out.println("Error: " + variable + " is not defined");

}

return variable;

}

 

private String newTemp() {

String temp = "t" + (instructions.size() + 1);

symbolTable.put(temp, "int");

return temp;

}

 

private void emit(String instruction) {

instructions.add(instruction);

}

 

private char consume() {

return input.charAt(position++);

}

 

private boolean consume(char c) {

if (peek() == c) {

position++;

return true;

}

return false;

}

 

private char peek() {

return position < input.length() ? input.charAt(position) : '\0';

}

}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps

Blurred answer
Knowledge Booster
Arrays
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
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