/// <summary> /// Displays error when entered command does not exist /// </summary> /// <param name="MyCanvass">Canvass on which error message is displayed</param> /// <param name="n">For the line number of the command</param> /// <param name="x">For the location in the canvass where error message is dispalyed</param> public void CommandChecking(Canvass MyCanvass, int n, int x) { Font drawFont = new Font("Arial", 10); //create font SolidBrush drawBrush = new SolidBrush(Color.Black); //create brush n++; if (n != 0) { if (x == 0) { MyCanvass.reset(); //resets if error has never been found prevoiusly } MyCanvass.g.DrawString("Command on line " + (n) + " does not exist", drawFont, drawBrush, 0, 0 + x); //displays where and what the problem is(in case of multiline commands)(for component2) } else { MyCanvass.g.DrawString("Command does not exist", drawFont, drawBrush, 0, 0); //displays if the command is not recognized } MyCanvass.err = true; //sets the err to true }
/// <summary> /// Displays error when number of enetered parameters are not valid in the context /// </summary> /// <param name="e">Whenever an exception is caught which checking for the validity of parameter</param> /// <param name="MyCanvass">Canvass on which error message is displayed</param> /// <param name="n">For the line number of the command</param> /// <param name="x">For the location in the canvass where error message is dispalyed</param> public void ParmChecking(Exception e, Canvass MyCanvass, int n, int x) { Font drawFont = new Font("Arial", 10); //create font SolidBrush drawBrush = new SolidBrush(Color.Black); //create brush if (x == 0) { MyCanvass.reset();//resets if error has never been found prevoiusly } if ((n + 1) == 0) { //displays if number of parameters are invalid MyCanvass.g.DrawString("Wrong number of parameters inputted", drawFont, drawBrush, 0, 0 + x); } else { //displays if number of parameters are invalid(for multi line commands)(for component2) MyCanvass.g.DrawString("Wrong number of parameters inputted on line " + (n + 1), drawFont, drawBrush, 0, 0 + x); } MyCanvass.err = true;//sets the err to true }
/// <summary> /// Runs further according to given command in cmdLine or ProgramWindow /// </summary> /// <param name="command">User input in cmdLine(Single line textbox)</param> /// <param name="mulCommand">User input in ProgramWindow(Multi line rich textbox)</param> /// <param name="MyCanvass">Canvass in which the user given instruction is implemented</param> public void Command(String command, String mulCommand, Canvass MyCanvass) { //to reset err value and canvass after execution in case of an error if (MyCanvass.err) { MyCanvass.reset(); MyCanvass.err = false;//sets err to false } //if there no input in rich text box(program window) if (mulCommand.Length.Equals(0)) { singleCommand(command, MyCanvass); } //if 'run' is used in command line else if (command.Equals("run")) { multiCommand(mulCommand, MyCanvass); } else { multiCommand(mulCommand, MyCanvass); } }
/// <summary> /// Displays error when enetered parameters are not valid in the context /// </summary> /// <param name="par">Boolean value which recives value according to validity of parameters</param> /// <param name="data">String where the invalid parameter is found</param> /// <param name="n">For the line number of the command</param> /// <param name="MyCanvass">Canvass on which error message is displayed</param> /// <param name="x">For the location in the canvass where error message is dispalyed</param> public void ParmChecking(bool par, String data, int n, Canvass MyCanvass, int x) { if (!par) { Font drawFont = new Font("Arial", 10); //create font SolidBrush drawBrush = new SolidBrush(Color.Black); //create brush if (x == 0) { MyCanvass.reset();//resets if error has never been found prevoiusly } if ((n + 1) == 0) { //displays if parameters are invalid MyCanvass.g.DrawString("Paramater " + data + " is invalid", drawFont, drawBrush, 0, 0 + x); } else { //displays if parameters are invalid(for multi line commands)(for component2) MyCanvass.g.DrawString("Paramater " + data + " on line " + (n + 1) + " is invalid", drawFont, drawBrush, 0, 0 + x); } MyCanvass.err = true;//sets the err to true } }
/// <summary> /// Simple Programming Language(spl) which check the user inputted commands for errors and exception and runs if no error is found /// </summary> /// <param name="cmd">String command provided by user</param> /// <param name="MyCanvass">Canvass in which the user given instruction is implemented</param> /// <param name="n">line where the compiler has reached</param> public void spl(String[] cmd, Canvass MyCanvass, int n) { try { String[] method = cmd[0].Split('(', ')'); //Checks if entered command exists(if not call displays error also stops further execution) also checks for validity of parameters and number of parametes if (cmd[0].Equals("drawto")) { String[] data = cmd[1].Split(','); int x = 0; int y = 0; bool var1 = false; try { if (!int.TryParse(data[0], out x)) { if (!MyCanvass.v.DataExists(data[0])) { var1 = true; } else { x = MyCanvass.v.GetData(data[0]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[0], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } if (!int.TryParse(data[1], out y)) { if (!MyCanvass.v.DataExists(data[1])) { var1 = true; } else { y = MyCanvass.v.GetData(data[1]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { MyCanvass.DrawLine(x, y); } } else if (cmd[0].Equals("moveto")) { String[] data = cmd[1].Split(',');; int x = 0; int y = 0; bool var1 = false; try { if (!int.TryParse(data[0], out x)) { if (!MyCanvass.v.DataExists(data[0])) { var1 = true; } else { x = MyCanvass.v.GetData(data[0]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[0], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } if (!int.TryParse(data[1], out y)) { if (!MyCanvass.v.DataExists(data[1])) { var1 = true; } else { y = MyCanvass.v.GetData(data[1]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { MyCanvass.MoveTo(x, y); } } else if (cmd[0].Equals("rectangle")) { String[] data = cmd[1].Split(',');; int x = 0; int y = 0; bool var1 = false; try { if (!int.TryParse(data[0], out x)) { if (!MyCanvass.v.DataExists(data[0])) { var1 = true; } else { x = MyCanvass.v.GetData(data[0]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[0], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } if (!int.TryParse(data[1], out y)) { if (!MyCanvass.v.DataExists(data[1])) { var1 = true; } else { y = MyCanvass.v.GetData(data[1]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { Shape rect = new DrawSquare(x, y); rect.draw(MyCanvass); } } else if (cmd[0].Equals("triangle")) { String[] data = cmd[1].Split(',');; int x = 0; int y = 0; int z = 0; bool var1 = false; try { if (!int.TryParse(data[0], out x)) { if (!MyCanvass.v.DataExists(data[0])) { var1 = true; } else { x = MyCanvass.v.GetData(data[0]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[0], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } if (!int.TryParse(data[1], out y)) { if (!MyCanvass.v.DataExists(data[1])) { var1 = true; } else { y = MyCanvass.v.GetData(data[1]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } if (!int.TryParse(data[2], out z)) { if (!MyCanvass.v.DataExists(data[2])) { var1 = true; } else { z = MyCanvass.v.GetData(data[2]); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[2], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { Shape tri = new DrawTriangle(x, y, z); tri.draw(MyCanvass); } } else if (cmd[0].Equals("square")) { int x = 0; bool var1 = false; try { if (!int.TryParse(cmd[1], out x)) { if (!MyCanvass.v.DataExists(cmd[1])) { var1 = true; } else { x = MyCanvass.v.GetData(cmd[1]); } if (var1) { MyCanvass.syntax.ParmChecking(false, cmd[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { Shape sqr = new DrawSquare(x, x); sqr.draw(MyCanvass); } } else if (cmd[0].Equals("circle")) { int x = 0; bool var1 = false; try { if (!int.TryParse(cmd[1], out x)) { if (!MyCanvass.v.DataExists(cmd[1])) { var1 = true; } else { x = MyCanvass.v.GetData(cmd[1]); } if (var1) { MyCanvass.syntax.ParmChecking(false, cmd[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { Shape circle = new DrawCircle(x); circle.draw(MyCanvass); } } else if (cmd[0].Equals("polygon")) { String[] data = cmd[1].Split(','); List <int> tempPoints = new List <int>(); int i = 0; int x = 0; bool var1 = false; try { while (data.Length > i) { if (!int.TryParse(data[i], out x)) { if (!MyCanvass.v.DataExists(data[i])) { var1 = true; } else { tempPoints.Add(MyCanvass.v.GetData(data[i])); } if (var1) { MyCanvass.syntax.ParmChecking(false, data[i], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } tempPoints.Add(x); i++; } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { int[] arr = tempPoints.ToArray(); Shape poly = new DrawPolygon(arr); poly.draw(MyCanvass); } } else if (cmd[0].Equals("pen")) { Color color = Color.FromName(cmd[1]); if (color.IsKnownColor == false) { MyCanvass.syntax.ParmChecking(false, cmd[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { MyCanvass.set_Pen_Color(color); } } else if (cmd[0].Equals("fill")) { bool valOn = cmd[1].Equals("on"); bool valOff = cmd[1].Equals("off"); if (valOn == false && valOff == false) { MyCanvass.syntax.ParmChecking(false, cmd[1], n, MyCanvass, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { if (valOn) { MyCanvass.fill = true; } else if (valOff) { MyCanvass.fill = false; } } } else if (cmd[0].Equals("clear")) { if (!MyCanvass.err) { MyCanvass.clear(); } } else if (cmd[0].Equals("reset")) { if (!MyCanvass.err) { MyCanvass.reset(); } } else if (cmd[0].Equals("exit")) { if (!MyCanvass.err) { Application.Exit(); } } else if (MyCanvass.m.DataExists(method[0])) { String[] methodValue = (MyCanvass.m.GetData(method[0])).Split(','); String methodCmd = method[0] + "command"; String methodCommand = MyCanvass.m.GetData(methodCmd); String[] userValue = method[1].Split(','); int x = 0; while (methodValue.Length > x) { String[] valueStore = (methodValue[x] + " = " + userValue[x]).Split(' '); spl(valueStore, MyCanvass, n); x++; } multiCommand(methodCommand, MyCanvass); } else if (cmd[1].Equals("=")) { try { if (cmd[3].Equals("+")) { int varValue; int x = 0; int y = 0; bool var1 = false; try { if (!int.TryParse(cmd[2], out x)) { if (!MyCanvass.v.DataExists(cmd[2])) { var1 = true; } else { x = MyCanvass.v.GetData(cmd[2]); } /*syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); * lineNum = lineNum + 20;*/ } if (!int.TryParse(cmd[4], out y)) { if (!MyCanvass.v.DataExists(cmd[4])) { var1 = true; } else { y = MyCanvass.v.GetData(cmd[4]); } } if (var1) { MyCanvass.syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } varValue = x + y; MyCanvass.v.AppendData(cmd[0], varValue); } if (cmd[3].Equals("-")) { int varValue; int x = 0; int y = 0; bool var1 = false; try { if (!int.TryParse(cmd[2], out x)) { if (!MyCanvass.v.DataExists(cmd[2])) { var1 = true; } else { x = MyCanvass.v.GetData(cmd[2]); } /*syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); * lineNum = lineNum + 20;*/ } if (!int.TryParse(cmd[4], out y)) { if (!MyCanvass.v.DataExists(cmd[4])) { var1 = true; } else { y = MyCanvass.v.GetData(cmd[4]); } } if (var1) { MyCanvass.syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } varValue = x - y; MyCanvass.v.AppendData(cmd[0], varValue); } if (cmd[3].Equals("/")) { int varValue; int x = 0; int y = 0; bool var1 = false; try { if (!int.TryParse(cmd[2], out x)) { if (!MyCanvass.v.DataExists(cmd[2])) { var1 = true; } else { x = MyCanvass.v.GetData(cmd[2]); } /*syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); * lineNum = lineNum + 20;*/ } if (!int.TryParse(cmd[4], out y)) { if (!MyCanvass.v.DataExists(cmd[4])) { var1 = true; } else { y = MyCanvass.v.GetData(cmd[4]); } } if (var1) { MyCanvass.syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } varValue = x / y; MyCanvass.v.AppendData(cmd[0], varValue); } if (cmd[3].Equals("*")) { int varValue; int x = 0; int y = 0; bool var1 = false; try { if (!int.TryParse(cmd[2], out x)) { if (!MyCanvass.v.DataExists(cmd[2])) { var1 = true; } else { x = MyCanvass.v.GetData(cmd[2]); } /*syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); * lineNum = lineNum + 20;*/ } if (!int.TryParse(cmd[4], out y)) { if (!MyCanvass.v.DataExists(cmd[4])) { var1 = true; } else { y = MyCanvass.v.GetData(cmd[4]); } } if (var1) { MyCanvass.syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } varValue = x * y; MyCanvass.v.AppendData(cmd[0], varValue); } } catch { int x = 0; try { bool var1 = false; if (!int.TryParse(cmd[2], out x)) { if (!MyCanvass.v.DataExists(cmd[2])) { var1 = true; } else { x = MyCanvass.v.GetData(cmd[2]); } if (var1) { MyCanvass.syntax.ParmChecking(false, cmd[2], n, MyCanvass, lineNum); lineNum = lineNum + 20; } } } catch (Exception e) { MyCanvass.syntax.ParmChecking(e, MyCanvass, n, lineNum); lineNum = lineNum + 20; } if (!MyCanvass.err) { if (!MyCanvass.v.DataExists(cmd[0])) { MyCanvass.v.StoreData(cmd[0], x); } else { MyCanvass.v.AppendData(cmd[0], x); } } } } else { MyCanvass.syntax.CommandChecking(MyCanvass, n, lineNum); lineNum = lineNum + 20; } } catch { MyCanvass.syntax.CommandChecking(MyCanvass, n, lineNum); lineNum = lineNum + 20; } }