Конструирование модели лексического и синтаксического анализа
Проведение исследования лексем в языках программирования. Построение регулярной грамматики по конечному автомату. Характеристика логического и физического проектирования. Изучение связи между контекстно-свободными грамматиками и синтаксическим анализом.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 23.05.2021 |
Размер файла | 2,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd” ;for (int i=0; I < 2; I ++){V}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd” ;for (int i=0; I < 2; I ++){A(V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar ,int*gogo){*gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd” ;for (int i=0;I < 2; I ++){id(V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int *gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0;I < 2; I ++){opF(V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(A[id]V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(id [id]V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& id [id]V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [id]V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”; for (int i=0; I < 2; I ++){opF(& arr [i]V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i]YV)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i],V)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i],B)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i],id)}V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &id)}IV}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} A*id=new A[id];V }=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*id=new A[id];V }=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new A[id];V }=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[id]; V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1];V }=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1];HV }=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (A id=const; id C const; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int id=const; id C const; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=const; id C const; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; id C const; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y C const; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y S const; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < const; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; id C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y C)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++)V}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++)J}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){id[id]V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[id]V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]CV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]SV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=AV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=randV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=randJV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()CV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y++){m1[y]=rand()%BV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%constV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10YV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10;V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10;HV}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; A<<”_”<<I V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; cout<<”_”<<I V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; cout<<”_”<<id [const] V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; cout<<”_”<<m1 [const] V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; cout<<”_”<<m1 [y] V}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; cout<<”_”<<m1 [y] B}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; cout<<”_”<<m1 [y] Y}}=>
# include <iostream> # include <string> # include <ctime> using namespace std ; Void opF (int *ar , int * gogo){* gogo +=*id;}int main (){srand (time (NULL));intm =0 ; int arr [3] = { 3,4,2} ;string mas=”awd”;for (int i=0; I < 2; I ++){opF(& arr [i], &mmm)} float*m1=new float[m1]; for (int y=0; y < m; y ++){m1[y]=rand()%10; cout<<”_”<<m1 [y]
Заключение
В ходе работы были рассмотрены некоторые этапы трансляция программного языка, лексический и семантический анализ. Трансляция же представляет собой перевод из языка высокого уровня к языку низкого уровня вплоть до машинного кода.
На этапе лексического анализа текст исходной программы рассматривается как простой набор слов языка - лексем. Здесь идёт проверка корректности написания слов, а также их распределение по классам лексем. Существует несколько классов - ключевые (служебные) слова, идентификаторы, константы (числовые, символьные, строковые) и операторы (знаки операций и пунктуации). Получившиеся на выходе таблица лексем передаётся на рассмотрение следующему анализатор - синтаксическому.
На этапе синтаксического анализа происходит рассмотрение корректности написания кода с точки зрения грамматики, задающей правила написания языка. Синтаксические конструкции языков, как правило, могут быть описаны через контекстно-свободные грамматики. На выходе анализа появляется ответ на вопрос о том, принадлежит или нет цепочка входных символов заданному языку. Синтаксический разбор -- это основная часть компилятора на этапе анализа. Без выполнения синтаксического разбора работа компилятора бессмысленна
В ходе выполнения данной курсовой работы были сконструированы модели лексического и синтаксического анализа для языка программирования, идентичному С++. Также на языке программирования С++ было создано приложение, отражающее принцип работы лексического анализатора.
Список литературы
1. «Теория автоматов», Карпов Ю. Г.;
2. «Основы построения трансляторов», Карпов Ю. Г.;
3. «Компиляторы: принципы, технологии и инструментарий», Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман;
4. «Теория языков программирования и методы трансляции», Ганичева О. Г.;
5. «Введение в теорию автоматов, языков и вычислений», Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман;
6. Першиков В. И., Савинков В. М. Толковый словарь по информатике;
7. Вычислительная техника. Терминология.
Приложения
Приложение 1
МИНОБРАНАУКИ РОССИИ
федеральное государственное бюджетное
образовательное учреждение высшего образования
ЧЕРЕПОВЕЦКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт информационных технологий
Математическое и программное обеспечение ЭВМ
Теория автоматов и формальных языков
УТВЕРЖДАЮ
Зав. кафедрой МПО ЭВМ
д. т.н. _________ Ершов Е.В.
«____» ___________2019г.
Конструирование модели лексического и
синтаксического анализа
Техническое задание на курсовую работу
Листов 9
Руководитель: доцент к.т.н., Ганичева О.Г.
Исполнитель: студент гр. 1ИСб-00-21оп
Фурсссов Г.А.
2020
1 Введение
Лексический анализ -- процесс аналитического разбора входной последовательности символов на распознанные группы -- лексемы, с целью получения на выходе идентифицированных последовательностей. Лексический анализ используется в компиляторах и интерпретаторах исходного кода языков программирования, и в различных синтаксических анализаторах.
Как правило, лексический анализ производится с точки зрения определённого формального языка или набора языков. Язык, а точнее его грамматика, задаёт определённый набор лексем, которые могут встретиться на входе процесса.
Цель такой конвертации обычно состоит в том, чтобы подготовить входную последовательность для другой программы, например, для синтаксического анализатора, и избавить его от определения лексических подробностей в контекстно-свободной грамматике.
Настоящее техническое задание относится к курсовой работе и является демонстрацией процесса разработки и сдачи программной продукции, назначение которой описано в расчётно-пояснительной записке и далее в данном приложении.
2 Основания для разработки
Разработка продукта ведётся с задания преподавателя кафедры Математического и программного обеспечения ЭВМ по дисциплине «Теория автоматов и формальных языков» Ганичевой Оксаны Георгиевны.
Задание:
I. Построить лексический анализатор, который решает следующие задачи:
1) выделяет из текста входной программы все лексемы, входящие в заданную языковую конструкцию (согласно варианту);
2) идентификацию распознанных лексем;
3) выполняет дополнительные функции: удаление лишних пробелов, комментариев, подсчет количества строк в программе;
4) выявляет ошибки в написании лексем, выдает сообщения об ошибке (с указанием позиции ошибки и типа ошибки).
II. Построение лексического анализатора выполнить на основе конечного автомата.
III. По конечному автомату построить соответствующую ему регулярную грамматику.
IV. Построить КС-грамматику для заданного варианта задания.
V. По построенной грамматике построить порождение и дерево вывода для заданной синтаксической конструкции.
VI. Записать формальное определение грамматики с использованием формы Бэкуса-Наура и синтаксических диаграмм в графическом виде.
VII. В работе программы предусмотреть диагностику и локализацию лексических ошибок.
3 Назначение разработки
Целью разработки является создание программного продукта - учебной программы для изучения принципов работы лексического и синтаксического анализаторов с целью закрепить материал, полученный в ходе изучения дисциплины «Теория автоматов и формальных языков». Назначение программного продукта - выделение из текста входной программы всех лексем, входящих в заданную языковую конструкцию; идентификация распознанных лексем; удаление лишних пробелов, комментариев; подсчет количества строк в программе; выявление ошибок в написании лексем и сообщение об этом (с указанием позиции ошибки и типа ошибки).
4 Требование к программе
1.1 Требования к функциональным характеристикам
1) Выделение из текста входной программы все лексемы, входящие в заданные языковые конструкции;
2) идентификация распознанных лексем;
3) выполнение дополнительных функций:
a. Удаление лишних комментариев, пробелов и знаков табуляции;
b. Подсчет количества строк в программе.
4) Выявление ошибки в написании лексем и информирование пользователя об ошибке с указанием её позиции и типа.
4.2 Требования к надежности
Программа должна корректно распознавать лексемы и их идентифицировать, указывать ошибки с их типом и позицией.
4.3 Условия эксплуатации
Требования устанавливаются исходя из условий хранения CD-диска.
Не следует:
1) Наносить на поверхность дисков различные жидкости;
2) брать компакт-диск за поверхность, предназначенную для записи;
3) подвергать воздействию загрязняющих веществ и агрессивных сред;
4) ронять, деформировать или подвергать механическому воздействию;
5) наносить на поверхность диска наклейки или различные материалы;
6) подвергать диск воздействию прямых солнечных лучей;
7) рисовать или делать записи на дисках не предназначенными для этого пишущими предметами;
8) оставлять диск после окончания работы с ним в приводе;
9) оставлять диск в выключенном компьютере.
При загрязнении поверхности диска рекомендуется протирать диск ватой, либо какой-либо другой мягкой тканью, радиальными движениями от центра диска к краю.
4.4 Требования к составу и параметрам технических средств
Требования к параметрам технических средств определяются системными требования программного обеспечения Microsoft Visual Studio 2015:
-процессор с тактовой частотой 1,6 ГГц или большей;
- минимум 1 ГБ ОЗУ;
- 4 ГБ доступного пространства на жестком диске;
4.5 Требования к информационной и программной совместимости
1) Операционная система не ниже Windows 7 с пакетом обновления 1 (SP1);
2) наличие Microsoft Visual Studio 2015 и выше.
4.6 Требования к маркировке и упаковке
Требования не предъявляются.
4.7 Требования к транспортированию и хранению
Требования не предъявляются.
4.8 Специальные требования
Требования не предъявляются.
2. Требования к программной документации
Наличие пояснительной записки с приложениями:
1) техническое задание;
2) руководство пользователя (процесс запуска);
3) код программы.
6. Технико-экономические показатели
Не рассчитывается.
7. Стадии и этапы разработки
Стадии и этапы разработки программного обеспечения представлены в таблице (табл. П1.1).
Таблица П1.1 Стадии и этапы разработки ПО
Наименование этапа разработки |
Сроки разработки |
Результат выполнения |
Отметка о выполнении |
|
Создание обрабатываемого кода программы |
14.02.2020 |
Написан код программы, над которым в последствие будет проводится лексический анализ |
Выполнено |
|
Разработка программного кода для обработки комментариев, пробелов и пустых строк |
20.02.2020 |
Написан код программы выполняющая удаление комментариев и лишних пробелов |
Выполнено |
|
Создание автоматной модели промежуточного представления |
05.03.2020 |
Создание автоматной модели, выявляющая идентификаторы |
Выполнено |
|
Программирование конечного автомата (КА) |
22.03.2020 |
К уже написанному коду добавлена часть лексического анализатора, обрабатывающаявходную строку по конечному автоматуна основе оператора выбора |
Выполнено |
|
Дополнение созданной ранее программы формированием таблиц с классами лексем. |
07.04.2020 |
Программа помимо функций, выполняемых КА, выполняет формирование таблиц с классами лексем |
Выполнено |
|
Построение дескрипторного кода и псевдокода |
15.04.2020 |
Программа строит дескрипторный код и псевдокод |
Выполнено |
|
Написать части лексического анализатора по обработке лексических ошибок |
20.05.2020 |
Программа обрабатывает лексемы по имеющимся шаблонам и, в зависимости от неточности написания, обрабатывает ошибки |
Выполнено |
|
Составление КС-грамматики для синтаксического анализа |
28.05.2020 |
Создана КС-грамматика и построены порождение и дерево разбора для заданной языковой конструкции (цикл for в языке С++) |
Выполнено |
|
Подготовка расчётно-пояснительной записки |
05.06.2020 |
Расчётно-пояснительная записка по работе готова к сдаче |
Выполнено |
8 Порядок приемки и контроля
Контроль выполнения работы осуществляется преподавателем. В случае обнаружения недостатков исполнитель работ обязан исправить их в срок, согласованный с преподавателем. Контроль разработки продукта осуществляется поэтапно, в соответствии с графиком, представленным в таблице (табл. П1.2)
Таблица П1.2 Порядок приемки и контроля
Наименование контрольного этапа выполнения работы |
Результат выполнения |
Отметка и дата приёмки результата |
|
Создание обрабатываемого кода программы |
Код программы, над которым будет проводится лексический анализ, проверен преподавателем |
Выполнено 14.02.2020 |
|
Разработка программного кода для обработки комментариев, пробелов и пустых строк |
часть программы выполняющая удаление комментариев и лишних пробелов |
Выполнено 20.02.2020 |
|
Создание автоматной модели промежуточного представления |
Автоматная модель промежуточного представления проверена преподавателем |
Выполнено 05.03.2020 |
|
Программирование конечного автомата (КА) |
Часть лексического анализатора проверена преподавателем |
Выполнено 22.03.2020 |
|
Дополнение созданной ранее программы формированием таблиц с классами лексем. |
Часть программы, формирующая таблицы лексем, проверена преподавателем |
Выполнено 26.03.2020 |
|
Построение дескрипторного кода и псевдокода |
Часть программы, формирующая дескрипторный и псевдокод, проверена преподавателем |
Выполнено 15.04.2020 |
|
Написать части лексического анализатора по обработке лексических ошибок |
Часть программы, выявляющая ошибки в тексте, проверена преподавателем |
Выполнено 20.05.2020 |
|
Составление КС-грамматики для синтаксического анализа |
По построенной КСГ проделан успешный синтаксический анализ обрабатываемого кода |
Выполнено 28.05.2020 |
|
Подготовка документации |
Расчётно-пояснительная записка проверена преподавателем |
Выполнено |
|
Защита курсовой работы |
Курсовая работа защищена |
Выполнено |
Приложение 2
Руководство пользователя
Приложение Project является лексическим обработчиком входного кода программы. В ходе работы приложение производит такие действия с кодом как удаление комментариев, лишних пробелов и пустых строк, а также распределяет слова-лексемы по соответствующим таблицам классов и на основе таблиц создаёт дескрипторный код и псевдокод.
Для запуска приложения нужно открыть одноимённый файл Project.exe. Для этого нужно либо дважды нажать Левую кнопку мыши при наведённом на файл курсоре, либо нажать клавишу Enter при выделенном файле.
После открытия файла появляется следующее окно (рисунок 14).
Рис. 14. Интерфейс приложения.
Рис. 15. Поле для ввода кода.
В данном поле необходимо ввести код, подлежащий обработке (рисунок 15).
После нажатия кнопки «start processing» запускается обработка кода (рисунок 16). Происходит:
3.2 удаление комментариев, пробелов и пустых строк;
3.3 запись обработанного кода в нижний левый текстовый блок с нумерацией строк;
3.4 запись лексем в таблицы;
3.5 формирование псевдо и дискрипторного кодов.
Рис. 16. Обработка кода.
Если в процессе обработки кода программа найдет ошибку, то программа прервется и выдаст сообщение о ее названии и фрагмент этой ошибки (рисунок 17).
Рис. 17. Пример ошибки.
После нажатия копки «error processing» запускается анализ кода на наличие ошибок (рисунок 18).
Рис. 18. Анализ кода на наличие ошибок.
После нажатия кнопки “clear” производиться очистка вспомогательных полей. Главный текстовый блок, в котором располагается основной код, не очищается (рисунок 19).
Рис. 19. Очистка текстовых полей и таблиц.
Приложение 3: программный код
Заголовочный файл
#ifndef prv
#define prv
#include <string>
bool punctz(wchar_t c)
{
return (c == ',' || c== ';' || c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c== '}'||c =='"');
}
bool digit(wchar_t c)
{
return (c == '0' || c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9');
}
bool word(wchar_t c)
{
return (c == 'a' || c == 'b' || c == 'c' || c == 'd' || c == 'e' || c == 'f' || c == 'g' || c == 'h'
|| c == 'i' || c == 'j' || c == 'k' || c == 'l' || c == 'm' || c == 'n' || c == 'o' || c == 'p'
|| c == 'q' || c == 'r' || c == 's' || c == 't' || c == 'u' || c == 'v' || c == 'w' || c == 'x'
|| c == 'y' || c == 'z' || c == '_' || c == 'A' || c == 'B' || c == 'C' || c == 'D' || c == 'E'
|| c == 'F' || c == 'G' || c == 'H'
|| c == 'I' || c == 'J' || c == 'K' || c == 'L' || c == 'M' || c == 'N' || c == 'O' || c == 'P'
|| c == 'Q' || c == 'R' || c == 'S' || c == 'T' || c == 'U' || c == 'V' || c == 'W' || c == 'X'
|| c == 'Y' || c == 'Z');
}
double o_perat(wchar_t c){
switch (c) {
case '>':
return 1;
case '<':
return 2;
case '=':
return 3;
case '+':
return 4;
case '*':
return 5;
case '-':
return 6;
case '!':
return 7;
case '|':
return 8;
case '&':
return 9;
}
return 0;
}
int o_perat1(int c) {
switch (c) {
case 1:
return 2;
case 2:
return 2;
case 3:
return 1;
case 4:
return 1;
case 5:
return 1;
case 6:
return 1;
case 7:
return 2;
case 9:
return 1;
case 11:
return 1;
case 13:
return 2;
case 22:
return 1;
case 23:
return 2;
case 33:
return 2;
case 43:
return 1;
case 44:
return 1;
case 53:
return 1;
case 63:
return 1;
case 66:
return 1;
case 73:
return 2;
case 88:
return 2;
case 99:
return 1;
}
return 0;
}
#endif
Основной код
#pragma once
#include <iostream>
#include <string>
#include <windows.h>
#include "proverk.h"
namespace Project {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Text;
/// <summary>
/// Сводка для MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
private: System::Windows::Forms::Label^ label7;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
public:
/*protected:
virtual void WndProc(Message% m) override
{
System::Windows::Forms::Form::WndProc(m);
if (m.Msg == WM_DEVICECHANGE)
{
}
}*/
private: System::Windows::Forms::MessageBox^ Mb;
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::RichTextBox^ richTextBox1;
protected:
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::RichTextBox^ richTextBox2;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::DataGridView^ keyWord1;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column1;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column2;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column3;
private: System::Windows::Forms::DataGridView^ op1;
private: System::Windows::Forms::DataGridView^ ops1;
private: System::Windows::Forms::DataGridView^ constant1;
private: System::Windows::Forms::DataGridView^ ident1;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::Label^ label5;
private: System::Windows::Forms::Label^ label6;
private: System::Windows::Forms::DataGridView^ punctuation1;
private: System::Windows::Forms::RichTextBox^ richTextBox3;
private: System::Windows::Forms::RichTextBox^ richTextBox4;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn1;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn2;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn3;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn4;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn5;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn6;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn7;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn8;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn9;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn10;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn11;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn12;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn13;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn14;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ dataGridViewTextBoxColumn15;
private:
/// <summary>
/// Обязательная переменная конструктора.
/// </summary>
System::ComponentModel::Container^ components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Требуемый метод для поддержки конструктора -- не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
void InitializeComponent(void)
{
System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(MyForm::typeid));
this->richTextBox1 = (gcnew System::Windows::Forms::RichTextBox());
this->button1 = (gcnew System::Windows::Forms::Button());
this->richTextBox2 = (gcnew System::Windows::Forms::RichTextBox());
this->keyWord1 = (gcnew System::Windows::Forms::DataGridView());
this->Column1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->Column2 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->Column3 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->op1 = (gcnew System::Windows::Forms::DataGridView());
this->dataGridViewTextBoxColumn1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn2 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn3 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->ops1 = (gcnew System::Windows::Forms::DataGridView());
this->dataGridViewTextBoxColumn4 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn5 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn6 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->constant1 = (gcnew System::Windows::Forms::DataGridView());
this->dataGridViewTextBoxColumn7 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn8 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn9 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->ident1 = (gcnew System::Windows::Forms::DataGridView());
this->dataGridViewTextBoxColumn10 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn11 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn12 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->label4 = (gcnew System::Windows::Forms::Label());
this->label5 = (gcnew System::Windows::Forms::Label());
this->label6 = (gcnew System::Windows::Forms::Label());
this->punctuation1 = (gcnew System::Windows::Forms::DataGridView());
this->dataGridViewTextBoxColumn13 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn14 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->dataGridViewTextBoxColumn15 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->richTextBox3 = (gcnew System::Windows::Forms::RichTextBox());
this->richTextBox4 = (gcnew System::Windows::Forms::RichTextBox());
this->label7 = (gcnew System::Windows::Forms::Label());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->keyWord1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->op1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->ops1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->constant1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->ident1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->punctuation1))->BeginInit();
this->SuspendLayout();
//
// richTextBox1
//
this->richTextBox1->Anchor = System::Windows::Forms::AnchorStyles::Top;
this->richTextBox1->Location = System::Drawing::Point(12, 12);
this->richTextBox1->Name = L"richTextBox1";
this->richTextBox1->Size = System::Drawing::Size(312, 139);
this->richTextBox1->TabIndex = 0;
this->richTextBox1->Text = resources->GetString(L"richTextBox1.Text");
this->richTextBox1->TextChanged += gcnew System::EventHandler(this, &MyForm::richTextBox1_TextChanged);
//
// button1
//
this->button1->Anchor = System::Windows::Forms::AnchorStyles::Top;
this->button1->Location = System::Drawing::Point(329, 12);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(79, 47);
this->button1->TabIndex = 1;
this->button1->Text = L"start processing";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click);
//
// richTextBox2
//
this->richTextBox2->Anchor = System::Windows::Forms::AnchorStyles::Top;
this->richTextBox2->Location = System::Drawing::Point(12, 157);
this->richTextBox2->Name = L"richTextBox2";
this->richTextBox2->Size = System::Drawing::Size(312, 139);
this->richTextBox2->TabIndex = 2;
this->richTextBox2->Text = L"";
this->richTextBox2->TextChanged += gcnew System::EventHandler(this, &MyForm::richTextBox2_TextChanged);
//
// keyWord1
//
this->keyWord1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
this->keyWord1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
this->keyWord1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^>(3) {
this->Column1, this->Column2,
this->Column3
});
this->keyWord1->EnableHeadersVisualStyles = false;
this->keyWord1->Location = System::Drawing::Point(12, 316);
this->keyWord1->Name = L"keyWord1";
this->keyWord1->RightToLeft = System::Windows::Forms::RightToLeft::No;
this->keyWord1->RowHeadersVisible = false;
this->keyWord1->Size = System::Drawing::Size(113, 103);
this->keyWord1->TabIndex = 9;
this->keyWord1->CellContentClick += gcnew System::Windows::Forms::DataGridViewCellEventHandler(this, &MyForm::keyWord1_CellContentClick);
//
// Column1
//
this->Column1->HeaderText = L"10";
this->Column1->Name = L"Column1";
this->Column1->Width = 30;
//
// Column2
//
this->Column2->HeaderText = L"д/к";
this->Column2->Name = L"Column2";
this->Column2->Width = 40;
//
// Column3
//
this->Column3->HeaderText = L"п/к";
this->Column3->Name = L"Column3";
this->Column3->Width = 40;
//
// label1
//
this->label1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(12, 300);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(67, 13);
this->label1->TabIndex = 10;
this->label1->Text = L"Ключ.Слова";
//
// label2
//
this->label2->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(131, 300);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(64, 13);
this->label2->TabIndex = 11;
this->label2->Text = L"Операторы";
//
// label3
//
this->label3->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(252, 300);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(89, 13);
this->label3->TabIndex = 12;
this->label3->Text = L"Оператор.сравн";
//
// op1
//
this->op1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
this->op1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
this->op1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^>(3) {
this->dataGridViewTextBoxColumn1,
this->dataGridViewTextBoxColumn2, this->dataGridViewTextBoxColumn3
});
this->op1->EnableHeadersVisualStyles = false;
this->op1->Location = System::Drawing::Point(133, 316);
this->op1->Name = L"op1";
this->op1->RightToLeft = System::Windows::Forms::RightToLeft::No;
this->op1->RowHeadersVisible = false;
this->op1->Size = System::Drawing::Size(113, 103);
this->op1->TabIndex = 13;
//
// dataGridViewTextBoxColumn1
//
this->dataGridViewTextBoxColumn1->HeaderText = L"20";
this->dataGridViewTextBoxColumn1->Name = L"dataGridViewTextBoxColumn1";
this->dataGridViewTextBoxColumn1->Width = 30;
//
// dataGridViewTextBoxColumn2
//
this->dataGridViewTextBoxColumn2->HeaderText = L"д/к";
this->dataGridViewTextBoxColumn2->Name = L"dataGridViewTextBoxColumn2";
this->dataGridViewTextBoxColumn2->Width = 40;
//
// dataGridViewTextBoxColumn3
//
this->dataGridViewTextBoxColumn3->HeaderText = L"п/к";
this->dataGridViewTextBoxColumn3->Name = L"dataGridViewTextBoxColumn3";
this->dataGridViewTextBoxColumn3->Width = 40;
//
// ops1
//
this->ops1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom));
this->ops1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
this->ops1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^>(3) {
this->dataGridViewTextBoxColumn4,
this->dataGridViewTextBoxColumn5, this->dataGridViewTextBoxColumn6
});
this->ops1->EnableHeadersVisualStyles = false;
this->ops1->Location = System::Drawing::Point(252, 316);
this->ops1->Name = L"ops1";
this->ops1->RightToLeft = System::Windows::Forms::RightToLeft::No;
this->ops1->RowHeadersVisible = false;
this->ops1->Size = System::Drawing::Size(113, 103);
this->ops1->TabIndex = 14;
//
// dataGridViewTextBoxColumn4
//
this->dataGridViewTextBoxColumn4->HeaderText = L"30";
this->dataGridViewTextBoxColumn4->Name = L"dataGridViewTextBoxColumn4";
this->dataGridViewTextBoxColumn4->Width = 30;
//
// dataGridViewTextBoxColumn5
//
this->dataGridViewTextBoxColumn5->HeaderText = L"д/к";
this->dataGridViewTextBoxColumn5->Name = L"dataGridViewTextBoxColumn5";
this->dataGridViewTextBoxColumn5->Width = 40;
//
// dataGridViewTextBoxColumn6
//
this->dataGridViewTextBoxColumn6->HeaderText = L"п/к";
this->dataGridViewTextBoxColumn6->Name = L"dataGridViewTextBoxColumn6";
Подобные документы
Разработка учебного транслятора на языке программирования C# в среде объектно-ориентированного программирования Visual Studio 2012. Выделение лексем и построение цепочки символов на этапе синтаксического анализа. Функциональное тестирование программы.
курсовая работа [406,8 K], добавлен 07.08.2013Содержательная часть языка программирования С++. Правила автоматной грамматики, классификация Хомского. Принцип построения графов, разработка проекта средствами среды программирования Builder C++. Алгоритм синтаксического анализа оператора вывода.
контрольная работа [228,4 K], добавлен 22.05.2012Описание синтаксиса и семантики входного языка. Описание типов лексем, определение их синтаксиса. Построение диаграммы лексического анализатора, а также его таблицы, тестирование. Построение КС-грамматики входного языка. Описание промежуточного языка.
курсовая работа [83,0 K], добавлен 23.01.2014Написание программы, которая выполняет лексический и синтаксический анализ входного языка программирования, порождает таблицу лексем с указанием их типов и значений, а также строит синтаксическое дерево; текст входного языка вводится с клавиатуры.
курсовая работа [761,5 K], добавлен 23.02.2012Понятие синтаксического анализа. Программный продукт для обработки данных строкового типа. Построение сканера текстов с использованием утилиты flex, синтаксического анализатора с помощью утилиты bison. Грамматика языка программирования обработки строк.
курсовая работа [261,7 K], добавлен 29.10.2012Морфологические анализаторы (морфологизаторы) на различных языках программирования. Анализ методов и технологий автоматической обработки ЕЯ-текстов. Разработка модуля графематического анализа и создания таблицы лексем. Программная реализация классов.
дипломная работа [3,0 M], добавлен 06.03.2012Общая характеристика и оценка возможностей языка программирования си-шарп, его сходные и отличительные черты от С++ и Java. Разработка с помощью данного языка программирования лексического и синтаксического анализатора. Составление таблиц разбора.
курсовая работа [111,6 K], добавлен 11.06.2010Входная грамматика в структурированной форме. Функции переходов символьного преобразователя. Работа лексического анализатора. Структуры данных, символы действия. Описание семантики перевода. Построение и программная реализация атрибутного преобразователя.
курсовая работа [128,9 K], добавлен 03.07.2013Розробка операційного автомату. Розробка машинного алгоритму: граф-схема алгоритму; приклад реалізації. Синтез керуючого автомату: основи теорії керуючих автоматів; опис керуючого автомату Мілі. Кодування граф-схеми автомату. Синтез керуючого автомату.
курсовая работа [121,0 K], добавлен 26.12.2009Описание проектного решения стратегической системы, этапы объектно-ориентированного анализа и проектирования. Описание связей между объектами. Программная реализация, построение модели состояний объекта. Руководство пользователя и описание программы.
курсовая работа [388,8 K], добавлен 17.11.2011