I need help with my java compiler program by Generating intermediate code from the AST

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 java compiler program by Generating intermediate code from the AST, such as three-address code or bytecode

import java.util.*;

public class SimpleCalculator {

private final String input;
private int position;
private boolean hasDivByZero = false;
private Map<String, String> symbolTable;

public SimpleCalculator(String input) {
    this.input = input;
    this.position = 0;
    this.symbolTable = new HashMap<>();
}

public static void main(String[] args) {
    SimpleCalculator calculator = new SimpleCalculator("3 + 5 * (2 - 1)");
    int result = calculator.parseExpression();
    if (calculator.hasDivByZero) {
        System.out.println("Error: division by zero");
    } else {
        System.out.println("Result: " + result);
    }
}

public int parseExpression() {
    int value = parseTerm();
    while (true) {
        if (consume('+')) {
            value += parseTerm();
        } else if (consume('-')) {
            value -= parseTerm();
        } else {
            break;
        }
    }
    return value;
}

public int parseTerm() {
    int value = parseFactor();
    while (true) {
        if (consume('*')) {
            value *= parseFactor();
        } else if (consume('/')) {
            int divisor = parseFactor();
            if (divisor == 0) {
                hasDivByZero = true;
                break;
            }
            value /= divisor;
        } else {
            break;
        }
    }
    return value;
}

public int parseFactor() {
    if (consume('(')) {
        int value = parseExpression();
        consume(')');
        return value;
    }
    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 Integer.parseInt(variable);
}

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';
}
}

please make sure the program runs properly and post the results

Expert Solution
steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Top down approach design
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