package back_end.controller; public class ModelController { public ModelController() public void userInputToModel(String aString) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException, UnexpectedCharacterException, UnexpectedCommandException, EmptyInputException public void giveRobotObservers(IRobotObserver ro) public void giveVariableObservers(IRobotObserver ro) public IViewVariableState getVariableMap() public IViewRobot giveRobotView() public void setLanguage(Languages aLanguage) } package back_end.model.command; public class AndCommand implements ICommand { public AndCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class ArcTangentCommand implements ICommand { public ArcTangentCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class BackwardCommand extends MovementCommand { public BackwardCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class ClearScreenCommand extends HomeCommand { public ClearScreenCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class CosineCommand implements ICommand { public CosineCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class CustomCommand implements ICommandBranch { public CustomCommand(Scope aScope, String aName) public double eval(IReadableInput... aList) public int evalCondition(IReadableInput... aList) public void setScope() public void resetScope() public IReadableInput getFunction() } package back_end.model.command; public class DifferenceCommand implements ICommand { public DifferenceCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class DoTimesCommand implements ICommandBranch { public DoTimesCommand (Scope aScope) public int evalCondition (IReadableInput ... aList) public double eval (IReadableInput ... aList) } package back_end.model.command; public class EqualCommand implements ICommand { public EqualCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class ForCommand implements ICommandBranch { public ForCommand (Scope aScope) public int evalCondition (IReadableInput ... aList) public double eval (IReadableInput ... aList) } package back_end.model.command; public class ForwardCommand extends MovementCommand { public ForwardCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class GreaterThanCommand implements ICommand { public GreaterThanCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class HeadingCommand implements ICommand { public HeadingCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class HideTurtleCommand implements ICommand { public HideTurtleCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class HomeCommand extends SetPositionCommand { public HomeCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public interface ICommand { public double eval (IReadableInput ... aList); } package back_end.model.command; public interface ICommandBranch extends ICommand { public double eval (IReadableInput ... aList); public int evalCondition (IReadableInput ... aList); } package back_end.model.command; public class IfCommand implements ICommandBranch { public IfCommand (Scope aScope) public int evalCondition (IReadableInput ... aList) public double eval (IReadableInput ... aList) } package back_end.model.command; public class IfElseCommand extends IfCommand { public IfElseCommand (Scope aScope) public int evalCondition (IReadableInput ... aList) public double eval (IReadableInput ... aList) } package back_end.model.command; public class IsPenDownCommand implements ICommand { public IsPenDownCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class IsShowingCommand implements ICommand { public IsShowingCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class LeftCommand extends RotationCommand { public LeftCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class LessThanCommand implements ICommand { public LessThanCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class MakeUserInstructionCommand implements ICommand { public MakeUserInstructionCommand(Scope aScope, String aName) public double eval(IReadableInput... aList) } package back_end.model.command; public class MakeVariableCommand implements ICommand { public MakeVariableCommand (Scope aScope) public double eval (IReadableInput ... aList) } package back_end.model.command; public class MinusCommand implements ICommand { public MinusCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public abstract class MovementCommand implements ICommand { public MovementCommand (Robot aRobot) public Point getXYCoordinate (IReadableInput ... aList) } package back_end.model.command; public class NaturalLogCommand implements ICommand { public NaturalLogCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class NotCommand implements ICommand { public NotCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class NotEqualCommand implements ICommand { public NotEqualCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class OrCommand implements ICommand { public OrCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class PenDownCommand implements ICommand { public PenDownCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class PenUpCommand implements ICommand { public PenUpCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class PiCommand implements ICommand { public PiCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class PowerCommand implements ICommand { public PowerCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class ProductCommand implements ICommand { public ProductCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class QuotientCommand implements ICommand { public QuotientCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class RandomCommand implements ICommand { public RandomCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class RemainderCommand implements ICommand { public double eval (IReadableInput ... aList) } package back_end.model.command; public class RepeatCommand implements ICommandBranch { public RepeatCommand (Scope aScope) public int evalCondition (IReadableInput ... aList) public double eval (IReadableInput ... aList) } package back_end.model.command; public class RightCommand extends RotationCommand { public RightCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public abstract class RotationCommand implements ICommand { public RotationCommand (Robot aRobot) public double getRotation (IReadableInput ... aList) } package back_end.model.command; public class SetHeadingCommand extends RotationCommand { public SetHeadingCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class SetPositionCommand implements ICommand { public SetPositionCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class SetTowardsCommand implements ICommand { public SetTowardsCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class ShowTurtleCommand implements ICommand { public ShowTurtleCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class SineCommand implements ICommand { public SineCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class SumCommand implements ICommand { public SumCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class TangentCommand implements ICommand { public TangentCommand () public double eval (IReadableInput ... aList) } package back_end.model.command; public class XCoordinateCommand implements ICommand { public XCoordinateCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.command; public class YCoordinateCommand implements ICommand { public YCoordinateCommand (Robot aRobot) public double eval (IReadableInput ... aList) } package back_end.model.exception; public class ArgumentException extends Exception { public ArgumentException () public ArgumentException (String message) public ArgumentException (Throwable cause) public ArgumentException (String message, Throwable cause) } package back_end.model.exception; public class EmptyInputException extends Exception { public EmptyInputException () public EmptyInputException (String message) public EmptyInputException (Throwable cause) public EmptyInputException (String message, Throwable cause) } package back_end.model.exception; public class UnexpectedCharacterException extends Exception { public UnexpectedCharacterException () public UnexpectedCharacterException (String message) public UnexpectedCharacterException (Throwable cause) public UnexpectedCharacterException (String message, Throwable cause) } package back_end.model.exception; public class UnexpectedCommandException extends Exception { public UnexpectedCommandException () public UnexpectedCommandException (String message) public UnexpectedCommandException (Throwable cause) public UnexpectedCommandException (String message, Throwable cause) } package back_end.model.node; public class AssignmentNode extends Node { public AssignmentNode () public double eval () throws ArgumentException public String getName () public double getValue () } package back_end.model.node; public class BeginBraceNode extends Node { public BeginBraceNode () public double eval () throws ArgumentException public String getName () public double getValue () } package back_end.model.node; public class BranchNode extends Node { public BranchNode (ICommandBranch aCommand, int aNumberOfInputs, Scope aScope) public int getNumberOfInputs () public NodeState getEvaluationState () public void setEvaluationState (NodeState aNodeState) public double eval () throws ArgumentException public int evalCondition () public int getConditionEvaluation () public String getName () public double getValue () public List getChildren () public void addChild (Node aNode) public void addConditions (Node aNode) public void addBranchChildren (int aBranchId, ListNode aListNode) public void unmarkAllChildren () } package back_end.model.node; public class CommandNode extends Node { public CommandNode (ICommand aCommand, int aNumberOfInputs, Scope aScope) public double eval () throws ArgumentException public int getNumberOfInputs () public String getName () public double getValue () } package back_end.model.node; public class ConstantNode extends ValueNode { public ConstantNode (double aValue) public double eval () throws ArgumentException public int getNumberOfInputs () public String getName () public double getValue () } package back_end.model.node; public class CustomNode extends Node { public CustomNode(CustomCommand aCommand, int aNumberOfInputs, Scope aScope) public int getNumberOfInputs() public double eval() throws ArgumentException public void evalInputs() public String getName () public double getValue() public List getChildren() public void addChildInputs(ListNode aInputs) public List getChildInputs() public List getFunction() public void setEvaluationState(NodeState aState) public NodeState getEvaluationState() public void unmarkCustomChildren() } package back_end.model.node; public class EndBraceNode extends Node { public EndBraceNode () public double eval () throws ArgumentException public String getName () public double getValue () } package back_end.model.node; public interface IReadableInput { public String getName (); public double getValue (); } package back_end.model.node; public class ListNode extends Node { public ListNode () public String getName () public double getValue () public double eval () throws ArgumentException } package back_end.model.node; public abstract class Node implements IReadableInput { public List getChildren () public void addChild (Node aNode) public NodeState getState () public void setState (NodeState aNodeState) public abstract double eval () throws ArgumentException; } package back_end.model.node; public class NullNode extends Node { public NullNode () public String getName () public double getValue () public double eval () throws ArgumentException } package back_end.model.node; public class ToNode extends Node { public ToNode(ICommand aMethod, int aNumberOfInputs, Scope aScope) public int getNumberOfInputs() public void addNameNode(VariableNode aNode) public void addInputVariables(ListNode aListNode) public void addCustomMethod(ListNode aListNode) public String getName() public double getValue() public double eval() throws ArgumentException } package back_end.model.node; public class ValueNode extends Node { public ValueNode () public String getName () public double getValue () public double eval () throws ArgumentException } package back_end.model.node; public class VariableNode extends ValueNode { public VariableNode (String aVariable, Scope aScope) public double eval () throws ArgumentException public int getNumberOfInputs () public String getName () public double getValue () } package back_end.model.robot; public interface IViewRobot { public double getX (); public double getY (); public double getRotation (); public boolean isPenDown (); public boolean isVisible (); } package back_end.model.robot; public interface Robot { public void setX (double x); public void setY (double y); public void setRotation (double r); public void setPenDown (boolean t); public void setVisible (boolean t); public double getX (); public double getY (); public double getRotation (); public boolean isPenDown (); public boolean isVisible (); } package back_end.model.robot; public class Turtle implements Robot, IViewRobot, IObservable { public Turtle () public void setX (double x) public void setY (double y) public void setRotation (double r) public void setPenDown (boolean t) public void setVisible (boolean t) public double getX () public double getY () public double getRotation () public boolean isPenDown () public boolean isVisible () public void registerObserver (IRobotObserver o) public void removeObserver (IRobotObserver o) public void notifyObservers () } package back_end.model.states; public interface IViewVariableState { public Collection getVariableKeySet (); public double getValue (String aVariable); } package back_end.model.states; public class MethodState { public MethodState() public void assignMethod(String aMethodName, IReadableInput aNode, IReadableInput...aVariableInputs) public IReadableInput[] getVariablesInMethod(String aMethodName) public int getNumberOfInputs(String aMethodName) public IReadableInput getFunction(String aMethodName) } package back_end.model.states; public class Scope implements IObservable { public Scope() public void swapScope(String aMethod) public VariableState getVariableMap() public boolean containsVariable(String name) public double getValue(String aVariable) public Collection getVariablesInScope() public void assignVariable(String aName, double aValue) public List getVariablesInMethod(String aMethodName) public IReadableInput getMethodToEvaluate(String aMethodName) public boolean containsMethod(String aMethod) public void assignMethod(String aMethod, IReadableInput aNode, IReadableInput...aVariableInputs) public void registerObserver(IRobotObserver o) public void removeObserver(IRobotObserver o) public void notifyObservers() } package back_end.model.states; public class VariableState implements IViewVariableState { public VariableState() public void assignVariable(String aVariable, double aValue) public double getValue(String aVariable) public boolean containsVariable(String aVariable) public Collection getVariableKeySet() } package back_end.model.syntax_tree; public class AbstractSyntaxTree { public AbstractSyntaxTree(Stack aNodeStack) public boolean hasNextInstruction() public void executeNextInstruction() throws ArgumentException } package back_end.model.text_parser; public class CommandFactory { public CommandFactory(Scope aScope, Robot aRobot) public ICommand makeCommand(String aWord, String command) throws UnexpectedCommandException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException } package back_end.model.text_parser; public class CommandTranslator { public CommandTranslator () public void addPatterns (String syntax) public String getSymbol (String text) } package back_end.model.text_parser; public class NodeFactory { public NodeFactory(ResourceBundle aResource, Scope aScope, Robot aRobot) public Node makeNode(String aWord) throws UnexpectedCharacterException, UnexpectedCommandException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException public void setLanguage (Languages aLanguage) } package back_end.model.text_parser; public class TextParser { public TextParser (Scope aScope, Robot aRobot) public Stack getNodeStack (String aString) throws InstantiationException, public void setLanguage (Languages aLanguage) } package front_end.applicationController; public class ApplicationController { public ApplicationController () public void init (int aWidth, int aHeight) public String getTitle () } package front_end.appScene; public class ApplicationScene { public ApplicationScene () public Scene initScene (int aWidth, int aHeight) } package front_end.appScene.errorViewer; public class ErrorViewerFactory { public static IErrorViewer buildErrorViewer (int aWidth, int aHeight, ITextEditor aTextEditor) } package front_end.appScene.errorViewer; public interface IErrorViewer extends IViewer { public void giveErrorStructure (Exception aError); public void onErrorPress (); } package front_end.appScene.helpPage; public class HelpPage { } package front_end.appScene; public interface IViewer { public void reset (); public Node getInstanceAsNode (); public void switchLanguage (Languages aLanguage); } package front_end.appScene.scriptViewer; public interface IScriptViewer extends IViewer { public void giveScriptStructure (); public void onScriptPress (); } package front_end.appScene.scriptViewer; public class ScriptViewerFactory { public static IScriptViewer buildViewerFactory (int aWidth, int aHeight) } package front_end.appScene.textEditor; public interface ITextEditor extends IViewer { public void highlightLine (Color color, int line); public List getInstructionList (); public void setInstructionList (List instructions); } package front_end.appScene.textEditor; public class TextEditorFactory { public static ITextEditor buildTextEditor (int aWidth, int aHeight) } package front_end.appScene.toolbar; public interface IToolbar extends IViewer { public void onBuildPress (EventHandler aEvent); public void onRunPress (EventHandler aEvent); public void onStepPress (EventHandler aEvent); public void onHelpPress (EventHandler aEvent); public void onResetPress (EventHandler aEvent); } package front_end.appScene.toolbar; public class ToolbarFactory { public static IToolbar buildToolbar (int aWidth, int aHeight) } package front_end.appScene.turtleBox; public interface ITurtleBox extends IViewer, IRobotObserver { } package front_end.appScene.turtleBox; public interface ITurtleMovement { } package front_end.appScene.turtleBox; public class TurtleBoxFactory { public static ITurtleBox buildTurtleBox (int aWidth, int aHeight) } package front_end.appScene.turtleBox; public class TurtleMovement implements ITurtleMovement { public TurtleMovement (ConcreteTurtleBox myConTurt, int width, int height) public void gameLoop () public void updateTurtle () } package front_end.appScene.variableViewer; public interface IVariableViewer extends IViewer { public void clear (); public Node getInstanceAsNode (); public void showVariables (IViewVariableState aVariableState); } package front_end.appScene.variableViewer; public class VariableViewerFactory { public static IVariableViewer buildVariableViewer (int aWidth, int aHeight) } package integration.observe; public interface IObservable { public void registerObserver (IRobotObserver o); public void removeObserver (IRobotObserver o); public void notifyObservers (); } package integration.observe; public interface IRobotObserver { } public class Main extends Application { public void start (Stage s) }