Пример #1
0
        /// <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
        }
Пример #2
0
        /// <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
        }
Пример #3
0
 /// <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);
     }
 }
Пример #4
0
 /// <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
     }
 }
Пример #5
0
        /// <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;
            }
        }