Методика разработки и частичная реализация транслятора для языка "С" с использованием языка "С ", производящего разбиение на минимальные неделимые конструкции языка исходной цепочки символов основываясь на лексике языка. Анализ работы программы.
Аннотация к работе
Программные системы, предназначенные для анализа и интерпретации текстов, называются трансляторами. Несмотря на то, что к настоящему времени разработаны тысячи различных языков и их трансляторов, процесс создания новых приложений в этой области не прекращается. В данной работе будет представлена частичная реализация транслятора для языка «С» с использованием языка «С ». Также он должен производить построение промежуточного дерева разбора для основных конструкций языка. Для демонстрации работы транслятора возьмём в качестве анализируемого следующий код на языке «С»: #include «dim.h» int a; char b=\0x56; AnsiString s=»\ «k\abcd\k\»
\a \056 \0x56»; bool c=true; bool Dim_1 (int v, int e, int d); void main() {/* Многострочный комментарий/* // Однострочный комментарий double i_dim_78=5465.56, d=321; double c_1=(013 0Xab 1.*12)*5; char sim=b; int i=5*(6 7) 8*sim -a; while(a) { switch (sim) { case 2: sim=\a; break; case 3: sim=
; break; default: a*=0x56; } if (sim==7||sim==8||sim==9) { if (sim==-7) {sim ; sim/=2;} else sim/=2; if (sim==8) {sim ; sim/=03;} else sim/=02; } else - sim; a ; } for (int j=0; j=a&&LowerCase (str[j 1])256) {PrintError («Диапазон Char», pos); break;} else result =(char) res_i; break; } if (LowerCase (str[i 1])!=x) { for (int j=i; isdigit (str[j 1]); j ) { if (str [j 1]>=0&&str [j 1]256) {PrintError («Диапазон Char в последовательности», pos); break;} else result =(char) res_i; break; } } default: PrintError («Ошибка в управляющей последовательности.», pos); } } else {result =str[i]; len ;} if (i 1==str.