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

Функція convertcpp() отримує в якості аргументу строку коду, конвертує її до типу string і проводить її обробку. Процес обробки проходить наступним чином:  функція містить цикл do-while в тілі якого проводиться пошук в переданій строці ключових слів мови Pascal (які перераховані в строковому масиві chg[]). В разі позитивного результату відбувається обробка в тілі оператора switch (селектором, якого є індекс елементу строкового масиву).

Цикл продовжується до тих пір, доки знайдено хоча б одну відповідність.

В більшості випадків обробка зводиться до заміни ключового слова мови Pascal на його еквівалент в мові С++. При цьому для пошуку використовується метод find класу string, а для заміни метод replace.

Метод find повертає позицію в тексті, де було знайдено фрагмент.

Синтаксис: int find (char * _text, int _pos)

А метод replace проводить заміну.

Синтаксис: void replace (int _pos, int _n, char * text)

У випадку складних синтаксичних конструкцій використовується допоміжні змінні t_pos, t2_pos, firstFlag, InFor і т.д.

В якості значення функція повертає змінну строкового типу, яка є результуючим кодом (записується до кінцевого файлу).

 

Функція coments()

void coments (string &y)

Допоміжна зовнішня функція, використовується для проведення обробки коментарів. В якості аргументу отримує посилання на строку. Викликається одноразово перед початком обробки безпосередньо в функції convertcpp (щоб запобігти повторній заміні операторних дужок {}). Розташована в допоміжному модулі cach.cpp.

 

Функція massiv ()

void massiv (string &y)