package Compiler; import java.util.List; abstract class Statement { static class ExpressionStatement extends Statement{ ExpressionStatement(Expression expr){ this.expr = expr; } final Expression expr; @Override public String getStatmentType() { return "exprStmt"; } } static class IfStatement extends Statement{ IfStatement(Expression condition, List statements,List elseStatements){ this.condition=condition; this.statements=statements; this.elseStatements=elseStatements; } final Expression condition; final List statements; final List elseStatements; @Override public String getStatmentType() { return "ifStmt"; } } static class VariableDeclaration extends Statement{ VariableDeclaration(Token name){ this.name=name; } final Token name; @Override public String getStatmentType() { return "vardec"; } } static class PrintStatement extends Statement{ PrintStatement(Expression expr){ this.expr=expr; } final Expression expr; @Override public String getStatmentType() { return "print"; } } public abstract String getStatmentType(); }