Реферат: Робота в системі програмування
len := 3.14 * r;
складається з наступних токенів
Ідентифікатор len
Символ присвоєння :=
Числова стала 3.14
Знак множення *
Ідентифікатор r
Роздільник операторів ;
Синтаксичний розбір
Послідовність машинних символів, що утворюють токен, називають лексемою токена. Токени мають тип (наприклад, ідентифікатор, числова стала - це типи токенів). Деякі токени мають лексичне значення (наприклад, значення числової чи рядкової константи утвореної з лексеми токена). Задача лексичного аналізатора – виокремити лексеми токенів і повідомити синтаксичний аналізатор про тип токена та його лексичне значення.
Ієрархічний аналіз називається розбором (parsing) чи синтаксичним аналізом, у ході якого відбувається групування токенів програми. В синтаксичному аналізі символом називають токени(термінали) та групи токенів об'єднаних у логічне ціле в процесі аналізу (нетермінали).
Синтаксис звичайно визначається контесктно-незалежною граматикою, що складається з символів – терміналів та нетерміналів, стартового символу що належить множині нетерміналів, та контесктно-незалежних продукцій.
Програма є послідовністю терміналів, яку можна вивести зі стартового символу послідовно застосовуючи правила виводу (продукції). Продукція – це заміна послідовності символів S1 на послідовність символів S2 (Позначається. S1 : S2 або S1 -> S2). Продукція називається контесктно-незалежною, якщо S1 – один символ. Звичайно розглядаються лише контесктно-незалежні продукції.
Задача синтаксичного аналізатора – встановити шлях, яким вхідна програма виводиться з стартового символа.
Наприклад, наступна граматика із трьох продукцій описує вирази (expression), що можуть складатись з ідентифікаторів (identifier), чисел (number), та знаку додавання +
expression : identifier
expression : number
expression : expression + expression
Перший рядок означає що будь-який ідентифікатор є виразом. Другий рядок означає що будь-яке число є виразом. Третій рядок означає що будь-яка послідовність з двох виразів розділених знаком додавання теж є виразом.
В цій граматиці символами є expression, number, identifier та +. Expression є стартовим символом і нетерміналом, решта символів є терміналами.
Класифікація компіляторів
Відомі компілятори
GCC
Генератори аналізаторів
Побудовані алгоритми, що перетворюють опис вхідної мови у програму, що виконує аналіз і є велика кількість реалізацій цих алгоритмів. Є також утиліти, що автоматизують решту фаз компіляції та системи створення компіляторів у цілому
В Unix поширені генератор лексичних аналізаторів (F)Lex, та генератори синтаксичних аналізаторів Bison та Yacc.
Інтерпретатор (interpreter) - програма чи технічні засоби, необхідні для виконання інших програм; вид транслятора, який здійснює пооператорну (покомандну) обробку, перетворення у машинні коди та виконання програми або запиту (на відміну від компілятора, який транслює у машинні коди всю програму без її виконання).
Інтерпретатори можуть працювати як з вихідним кодом програми, написаним на мові програмування, так і з байт-кодом (інтерпретатори байт-коду).
Список використаної літератури
1. Абрамов С.А., Зима Е.В. Начала информатики. – М.: Наука, 1989. – 256 с.
2. Інформатика: Комп’ютерна техніка. Комп’ютерні технології. Посіб./ За ред. О.І.
3. Информатика. Базовый курс / Под ред. Симоновича С.В. – СПб., 1998.