Exemple #1
0
        public override string CanCreateGraph()
        {
            if (FirstOperand.MainVariable.Type != "int" || FirstOperand.CanCreateGraph() == "")
            {
                return("");
            }
            if (IsUnary)
            {
                if (Value == "-")
                {
                    MainVariable.Value = (-int.Parse(FirstOperand.MainVariable.Value)).ToString();
                }
                else
                {
                    return("");
                }
            }
            else
            {
                if (SecondOperand.MainVariable.Type != "int" || SecondOperand.CanCreateGraph() == "")
                {
                    return("");
                }
                else
                {
                    switch (Value)
                    {
                    case ("+"):
                    {
                        MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) +
                                              int.Parse(SecondOperand.MainVariable.Value)).ToString();
                        break;
                    }

                    case ("-"):
                    {
                        MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) -
                                              int.Parse(SecondOperand.MainVariable.Value)).ToString();
                        break;
                    }

                    case ("*"):
                    {
                        {
                            MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) *
                                                  int.Parse(SecondOperand.MainVariable.Value)).ToString();
                            break;
                        }
                    }

                    case ("/"):
                    {
                        if (int.Parse(SecondOperand.MainVariable.Value) == 0)
                        {
                            throw new DividingByZeroWarning(LineNumber);
                        }

                        MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) /
                                              int.Parse(SecondOperand.MainVariable.Value)).ToString();
                        break;
                    }

                    case ("%"):
                    {
                        if (int.Parse(SecondOperand.MainVariable.Value) == 0)
                        {
                            throw new DividingByZeroWarning(LineNumber);
                        }

                        MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) %
                                              int.Parse(SecondOperand.MainVariable.Value)).ToString();
                        break;
                    }

                    case ("&"):
                    {
                        MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) &
                                              int.Parse(SecondOperand.MainVariable.Value)).ToString();
                        break;
                    }

                    case ("|"):
                    {
                        MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) |
                                              int.Parse(SecondOperand.MainVariable.Value)).ToString();
                        break;
                    }

                    case ("^"):
                    {
                        MainVariable.Value = (int.Parse(FirstOperand.MainVariable.Value) ^
                                              int.Parse(SecondOperand.MainVariable.Value)).ToString();
                        break;
                    }

                    default:
                    {
                        throw new IntIsRequiredException(LineNumber);
                    }
                    }
                }
            }
            return(MainVariable.Value);
        }