- •Мова програмування Pascal. Базові поняття мови Pascal.
- •1. Особливості мови Pascal.
- •2. Трансляція програм
- •Модель компілятора
- •Лексичний аналізатор
- •Синтаксичний аналізатор
- •Методи опису синтаксису мови
- •4. Лексеми: класифікація
- •5. Типи даних.
- •Класифікація типів даних
- •Подання даних в оперативній пам'яті
- •Цілі типи даних
- •Дійсні типи даних
- •Булеві (логічні) типи даних
- •6. Операції
- •Класифікація операцій по пріоритетах
- •Класифікація операцій по характеру виконуваних дій Арифметичні операції
- •Операції відношення
- •Булеві (логічні) операції (правила виконання)
- •Булеві (логічні) операції
- •Порозрядні і здвигові операції
- •Рядкові операції
- •Операції над множинами
- •Операція взяття адреси
- •Стандартні процедури і функції для роботи із значеннями простих типів (модульSystem) Арифметичні типи
- •Порядкові типи
Методи опису синтаксису мови
Синтаксичні діаграми
Ім’я
посилання на діаграму ім’я
символ, що входить до складу програми
Розширені Бекуса – Наура Форми (РБНФ)
Мета-символи, що використовуються:
-
Метасимвол
Значення
=
Рівно за означенням
|
Або
.
Кінець правила
[X]
X необов’язковій
{X}
0 або більше входжень Х
( )
Групування
‘XYZ’
Термінальний символ
XYZ
Нетермінальний символ
Примітка: в лекціях термінальні символи будуть виділені жирним шрифтом.
4. Лексеми: класифікація
Лексеми
Спеціальні
символи
Зарезервовані слова
Ідентифікатори
Стандартні ідентифікатори
Ідентифікатори директив
Ідентифікатори стандартних процедур і функцій
Ідентифікатори, які задає користувач
Мітки
Числа
Десяткові
Шістнадцятирічні
Рядки
Коментарі
Спеціальні символи: + - * / < = > ( ) { } [ ] ., : ; ^ @ # $ := “ <= >= (* *) (. .)
Зарезервовані (ключові слова)
And |
Exports |
mod |
Shr |
var |
array |
File |
Nil |
String |
while |
As |
Finalization |
not |
then |
with |
Asm |
Finally |
Object |
threadvar |
xor |
Begin |
For |
Of |
to |
property |
Case |
Function |
Or |
try |
raise |
Class |
Goto |
Out |
type |
record |
Const |
If |
packed |
unit |
repeat |
constructor |
Implementation |
procedure |
until |
resourcestring |
destructor |
In |
program |
uses |
set |
dispinterface |
Inherited |
Div |
Initialization |
Shl |
Do |
Inline |
Downto |
Interface |
|
Else |
Is |
End |
Label |
|
Except |
Library |
|
|
|
Між прописними і рядковими буквами зарезервованого слова немає відмінності.
Ідентифікатори
Ідентифікатор – послідовність букв і цифр, починаючи з букви .
Ідентифікатор = Буква{Буква|Цифра}.
Буква=A|B|C|D…|Z|a|b|c|…|z|_.
Цифра=0|1|2|3|4|5|6|7|8|9.
Приклад.
Правильні ідентифікатори
MyVariable
My4Variable1
Lab_12
Неправильні ідентифікатори
My Variable
_ MyVariable
12Lab -1 2
Стандартні ідентифікатори - до них відносяться імена вбудованих в мову процедур і функцій (read, write, sin, cos), типів даних, (integer, real), і директив.
Зарезервовані слова не можуть бути використані як ідентифікатори.
Приклади неправильних ідентифікаторів:
1 Program // - починається цифрою
block#l // - містить спеціальний символ
My Prog // - містить пропуск
mod // - зарезервоване слово
Мітки
Мітка=(Цифра{Цифра}).
Числа
Число=[Знак]ЧислоБезЗнака.
Знак=’+’|’-‘.
ЧислоБезЗнака=Ціле|Дійсне.
Ціле=Цифра{Цифра}.
Дійсне=Ціле[‘.’Ціле][‘е’|’Е’[Знак]Ціле].
Рядки
Рядок – послідовність символів з набору символів ASCII. Ряд символів береться в апострофи; якщо у рядку повинен бути сам апостроф як символ, то він подвоюється.
Коментар
Коментар – послідовність символів, яка розміщена у фігурних дужках {}. У коментарі програмістом описуються призначення підпрограм, типів даних, змінних, а також призначення або особливості фрагмента програми.
Роздільники
Всі спеціальні символи відносяться до роздільників лексем. Як роздільники лексем використовуються символи:
пробіл (код 32) – клавіша Пробіл;
табуляція(код 09) – клавіша Tab
повернення каретки (коді 13 і 10) – клавіша Enter
Між будь-якими двома лексемами може знаходитися довільна кількість символів – роздільників
Лексеми, групи, «спеціальні символи» самі є роздільниками.
