Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Розробка компілятора мови С + +

Реферат Розробка компілятора мови С + +





подальшої обробки. br/>В 

Рисунок 3 - Місце синтаксичного аналізатора в моделі компілятора


Існують різні форми проміжного представлення програми, наприклад, трійчастий код або абстрактне синтаксичне дерево. У даному випадку використовується абстрактне синтаксичне дерево. p align="justify"> Методи, зазвичай вживані в компіляторах, можна класифікувати як спадні (зверху вниз - top-down) або висхідні (знизу вгору - bottom-up). Як випливає з назв, низхідні синтаксичні аналізатори будують дерево розбору від кореня і листю, тоді як висхідні починають з листя і йдуть до кореня. В обох випадках вхідний потік синтаксичного аналізатора сканується посимвольний зліва направо. p align="justify"> Найбільш ефективні спадні і висхідні методи працюють тільки з підкласами граматик, проте деякі з цих класів, такі як LL-і LR-граматики, достатньо виразні для опису основних синтаксичних конструкцій мов програмування. Реалізовані вручну синтаксичні аналізатори частіше працюють з LL-граматиками; наприклад, предикативне підхід працює з LL-граматиками. Синтаксичні аналізатори для більшого класу LR-граматик зазвичай створюються за допомогою автоматизованих інструментів. p align="justify"> Виходом синтаксичного аналізатора є деяке уявлення дерева розбору потоку токенів від лексичного аналізатора. На практиці є безліч завдань, які можуть супроводжувати процес розбору, такі як збір інформації про різні токенах в таблицю символів, виконання перевірки типів і інших видів семантичного аналізу, а також генерація проміжного коду. br/>

Алгоритм роботи синтаксичного аналізатора


Створено структуру TLexeme, мінлива curr_par типу cell, до неї записуються дані з масиву, який передає лексичний аналізатор. З змінної curr_cell дані переписуються в масив Lexemes. Далі працюємо тільки з масивом Lexemes. br/>

struct TLexeme

{String type;// тип токенаbody;// сам токенposition;// рядок

}; * Lexemes;// Знайдені лексеми: тип, тіло, строкаcurr_par;// об'єкт структури (сама структура в 1.h)

int Number = Form1-> scaner_result.size ();// передаємо кількість лексем = new TLexeme [Number];// нейденние лексеми (int i = 0, j = 0; i

{//в "рядок" переміщаємо дані з ВЕЛИКОГО масиву

curr_par = Form1-> scaner_result [j];

// відразу записуємо в новий

Lexemes [j]. type = curr_par.type;

Lexemes [j]. body = curr_par.value; [j]. position = curr_par.str; + +;


}


Далі по циклу перевіряємо приналежність лексеми до якої-небудь синтаксичної конструкції.

Якщо лексема належить конструкції, записуємо її в корінь, одержуємо необхідні параметри, для тіла, якщо це цикл, структура, функція (тобто для...


Назад | сторінка 4 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка алгоритму роботи синтаксичного аналізатора тексту, а також бази да ...
  • Реферат на тему: Використання в'язкопружного моделі матеріалу зі спектром часів релаксац ...
  • Реферат на тему: Модулі статистичної обробки аналізатора &Тензотрем&
  • Реферат на тему: Конвертер програми з підмножини мови Сі в Паскаль з використанням LL (1) ме ...
  • Реферат на тему: Розробка алгоритму синтаксичного аналізу оператора виведення printf мови C ...