ign="justify"> Малюнок 6 - Побудова таблиці ідентифікаторів
Висновок
У цій роботі були реалізовані наступні фази компіляції:
1) лексичний аналіз результатом, якого є таблиця токенів;
2) синтаксичнийаналіз результатом, якого може бути дерево розбору у разі коректності аналізованого коду;
) побудована таблиця ідентифікаторів.
Реалізоване додаток дозволяє аналізувати файли з розширенням та *. cpp, *. h, *. c, *. hpp.
Для реалізації компілятора був обраний не найоптимальніший метод, тому що вже існує безліч різних генератори лексичного і синтаксичного аналізу, використання яких дозволяє скоротити час і підвищити ефективність.
Список літератури
1. Ахо, Лам, Мережі, Ульман. Компілятори: принципи, технології та інструментарій, 2-е вид.: Пер. з англ. - М.: ТОВ В«І.Д. Вільямс В», 2008. - 1184 с.: Іл.
2. Мозковий М. В. Класика програмування: алгоритми, мови, автомати, компілятори. Практичний підхід. - СПб.: Наука і Техніка, 2006. - 320 с.: Іл.
. Серебряков В.А., Галочкин М.П. Основи конструювання компіляторів, Москва, 2001. - 224с.
Додаток А
Текст тестової програми для перевірки коректності роботи лексичного аналізатора
# include
/* fbdfbdfbdfbdf fhdfh/* fdhfghf */
// ------------ main ()
{const n = 34u, m = 12LU; l = 12.6f, t = 23.6L; u = 11e-10f; a = 0012, b = 0xabcd, c = -12; float d = 07;
a = 12.11, t = 12e2, u =-0.23e-12;
a = 'a', t = ' 0', v = ' 123', k = ' xab';
t [] = "gfbfgnf t " "" hmnghjmh ";
& =
>> = 0;
}
Текст тестової програми для перевірки коректності роботи синтаксичного аналізатора
# include
// testRET {red, green = 1} main (int s, double z)
{int a, b = 4, c = 0, d = 121, q; = 10; ((a + b * c) <10 && c
{for (int i = 0; i <5; i + +)
{q + = 1; {+ + a;} (b + a <20)
}
}
/*/* olololo
*/(a ​​<10) (b> 10 && b <15)
{int s = b;} s = a; s;
}