Транслятор з мови програмування Pascal на С++
21

                                                       // для обробки    

            delete t;   // видаляємо виділену память

          }

          else      // якщо аргументів не знайдено

          {

            t_pos = y.find(";", pos);

            if (t_pos > 0)

              y.replace(t_pos, 1, "");   // видаляємо ";"

            y = "void "+ y + "()" ;  // додаємо спочатку ключ. слово void

          }

          InProcedure = true;   // сигналізуємо початок процедури

          InVar = false;       // сигналізуємо кінець блоку var

        }

        break;

 

        // знайдено ключове слово FUNCTION

        case FUNCTION:

        {

          y.replace(pos, 9, "");   // видаляємо слово

          t_pos = y.find("(", pos);

          t2_pos = y.find(")", pos);

 

          // якщо аргументи існують

          if (t_pos >0 && t2_pos >0 && t_pos < t2_pos)

          {

            char *t = new char [t2_pos - t_pos+1];

            y.copy(t, t2_pos - t_pos, t_pos+1);

            t[t2_pos - t_pos+1] = '\0';

            y.replace(t_pos, t2_pos-t_pos+1, "");

            y = y + " (" + prochange (t, y) + ")";  // викликаємо функцію

            t2_pos = y.find(";", 0);

            if (t2_pos >0)

              y.replace(t2_pos, 1, "");

            delete t;

          }

          else      // якщо аргументи не існують

          {

            t_pos = y.find(";", pos);

            if (t_pos > 0)

              y.replace(t_pos, 1, "");

            y = y + " ( )";    

          }

          InProcedure = true;    // сигналізуємо початок функції

          InVar = false;        // сигналізуємо кінець блоку var

        }

        break;

 

        // знайдено ключове слово INTEGER

        case INTEGER:

        {

            y.replace(pos, 7, "");  // видаляємо