CSE 6341 Project 1 skeleton code
interpreter/Interpreter.java
public class Interpreter {
public static final int EXIT_SUCCESS = 0;
public static final int EXIT_PARSING_ERROR = 1;
public static final int EXIT_STATIC_CHECKING_ERROR = 2;
public static void main(String[] args) {
String filename = args[0];
Program astRoot = null; // will refer to the AST root node after parsing
// invoke the parser here
astRoot.print(System.out); // for debugging
// TODO: type checking - for example, by calling astRoot.check() }
public static void fatalError(String message, int processReturnCode) { ... } }
ast/Program.java
public class Program extends ASTNode {
public final UnitList unitList;
public Program(UnitList ul) { ... } // constructor; used by the parser; do not modify
public void print(PrintStream ps) { unitList.print(ps); } } // pretty printing of the program
ast/UnitList.java
public class UnitList extends ASTNode {
public final Unit unit;
public final UnitList unitList;
public UnitList(Unit u, UnitList ul) { ... } // constructor; used by the parser; do not modify
public UnitList(Unit u) { ... } // constructor; used by the parser; do not modify
public void print(PrintStream ps) {
unit.print(ps); ps.println();
if (unitList != null) unitList.print(ps); } }
ast/Unit.java
public abstract class Unit extends ASTNode { }
// subclasses of Unit: Decl, Stmt (abstract)
// subclasses of Stmt: AssignStmt, PrintStmt
ast/Decl.java
public class Decl extends Unit {
public final VarDecl varDecl;
public final Expr expr; ... }