public class SlogoIDE extends Application { public void start(Stage stage) } package controller; public class SlogoController { public SlogoController(Stage stage) public void runProgram(String program) public void updateAllStages() public void uploadProgram() public void downloadProgram(String program) public void openUserPreferenceView(Color canvasColor, Color penColor) public void openHistoryView() public void uploadTurtleImage() public SlogoDisplayContent getDisplayContent() public List getProgramHistory() public void updateCanvasColor(Color color) public void updatePenColor(Color color) public Map getUserVariables() public void updateAllThemes(String newValue) public void updateLanguage(String newValue) } package controller; public class SlogoFileHandler { public SlogoFileHandler(String extensionAccepted, String dataFolder) public String uploadSlogoProgramFromFile(File file) public void downloadSlogoProgramToFile(String program) public File openFileLoader() public InputStream uploadTurtleImageFromFile(File file) } package model.file; public class SlogoProperties { public static String getText(String text) public static double getAsDouble(String text) public static int getAsInteger(String text) } package model.file; public class XmlUtils { public static Document readResourceFile(String filePath) public static List getTextValue(Element e, String tagName) } package model.file; public class CommandFileReader { public static List readCommands(String language) } package model.file; public class FileReadException extends RuntimeException { public FileReadException(String message) public FileReadException(String message, Throwable cause) public FileReadException(Exception e) } package model.file; public class PropertiesUtils { public static ResourceBundle readResourceFile(String filePath) } package model.file; public class FileCommandDatabase implements CommandDatabase { public FileCommandDatabase(String language) public Command getCommand(String command) public boolean hasCommand(String command) public void addAllCommands(List commands) public void addCommand(Command command) } package model.file; public interface CommandDatabase { Command getCommand(String command); boolean hasCommand(String command); void addAllCommands(List commands); void addCommand(Command command); } package model.file; public class Language { public Language(String language) throws FileReadException public String getText(String text) } package model; public class SlogoExecutionException extends RuntimeException { public SlogoExecutionException(String message) public SlogoExecutionException(TextPosition position, String message) public Optional getPosition() } package model; public class Context { public static final Position DEFAULT_TURTLE_POSITION public Context(CommandDatabase commandDatabase) public Random getRandom() public AstPrimitive getVariable(String name) public void setVariable(String name, AstPrimitive value) public Command getCommand(String name) public Map getVariableMap() public void setCommand(String name, Command command) public void addLine(SlogoLine line) public List getLines() public SlogoTurtle getTurtle() public void setTurtlePosition(Position position) public void setTurtleHeading(double heading) public void setTurtleVisibility(boolean visibility) public void wait(double waitTime) public boolean getPenDown() public void setPenDown(boolean penDown) public List getKeyframes() public SlogoDisplayContent getCurrentContent() public void clearScreen() } package model.parse; public class Parser { public Parser(CommandDatabase commandDatabase) public AstExp parse(List tokens) throws SlogoExecutionException protected AstExp parseProgram(TokenList tokens) protected AstExp parseCommand(TokenList tokens) protected AstExp parseArgument(TokenList tokens) protected AstExp parseValueList(TokenList tokens) protected AstExp parseValue(TokenList tokens) protected AstExp parseExecutableList(TokenList tokens) protected AstExp parseVariable(TokenList tokens) protected AstExp parseNumber(TokenList tokens) protected List parseList(TokenList tokens, ParseFunction function) protected List parseSeq(TokenList tokens, ParseFunction... functions) protected AstExp parseOr(TokenList tokens, ParseFunction... functions) protected List parsePlus(TokenList tokens, ParseFunction f) protected List parseStar(TokenList tokens, ParseFunction f) protected Token parseToken(TokenList tokenList, TokenType expectedTokenType) protected Optional tryParse(TokenList tokenList, ParseFunction f) } package model.parse; public class TokenList { } package model.parse; public class Lexer { public List lex(String program) throws SlogoExecutionException public boolean matches(String str) public record Token(TokenType type, TextPosition position, String text) public String toString() public boolean equals(Object o) public int hashCode() } package model.parse; public class CriticalParseException extends SlogoExecutionException { public CriticalParseException(TextPosition position, String message) } package model; public class Interpreter { public Interpreter(CommandDatabase commandDatabase) public Context run(String programText) throws SlogoExecutionException public Context appendAndRun(String programText) throws SlogoExecutionException } package model.ast; public class AstNumber extends AstPrimitive { public AstNumber(double value) public AstNumber(TextPosition position, double value) public double getValue() public String toString() public boolean equals(Object o) public int hashCode() } package model.ast; public class AstNull extends AstNumber { public AstNull() } package model.ast; public class AstExecutableList extends AstExp { public AstExecutableList(AstExp... expressions) public AstExecutableList(TextPosition position, AstExp... expressions) public AstPrimitive execute(Context context) throws SlogoExecutionException public boolean equals(Object o) public int hashCode() } package model.ast; public class AstValueList extends AstPrimitive { public AstValueList(AstExp... values) public AstValueList(TextPosition position, AstExp... values) public List getValues() public String toString() public boolean equals(Object o) public int hashCode() } package model.ast; public class AstVariable extends AstExp { public AstVariable(String name) public AstVariable(TextPosition position, String name) public String getName() public AstPrimitive execute(Context context) throws SlogoExecutionException public boolean equals(Object o) public int hashCode() } package model.ast; public abstract class AstPrimitive extends AstExp { protected AstPrimitive() protected AstPrimitive(TextPosition position) public AstPrimitive execute(Context context) throws SlogoExecutionException public abstract String toString(); } package model.ast; public class AstCommandArgument extends AstExp { public AstCommandArgument(String name) public String getCommandName() public AstPrimitive execute(Context context) throws SlogoExecutionException public String toString() public boolean equals(Object o) public int hashCode() } package model.ast; public class AstCommand extends AstExp { public AstCommand(String commandName, AstExp... arguments) public AstCommand(TextPosition position, String commandName, AstExp... arguments) public String getCommandName() public List getArguments() public AstPrimitive execute(Context context) throws SlogoExecutionException public boolean equals(Object o) public int hashCode() } package model.ast; public abstract class AstExp { protected AstExp() protected AstExp(TextPosition position) public final Optional getPosition() public abstract AstPrimitive execute(Context context) throws SlogoExecutionException; public abstract boolean equals(Object obj); public abstract int hashCode(); protected SlogoExecutionException makeExecutionException(String message) throws SlogoExecutionException public double asDouble() throws SlogoExecutionException public List asValueList() throws SlogoExecutionException public String asVariable() throws SlogoExecutionException public AstCommand asCommand() throws SlogoExecutionException public String asCommandArgument() throws SlogoExecutionException public int asInt() throws SlogoExecutionException public static Expression getType(AstExp exp) public String toString() } package model.commands; public class XCor extends CommandFunction { public XCor() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Tangent extends CommandFunction { public Tangent() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Quotient extends CommandFunction { public Quotient() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Pi extends CommandFunction { public Pi() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Home extends CommandFunction { public Home() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Less extends CommandFunction { public Less() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class CommandException extends RuntimeException { } package model.commands; public class Heading extends CommandFunction { public Heading() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Product extends CommandFunction { public Product() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Remainder extends CommandFunction { public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class YCor extends CommandFunction { public YCor() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Towards extends CommandFunction { public Towards() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Right extends CommandFunction { public Right() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Repeat extends CommandFunction { public Repeat() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class ShowingP extends CommandFunction { public ShowingP() public AstPrimitive execute( } package model.commands; public class SquareRoot extends CommandFunction { public SquareRoot() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class PenUp extends CommandFunction { public PenUp() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Difference extends CommandFunction { public Difference() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class ArcTangent extends CommandFunction { public ArcTangent() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Back extends CommandFunction { public Back() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class To extends CommandFunction { public To() public AstPrimitive execute(Context context, AstExp... arguments) public void parseHook(AstCommand thisCommand, public UserCommand(List variables, AstExp commandExp) public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public abstract class CommandFunction { protected CommandFunction(int numArguments) public abstract AstPrimitive execute(Context context, AstExp... arguments) public void parseHook(AstCommand thisCommand, CommandDatabase commandDatabase) public int numberOfArguments() } package model.commands; public class Sum extends CommandFunction { public Sum() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class SetHeading extends CommandFunction { public SetHeading() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class RandomRange extends CommandFunction { public RandomRange() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Cosine extends CommandFunction { public Cosine() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class And extends CommandFunction { public And() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class NotEqual extends CommandFunction { public NotEqual() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class PenDownP extends CommandFunction { public PenDownP() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Forward extends CommandFunction { public Forward() public AstPrimitive execute(Context context, AstExp... arguments) public Position getNewLocation(double forwardMovement, Position currentLocation, double degrees) } package model.commands; public class Greater extends CommandFunction { public Greater() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Left extends CommandFunction { public Left() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class GreaterEqual extends CommandFunction { public GreaterEqual() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Log extends CommandFunction { public Log() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Sine extends CommandFunction { public Sine() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Power extends CommandFunction { public Power() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Minus extends CommandFunction { public Minus() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Not extends CommandFunction { public Not() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class DoTimes extends CommandFunction { public DoTimes() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class SetXY extends CommandFunction { public SetXY() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class PenDown extends CommandFunction { public PenDown() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Make extends CommandFunction { public Make() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class ShowTurtle extends CommandFunction { public ShowTurtle() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class IfElse extends CommandFunction { public IfElse() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Rand extends CommandFunction { public Rand() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class LessEqual extends CommandFunction { public LessEqual() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class If extends CommandFunction { public If() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Equal extends CommandFunction { public Equal() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class ClearScreen extends CommandFunction { public ClearScreen() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class Or extends CommandFunction { public Or() public AstPrimitive execute(Context context, AstExp... arguments) } package model.commands; public class HideTurtle extends CommandFunction { public HideTurtle() public AstPrimitive execute( } package model.commands; public class For extends CommandFunction { public For() public AstPrimitive execute(Context context, AstExp... arguments) } package view; public interface UpdatableView { public abstract Scene updateScene(); } package view; public class SlogoErrorView extends View{ public SlogoErrorView(SlogoController controller) public Scene makeScene() public Scene showMessage(String error) } package view; public class SlogoMainView extends View { public SlogoMainView(SlogoController controller) public Scene makeScene() public void updateProgram(String program) public void updateTurtleImage(InputStream stream) public void updateCanvasColor(Color color) public void updatePenColor(Color color) public void updateTheme(String stylesheet) public void updateCanvas(Position turtlePosition, double turtleHeading, List lines) public void updateUserDefinitionPanel() } package view; public class SlogoHistoryView extends View implements UpdatableView { public SlogoHistoryView(SlogoController controller) public Scene makeScene() public Scene updateScene() public void updateTheme(String stylesheet) } package view; public abstract class View { protected View(SlogoController controller) public abstract Scene makeScene(); protected void setTheme(Scene scene, String stylesheet) protected Node setId(String id, Node node) protected Pane setId(String id, Pane pane) protected int getResourceNumber(String key) throws InputMismatchException protected String getResourceString(String key) throws InputMismatchException protected SlogoController getController() } package view; public class SlogoUserPreferenceView extends View { public SlogoUserPreferenceView(SlogoController controller, Color canvasColor, Color penColor) public Scene makeScene() public void updateTheme(String stylesheet) }