Ejemplo n.º 1
0
 public override void processing()
 {
     //передвинул по программе дальше
     model.getState().tranzakts.ElementAt(model.getState().idProcessingTranzact).
     my_place += 1;
     if (parameters[1] == "AC1")//время нахождения транзакта в системе, СЧА
     {
         model.getState().tranzakts.ElementAt(model.getState().idProcessingTranzact).
         set_parameter(parameters[0], model.getState().tranzakts.ElementAt(model.
                                                                           getState().idProcessingTranzact).time_in_system.ToString());//записал параметр
         return;
     }
     //определение переменной, СЧА длина должна быть больше двух(V$Var-пример)
     if (parameters[1].Count() > 2)
     {   //Если длинна меньше двух, то нет смысла проверять на СЧА
         if (parameters[1].Remove(2) == "V$")
         {
             //поиск переменной по ее имени
             string name = parameters[1].Remove(0, 2);
             for (int k = 0; k < model.getState().variables.Count(); k++)
             {
                 if (model.getState().variables.ElementAt(k).get_name() == name)
                 {
                     //расчет значения
                     string value = ModelingFunctionParser.go_parse(model.getState(),
                                                                    model.getState().variables.ElementAt(k).get_function(),
                                                                    model.getState().idProcessingTranzact);
                     if (value != "syntaxis_error")
                     {
                         model.getState().tranzakts.ElementAt(model.getState().
                                                              idProcessingTranzact).set_parameter(parameters[0], value);
                     }
                     else//иначе синтаксическая ошибка
                     {
                         int id_str = model.getState().tranzakts.ElementAt(model.
                                                                           getState().idProcessingTranzact).my_place - 1;
                         throw new SyntaxisErrorException("Syntaxis error on line: " + id_str);
                     }
                     break;
                 }
                 if (k == model.getState().variables.Count() - 1)//переменная не найдена
                 {
                     int id_str = model.getState().tranzakts.ElementAt(model.
                                                                       getState().idProcessingTranzact).my_place - 1;
                     throw new SyntaxisErrorException("Unknown variable on line" + id_str);
                 }
             }
             return;
         }
     }
     //иначе это обычный параметр, алгоритм сюда дайдет, если он не увидит какие-либо СЧА
     model.getState().tranzakts.ElementAt(model.getState().idProcessingTranzact).
     set_parameter(parameters[0], parameters[1]);    //записал параметр
 }
Ejemplo n.º 2
0
 public override void processing()
 {
     for (int n = 0; n < model.getState().variables.Count; n++)
     {
         if (model.getState().variables.ElementAt(n).get_name() == parameters[0])
         {
             //определение переменной, СЧА длина должна быть больше двух(V$Var-пример)
             if (parameters[1].Count() > 2)
             {
                 if (parameters[1].Remove(2) == "V$")
                 {
                     //поиск переменной по ее имени
                     string parametersName = parameters[1].Remove(0, 2);
                     for (int k = 0; k < model.getState().variables.Count(); k++)
                     {
                         if (model.getState().variables.ElementAt(k).get_name() ==
                             parametersName)
                         {
                             //расчет значения
                             string value = ModelingFunctionParser.go_parse(model.
                                                                            getState(), model.getState().variables.ElementAt(k).
                                                                            get_function(), model.getState().idProcessingTranzact);
                             if (value != "syntaxis_error")
                             {
                                 model.getState().variables.ElementAt(n).value = value;
                             }
                             else//иначе синтаксическая ошибка
                             {
                                 int id_str = model.getState().tranzakts.ElementAt(model.
                                                                                   getState().idProcessingTranzact).my_place - 1;
                                 throw new SyntaxisErrorException("Syntaxis error on line: " + id_str);
                             }
                             break;
                         }
                         //переменная не найдена
                         if (k == model.getState().variables.Count() - 1)
                         {
                             int id_str = model.getState().tranzakts.ElementAt(model.
                                                                               getState().idProcessingTranzact).my_place - 1;
                             throw new SyntaxisErrorException("Unknown variable on line" + id_str);
                         }
                     }
                     continue;
                 }
             }
             break;
         }
     }
     //передвигаем далее транзакт
     model.getState().tranzakts.ElementAt(model.getState().idProcessingTranzact).my_place++;
     return;
 }