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

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

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

    {

      y.replace(pos, 1, "][");

      finish = false;

    }

  }

  while (finish == false);

}

 

// функція для заміни оператора рівносмті

// в середині операторів if(), while()

void ifchange (string &_y, int _pos)

{

  int t_pos, t2_pos;

  t_pos = _y.find(")", _pos);

  t2_pos = _y.find("=", _pos);

  if (t2_pos >0 && t2_pos < t_pos)

    _y.replace(t2_pos, 1, "==");

  t2_pos = _y.find("<=");

  if (t2_pos >0 && t2_pos < t_pos)

    _y.replace(t2_pos, 2, "<");

  t2_pos = _y.find(">=");

  if (t2_pos >0 && t2_pos < t_pos)

    _y.replace(t2_pos, 2, ">");

  t2_pos = _y.find("<>");

  if (t2_pos >0 && t2_pos < t_pos)

    _y.replace(t2_pos, 2, "!=");

  t2_pos = _y.find("NOT");

  if (t2_pos >0 && t2_pos < t_pos)

    _y.replace(t2_pos, 3, "!");

 

}

 

// внутрішня функція

void cach (string &tmp_s)

{

   int t3_pos;

   t3_pos = tmp_s.find(":");

   if (t3_pos > 0)

     tmp_s.replace(t3_pos, 1, "");

 

   t3_pos = tmp_s.find("INTEGER");

   if (t3_pos > 0)

   {

     tmp_s.replace(t3_pos, 7, "");

     tmp_s = "int " + tmp_s;

   }

 

   t3_pos = tmp_s.find("SHORTINT");

   if (t3_pos > 0)

   {

     tmp_s.replace(t3_pos, 8, "");

     tmp_s = "char " + tmp_s;