- •Алфавіт мови
- •Лексичний устрій тексту програм
- •Лексеми
- •Лексичний аналіз
- •Позначення
- •Класифікація позначень
- •Напередвизначені позначення
- •Позначення, що визначаються
- •Класифікація типів
- •Класифікація напередвизначених типів
- •Скалярні типи
- •Дискретні типи
- •Перелічуваний тип
- •Символьний тип
- •Логічний тип
- •Дійсні типи
Лексичний аналіз
Програма транслятора, яка аналізує лексеми, перевіряючи правильність їх написання, виконує лексичний аналіз (lexical analisys), і називається лексичним аналізатором (lexical analiser), або сканером (scanner). Крім аналізу сканер виконує кодування лексем, і вилучає пробільні символи та символи, що належать до коментарів, внесених у програму. Текст програми, що складається з кодів лексем, використовується у процесі синтаксичного аналізу, що виконується слідом за лексичним аналізом, який також здійснює відповідна програма трансляторa.
Позначення
Всі лексеми в тексті програми є позначеннями. Це означає, що лексеми позначають інші конструкції мови, які будуються і використовуються в процесах трансляції і виконання програми. У загальному випадку, конструкції, які позначають лексеми, називаються значеннями. Всі позначення діляться на напередвизначені та такі, що визначаються.
Класифікація позначень
Напередвизначені позначення
Напередвизначені позначення – це такі, котрі задані стандартним оточенням мови, отже їх необхідно знати. Поділяються на зарезервовані, стандартні ті зображення.
Зарезервовані позначення - це такі позначення, у яких зв'язок зі значеннями встановлюється стандартним оточенням, наприклад, if, virtual, const, static.
Стандартні позначення - це такі, у яких зв'язок зі значенням також установлюється стандартним оточенням, однак у граматиці мови передбачені правила для перевизначення цих позначень, наприклад, позначення integer, +, -.
Індикатори напередвизначених типів - це позначення напередвизначених типів, наприклад, int, integer, char.
Позначення напередвизначених операцій - це символи, пари символів і рідше більш довгі ланцюжки символів, яким стандартним оточенням поставлена у відповідність деяка напередвизначена інтерпретація.
Розрізняються наступні групи позначень:
- позначення операцій напередвизначених типів, звичайно скалярних, наприклад, -, +, *, /;
- позначення операцій відносин (порівняння, більше, менше і т.д.), наприклад, ==, !=, <, >, >=, <=;
- позначення логічних операцій (логічне И, ЧИ, НЕМАЄ і т.д.), наприклад, !, &&, ||;
- позначення операцій маніпулювання бітами (зрушення, побітові И, ЧИ, і т.д.), наприклад, &, ^ , <<, >>, ||.
Позначення напередвизначених розподільників - це такі позначення, значення яких полягає в тому, що вони входять як допоміжні позначення в конструкції більш високих рівнів, наприклад, позначення “(“, “)”, “,” .
Напередвизначені зображення - це такі позначення, у яких зв'язок зі значенням установлюється стандартним оточенням.
Позначення, що визначаються
Позначення, що визначаються - це такі позначення, що складає програміст, керуючись правилами граматики мови. До них належать ідентифікатори та зображення.
Ідентифікатори - це позначення, що відповідають напередвизначеним синтаксичним і прагматичним правилам. Сутність правил є така, що ідентифікатор – це послідовність з символів букв, цифр і символу підкреслення, яка починається тільки з букви (інколи з символу підкреслення). Наприклад, nVal, cChar.
Зображення, що визначаються - це такі позначення, яким відповідають усюди відомі значення. Наприклад, 13, 5.2, ‘А’, “Си”.
Типи
Тип (вид) - це множина значень і множина операцій (дій), які можна виконувати над цими значеннями.
Будь-який тип характеризується наступним:
- позначенням типу (індикатор - задається стандартним оточенням чи обирається програмістом;
- множиною значень і відповідних зображень позначень, що задаються за визначеними правилами;
- множиною операцій, кожна має цілком визначений зміст;
розміром пам'яті, котру буде займати значення даного типу при виконанні програми.
Операції, що описуються явно - це операції, що описуються і реалізуються програмістом явно, як правило при описі типу, що визначається. До них відносяться операції абстрактних типів даних.
Напередвизначені типи - це типи, для яких позначення, множини значень, множина і устрій значень напередвизначені стандартним оточенням і не можуть змінюватися.
Типи, що визначаються - це типи, для яких зазначені властивості визначаються програмістом.