Інструкція з використання програми

Компіляція

Приклад використання програми

Наприклад, маємо вихідний код:

#file.src
function mul(x,y)
        R = x*y;
        return R;
endfunc;

read j;
i = 5*mul(j,2);
print i;

Компілюємо:

$ ./myl file.src
pyCompiler 1.0
-------------------

В директорії з вихідним кодом з’явився файл з такою-ж назвою, але з розширенням .bin з правами на виконання (+x).

Це і є виконавчий файл програми, в чому ми можемо переконатися, запустивши його:

$ ./file.bin
5
50

Параметри командного рядка

Виконавчий файл - ./myl

В загальному випадку для компіляції файлу file.src з вихідним кодом потрібно виконати таку команду:

$ ./myl /path/to/file.src

Після цього, якщо не задані інші параметри, в директорії з вихідним кодом з’явиться бінарний файл file.bin, який є виконавчим.

Для використання особливих опцій при компіляції ви можете вказати такі параметри:

  • -O0 - вимкнення вбудованої оптимізації
  • -l - зберігання результатів лексичного аналізу в файл .lex
  • -s - зберігання результатів синтаксичного аналізу в файл .synt
  • -A - зберігання файлу з програмою на асемблері
  • -L - створення файлу лістингу
  • -n - вимкнення оптимізації при генерації об’єкних файлів (не передається -O0 до nasm)
  • -v - розширений вивід коментарів та етапів роботи при компіляції
  • -a - вмикання всіх опцій -slAL одночасно

Вимкнення оптимізації

Не рекомендується, але може буди корисним при відлагоджуванні програми, щоб подивитись чистий код, який видає транслятор. Він буде містити багато безглуздих конструкцій, таких як:

push eax
push ebx
pop eax
pop ebx

або таких:

mov eax,eax

також можуть бути неоптимальні конструкції як:

mov eax, 1
push eax

які оптимізуються транслятором до:

push dword 1

та інші випадки.

Вмикання проміжних файлів

Якщо передати опцію -a, компілятор створить в директорії з вихідним кодом папку build, в якій будуть збережені всі проміжні файли:

  • Лексичного аналізу .lex
  • Синтаксичного аналізу .synt
  • Пошуку змінних та строкових літералів .stat
  • Файл згенерованого коду на мові асемблеру .asm
  • Лістинг .lst

За допомогою цих файлів можна дізнатися про всі етапи обробки вихідної программи, а також подивитись дерево синтаксичного розбору у файлі .synt