Проектирование приложения, осуществляющего синтаксический анализ программы

Решение задач синтаксического анализа простой программы. Алгоритм нахождения синтаксических ошибок в ее тексте. Вывод данных о местоположении ошибки. Проектирование программы анализа арифметического выражения и методы проверки его на сумму или разность.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.07.2011
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

printf("Вы ввели неправильное выражение, введите заного\n");

flag=true;

}

if (cnt!=0)

{

printf("Найдено несовпадение скобок\n");

flag=true;

}

}while(flag);

for (i=0; string[i]!=0; i++)

{

if (string[i]=='(') cnt++;

if (string[i]==')') cnt--;

if (!cnt)

{

if (string[i]=='+') cnt1++;

if (string[i]=='-') cnt1--;

}

}

if (cnt1)

{

if (cnt1>0) printf("Введенное выражение сумма\n");

if (cnt1<0) printf("Введенное выражение разность\n");

}

else printf("Выражение не содержит ни суммы ни разности\n");

}

Исходный код программы анализа простой программы на языке С.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define bool char

#define true 1

#define false 0

int Number_of_strings(FILE *fl){

char tmp=getc(fl);

int n=0;

while(tmp!=EOF){

if (tmp=='\n') n++;

tmp=getc(fl);

}

return n;

}

void Move_strings1(char a[][80], char d[2], int row, int start, int rep){

int i=0, j=0;

for (j=0; j<rep; j++){

if (d=="<<"){

for (i=start; i<79; i++) a[row][i]=a[row][i+1];

}

if(d==">>"){

for (i=79; i>=start; i--) a[row][i]=a[row][i-1];

a[row][start]=' ';

}

}

}

void Comment_killer(char code[][80],int n_str){

int i=0, j=0, cnt=0;

int err_row=0, err_col=0;

for (i=0; i<n_str; i++){

for (j=0; code[i][j]!=0; j++){

if (code[i][j]=='/'&&code[i][j+1]=='*') {cnt++; err_row=i; err_col=j;}

if (code[i][j]=='*'&&code[i][j+1]=='/') cnt--;

if (cnt<0) {printf("%i:%i: Ошибка: Найден закрывающий комментарий\n",i,j);exit(1);}

}

}

if (cnt!=0) {printf("%i:%i: Ошибка: Незакрытый комментарий\n",err_row, err_col);exit(1);}

cnt=0;

for (i=0; i<n_str; i++){

for (j=0; code[i][j]!=0; j++){

if (code[i][j]=='/'&&code[i][j+1]=='*'){

cnt=1;break;

}

if (code[i][j]=='*'&&code[i][j+1]=='/'){

Move_strings1(code,">>",i,0,1); code[i][0]=0;

cnt=0; break;

}

}

if (cnt!=0) {Move_strings1(code,">>",i,0,1); code[i][0]=0;}

}

for (i=0; i<n_str; i++){

for (j=0; j<80; j++){

if (code[i][j]=='/'&&code[i][j+1]=='/'){

if (j){

Move_strings1(code, ">>",i, j, 2); code[i][j]='\n'; code[i][j+1]=0;

}

else{

Move_strings1(code, ">>",i, j, 1);code[i][j]=0;

}

break;

}

}

}

}

int Text_search(char *tmp, char code[][80], int str){

int i=0, col=0, cnt=0;

for (col=0; code[str][col]!=0; col++){

if (code[str][col]==tmp[0]){

for (i=0; i<strlen(tmp); i++){

if ((code[str][col+i]==tmp[i])) cnt++;

}

if (cnt==strlen(tmp)) {return col;}

else cnt=0;

}

}

if (!cnt) {

return -1;

}

}

void Space_killer(char code[][80], int n_str){

int row=0, col=0;

bool s=0, s1=0;

for (row=0; row<n_str; row++){

for (col=0; code[row][col]!=0; col++){

if (code[row][col]=='"') s=1-s;

if (code[row][col]=='/'&&code[row][col+1]=='*') s1=1;

if (code[row][col]=='*'&&code[row][col+1]=='/') s1=0;

if (code[row][col]=='/'&&code[row][col+1]=='/') row++;

if (((code[row][col]==' ')||(code[row][col]=='\t'))&&(!s)&&(!s1)){

int j=0;

for (j=col; code[row][j]!=0; j++){

code[row][j]=code[row][j+1];

}

col--;

}

}

}

}

void Double_brackets(char code[][80], int n_str){

int row=0, col=0, cnt=0, cnt1=0, cnt2=0, cnt3=0;

for(row=0; row<n_str; row++){

for (col=0; col<80; col++){

if (code[row][col]=='(') cnt++;

if (code[row][col]=='[') cnt1++;

if (code[row][col]=='{') cnt2++;

if (code[row][col]==')') cnt--;

if (code[row][col]==']') cnt1--;

if (code[row][col]=='}') cnt2--;

if (code[row][col]=='"') cnt3++;

}

}

if (cnt){

cnt=0;

for(row=0; row<n_str; row++){

for (col=0; col<80; col++){

if (code[row][col]=='('){

if (!((code[row][col-1]=='\'')&&(code[row][col+1]=='\''))) cnt++;

}

if (code[row][col]==')'){

if (!((code[row][col-1]=='\'')&&(code[row][col+1]=='\''))) cnt--;

}

}

if (cnt>0){

printf("%i:%i: Ошибка: Неправильный символ ( \n", row, Text_search("(",code, row));

exit(1);

break;

}

if (cnt<0){

printf("%i:%i: Ошибка: Неправильный символ ) \n", row, Text_search(")",code, row));

exit(1);

break;

}

cnt=0;

}

}

if (cnt1){

cnt1=0;

for(row=0; row<n_str; row++){

for (col=0; col<80; col++){

if (code[row][col]=='[') cnt1++;

if (code[row][col]==']') cnt1--;

}

if (cnt1>0){

printf("%i:%i: Ошибка: Неправильный символ [ \n", row, Text_search("[",code, row));

exit(1);

break;

}

if (cnt1<0){

printf("%i:%i: Ошибка: Неправильный символ ] \n", row, Text_search("]",code, row));

exit(1);

break;

}

cnt1=0;

}

}

if (cnt2){

int sum=0;

cnt2=0;

for(row=0; row<n_str; row++){

if (Text_search("{",code, row)){

printf("%i:%i: Ошибка: Лишняя открывающая скобка\n", row, col);

exit(1);

break;

}

}

}

if (cnt3%2){

int i=0; cnt3=0;

for (row=0; row<n_str; row++){

for (i=0; i<80; i++) {if (code[row][i]=='"') cnt3++;}

if (cnt3%2) printf("%i: Ошибка: Не найден парный символ \" в этой строке\n",row);

exit(1);

cnt3=0;

}

}

}

void Indent(char code[][80], int n_str){

int i=0, j=0;

for (i=0; i<n_str; i++){

for (j=0; j<80; j++){

if (code[i][0]!=0){

if ((code[i][j]==';'||code[i][j]==':')&&code[i][j+1]!=0&&code[i][j+1]!='\n'){

Move_strings1(code,">>",i, j+1,1); code[i][j+1]='\n';

}

if (code[i][j]=='{'||code[i][j]=='}'){

if (j==0){

if (code[i][j+2]!=0){Move_strings1(code,">>",i, j+1,1);code[i][j+1]='\n';}

}

else{

if (code[i][j+1]!=0){

Move_strings1(code,">>",i,j,1);

code[i][j]='\n';

if (code[i][j+2]!=0){

if (code[i][j+2]!='\n'){

Move_strings1(code, ">>",i,j+2,1);

code[i][j+2]='\n';}

}

}

}

j+=2;

}

}

}

}

int t=0;

for (i=0; i<n_str; i++){

Move_strings1(code,">>",i,0,t);

for (j=0; code[i][j]!=0; j++){

if (code[i][j]=='{'){

t+=2;

}

if (code[i][j]=='}') t-=2;

}

for (j=0; j<80; j++) {

if (code[i][j]=='}') Move_strings1(code, "<<", i, 0, 2);

if (code[i][j]=='\n'&&code[i][j+1]!=0){

if (code[i][j+1]=='{') Move_strings1(code,">>",i,j+1,t-2);

else {

if (code[i][j+1]=='}') Move_strings1(code,">>",i,j+1,t);

else Move_strings1(code, ">>", i, j+1, t);

}

}

}

}

for (i=0; i<n_str; i++){

if (code[i][0]==0) Move_strings1(code,"<<",i,0,1);

for (j=0; j<80; j++){

if (code[i][j]==0&&code[i][j+1]=='/'&&code[i][j+2]=='/'){

int k=0,l=0,lock=0;

for (k=0; k<=j; k++) if (code[i][k]==0||code[i][k]=='\n') code[i][k]=' ';

Move_strings1(code,"<<",i,j-3,4);

}

}

}

}

int Library(char code[][80], int n_str){

int row=0, pos=0;;

for (row=0; row<n_str; row++){

int tmp=0, tmp1=0;

if (Text_search("<stdio.h>", code, row)>=0){

tmp=Text_search("<stdio.h>", code, row);

tmp1=Text_search("#include", code, row);

pos=row;

if ((tmp-tmp1)<0) printf("%i: Ошибка: Неправильная инициализация библиотеки\n",pos);

else pos=row;

}

}

if (pos) return pos;

else {printf("Ошибка: Библиотека не инициализирована\n"); return -1;}

}

void Save(char code[][80], int n_str, char *name){

FILE *F;

F=fopen(name, "w");

int i=0, j=0;

for (i=0; i<n_str; i++){

for (j=0; code[i][j]!=0; j++) putc(code[i][j], F);

}

fclose(F);

}

void Symbols(char code[][80], int n_str){

int i=0, j=0,t=0;

for (i=0; i<n_str; i++){

for (j=0; j<80; j++){

if (code[i][j]=='"') t=1-t;

if (code[i][0]!=0&&!t){

if (code[i][j]>=65 && code[i][j]<=90){

code[i][j]=code[i][j]+32;

}

if (!strchr("abcdefghijklmnopqrstuvwxyz=%;\"\"&<>:} \n{,.!+-*/\\) #(1234567890", code[i][j])){

printf("%i:%i: Ошибка: Не корректный символ \"%c\"\n",i, j, code[i][j]); exit(1);

}

}

}

}

}

struct{

char v_name;

bool type;

int init_pos_x;

int init_pos_y;

}var[4];

void Operators(char code[][80], int n_str){

int row=0, main=0, var_num=0;

//Анализатор функции main

{

bool lock=1;

for (row=0; row<n_str; row++){

if (Text_search("intmain()", code, row)==0&&lock){

main=row; lock=0; row++;

int tmp=Text_search("intmain()", code, row-1)+3;

Move_strings1(code, ">>", row-1, tmp, 1);

}

if (Text_search("intmain()", code, row)>=0&&!lock){

printf("%i: Ошибка: Неправильная инициализация функции main()\n",row);

}

}

if (!main) printf("Ошибка: Функция main() не инициализирована\n");

}

//Анализатор инициализации переменных

{

int i=0;

for (i=0; i<n_str; i++){

if (Text_search("int",code, i)>=0){

int tmp=Text_search("int",code,i);

if (code[i][tmp+4]!=';'&&i!=main){

if (code[i][tmp-1]!='r'){

printf("%i:%i: Ошибка: Неправильная инициализация переменной\n",i, tmp+3);

}

}

else{

if (i!=main){

tmp+=3;Move_strings1(code, ">>",i,tmp, 1); tmp++;

if (var_num<4){

var[var_num].v_name=code[i][tmp]; var[var_num].type=3;

var[var_num].init_pos_x=i; var[var_num].init_pos_y=tmp; var_num++;

}

}

}

}

if (Text_search("float",code, i)>=0){

int tmp=Text_search("float",code, i); tmp+=5;

Move_strings1(code, ">>",i, tmp,1); tmp++;

if (var_num<4){

var[var_num].v_name=code[i][tmp]; var[var_num].type=5;

var[var_num].init_pos_x=i; var[var_num].init_pos_y=tmp; var_num++;

}

}

}

}

//Анализатор функций ввода-вывода

{

int lib=Library(code, n_str);

for (row=0; row<n_str; row++){

if (Text_search("scanf", code, row)>=0){

int tmp=0;

if (row<lib) printf("%i: Ошибка: Библиотека не объявнена\n",row);

else{

tmp=Text_search("scanf", code, row);

tmp+=5;

if (code[row][tmp]!='(') printf("%i: %i: Ошибка: Пропущена открывающая скобка\n", row, tmp);

else tmp++;

if (code[row][tmp]=='"'&&code[row][tmp+3]=='"'){

bool flag=1, m=0, lock=0, type=0;

if (code[row][tmp+1]!='%') {printf("%i:%i: Ошибка: Ожидался символ %c после (\n",row, tmp+1, code[row][tmp+1]);flag=0;}

if (code[row][tmp+2]!='i'&&code[row][tmp+2]!='f'&&flag) {printf("%i:%i: Ошибка: Неизвестный тип данных\n",row, tmp+2);flag=0;}

if (code[row][tmp+4]!=','&&flag) {printf("%i:%i: Ошибка: Нет разделителя межлу типом и аргументом\n",row, tmp+4);flag=0;}

if (code[row][tmp+5]!='&'&&flag) {printf("%i:%i: Ошибка: Нет указателя на переменную\n",row, tmp+5);flag=0;}

if(flag){

if (code[row][tmp+2]=='i') type=3; if (code[row][tmp+2]=='f') type=5;

for (m=0; m<var_num; m++){

if ((code[row][tmp+6]==var[m].v_name)&&(type==var[m].type)) lock=1;

}

if (!lock) printf("%i:%i: Ошибка: Неправильные данные или не инициализированая переменная\n",row, tmp+6);

}

if (code[row][tmp+7]!=')'&&flag) {printf("%i:%i: Ошибка: Пропущена закрывающая скобка\n",row, tmp+7);flag=0;}

if (code[row][tmp+8]!=';'&&flag) printf("%i:%i: Ошибка: Одидался знак ;\n",row, tmp+8);

}

else printf("%i:%i: Ошибка: Нет типа данных для ввода\n",row, tmp);

}

}

if (Text_search("printf", code, row)>=0){

if (row<lib) printf("%i: Ошибка: Библиотека не объявнена\n",row);

else{

int tmp=0, m=0, lock=0, type=0;

tmp=Text_search("printf", code, row);

tmp+=6;

if (code[row][tmp]!='(') printf("%i: %i: Ошибка: Пропущена открывающая скобка\n", row, tmp);

if (code[row][tmp+1]=='"'&&code[row][tmp+4]=='"'){

bool flag=1;

if (code[row][tmp+2]!='%'&&flag) {printf("%i:%i: Ошибка: Ожидался символ %c после (\n",row, tmp+1, code[row][tmp+1]);flag=0;}

if (code[row][tmp+3]!='i'&&code[row][tmp+3]!='f'&&flag) {printf("%i:%i: Ошибка: Неизвестный тип данных\n",row, tmp+2);flag=0;}

if (code[row][tmp+5]!=','&&flag) {printf("%i:%i: Нет разделителя межлу типом и аргументом\n",row, tmp+4);flag=0;}

if(flag){

if (code[row][tmp+3]=='i') type=3; if (code[row][tmp+3]=='f') type=5;

for (m=0; m<var_num; m++){

if ((code[row][tmp+6]==var[m].v_name)&&(type==var[m].type)) lock=1;

}

if (!lock) printf("%i:%i: Ошибка: Неправильные данные или не инициализированая переменная\n",row, tmp+6);

}

if (code[row][tmp+7]!=')'&&flag) {printf("%i:%i: Ошибка: Пропущена открывающая скобка\n",row, tmp+7);flag=0;}

if (code[row][tmp+8]!=';'&&flag) printf("%i:%i: Ошибка: Ожидался символ ;\n",row, tmp+8);

}

else{

int t=0, i=0;

for (i=tmp+2; code[row][i]!=0; i++){

if (code[row][i]=='\"') {t=i; break;}

}

if (!t) printf("%i:%i: Ошибка: Ожидался символl \"\n",row,tmp+1);

else{

if (code[row][t+1]!=')') printf("%i:%i: Ошибка: Пропущена закрывающая скобка\n",row, t+1);

if (code[row][t+2]!=';') printf("%i:%i: Ошибка: Ожидался знак ;\n",row, t+2);

}

}

}

}

}

}

//Анализатор оператора goto

{

for (row=0; row<n_str; row++){

if (Text_search("goto", code, row)>=0){

int tmp=Text_search("goto", code, row)+5, i=0;

char label[9]={0};

Move_strings1(code, ">>", row, tmp-1, 1);

for (i=tmp; code[row][i]!=';'; i++) ;

if (i-tmp>=8) printf("%i: Ошибка: Слишком длинное имя метки или нету ; перед меткой\n",row);

else{

int j=0; bool lock=0;

for (j=tmp; j<i; j++) label[j-tmp]=code[row][j];

for (j=0; label[j]!=0; j++) ; label[j]=':';

for (j=0; j<n_str; j++){

int k=0;

for (k=0; k<80; k++){

int l=0, ct=0;

for (l=0; label[l]!=0; l++) if (label[l]==code[j][k+l]) ct++;

if (ct==strlen(label)){

lock=1;

if (j<main) printf("%i: Ошибка: Метка не может находиться за пределами функции main()\n",j);

}

}

}

if (!lock) printf("Ошибка: Меток не найдено\n");

}

}

}

}

//Анализатор оператора if

{

for (row=0; row<n_str; row++){

if (Text_search("if",code,row)>=0){

int tmp=Text_search("if",code,row)+2, t=0, i=0;

Move_strings1(code, ">>",row, tmp,1);tmp++;

if (code[row][tmp]=='(') t++;

else{printf("%i:%i: Ошибка: некорректный оператор if\n",row, tmp);}

for (i=tmp+1; t!=0; i++){

if (code[row][i]=='(') t++;

if (code[row][i]==')') t--;

if (!strchr("=%&<>.!+-*/)|(1234567890", code[row][i])){

int j=0, lock=0;

for (j=0; j<var_num; j++){

if (var[j].v_name==code[row][i]) lock=1;

}

if (!lock) printf("%i:%i: Ошибка: Неправильный символ или не инициализированая переменная\n",row, i);

}

}

int els=0;

for (i=0; i<row; i++){

if (Text_search("else",code,i)>=0) {els=i;break;}

}

if (els) printf("%i:%i: Ошибка: Else не может находится перед if\n",Text_search("else",code,els),els);

}

}

}

//Анализатор оператора switch

{

int sw=0;

for (row=0; row<n_str; row++){

if (Text_search("switch",code, row)>=0){

int tmp=Text_search("switch",code, row); tmp+=6;sw++;

Move_strings1(code, ">>",row,tmp, 1); tmp++;

if (!(code[row][tmp]=='('&&code[row][tmp+2]==')')){

printf("%i:%i: Ошибка: Неправильное размещение скобок\n",row,tmp);

}

else{

int i=0,lock=1, num=0;

for (i=0; i<var_num; i++){

if (code[row][tmp+1]==var[i].v_name) {lock=0;num=i;}

}

if (lock) printf("%i:%i: Ошибка: Не инициализированая переменная \'%c\'\n",row, tmp+1,code[row][tmp+1]);

else{

if(var[num].type==5) printf("%i:%i: Ошибка: Нельзя использовать отличные от \'int\' типы данных\n",row, tmp+1);

}

for (i=0; i<row; i++){

int tmp=Text_search("case",code,i);

if (tmp>=0) printf("%i:%i: Ошибка: Case не может находится перед switch\n",i, tmp);

}

int c=0;

for (i=row; i<n_str; i++){

int tmp=Text_search("case",code,i);

if (tmp>=0){

tmp+=4; Move_strings1(code, ">>",i, tmp, 1); tmp++; c++;

if (!(code[i][tmp]>=48&&code[i][tmp]<=57)){

printf("%i:%i: Ошибка: Только константы могут сочетаться с case\n",i, tmp);

}

if (code[i][tmp+1]!=':') printf("%i:%i: Ошибка: Нет \':\' после case\n",i, tmp);

}

}

if (!c) printf("Switch не может использоваться без case\n");

}

}

}

if (!sw){

for (row=0; row<n_str; row++){

int tmp=Text_search("case",code,row);

if (tmp>=0) printf("%i:%i: Ошибка: Case не может использоваться без switch\n",row,tmp);

}

}

}

//Анализатор арифметических выражений в коде

{

int i=0, j=0;

for (i=0; i<n_str; i++){

for (j=0; j<80; j++){

if ((code[i][j]=='+'||code[i][j]=='-'||code[i][j]=='*'||code[i][j]=='/'||code[i][j]=='=')&&(code[i][0]!=0)){

int k=0, m=0;

for (k=0; k<80; k++) if ((code[i][k]=='/')&&(code[i][k+1]=='/')) m++;

if (m!=1){

int t=0, l=0;

bool lock1=0, lock2=0;

for (l=0; l<var_num; l++){

if ((var[l].v_name==code[i][j-1])||(code[i][j-1]>=48&&code[i][j-1]<=57)) lock1=1;

if (var[l].v_name==code[i][j+1]||(code[i][j+1]>=48&&code[i][j+1]<=57)) lock2=1;

}

if (!lock1) printf("%i:%i: Ошибка: Символ слева от \'%c\' не является ни переменной ни константой\n",i, j-1, code[i][j]);

if (!lock2) printf("%i:%i: Ошибка: Символ справа от \'%c\' не является ни переменной ни константой\n",i, j+1, code[i][j]);

}

}

}

}

}

}

int main(){

char filename[255]={0};

printf("Введите имя файла для анализа\n");

system("dir");

FILE *F;

do{

gets(filename);

if ((F=fopen(filename,"r"))==NULL){

printf("Ошибка во время открытия файла\n");

}

break;

}while(1);

const int n_str=Number_of_strings(F)+2;

rewind(F);

char code[n_str][80], tmp;

int i=0, j=0, row=0, col=0;

for (i=0; i<n_str; i++){

for (j=0; j<80; code[i][j]=0, j++) ;

}

do{

tmp=getc(F);

code[row][col]=tmp;

if (tmp=='\n') { code[row][col]=tmp; row++; col=0;}

else{

code[row][col]=tmp;

if (code[row][col]==EOF) code[row][col]=0;

col++;

}

}while(tmp!=EOF);

fclose(F);

int p=0;

for (p=0; p<255;filename[p]=0, p++) ;

Comment_killer(code, n_str);

Symbols(code, n_str);

Double_brackets(code, n_str);

Space_killer(code, n_str);

Library(code, n_str);

Operators(code, n_str);

Indent(code, n_str);

printf("Введите имя файла, который в собираетесь сохранить\n");

gets(filename);

Save(code, n_str,filename);

}

Приложение В

Исходный код текста простой программы на языке С.

/*

This programm is demonstrating four

arithmetic operations

*/

#include <stdio.h>

int main(){

float a;

int b;

retry:

scanf("%f",&a);

scanf("%i",&b);

//scanf("%f",&c);

if (!(a&&b&&(b<4)))

{

printf("You entered wrong digits, try again\n");

goto retry;

}

else{

switch(b){

case 1:

a=a+b;

break;

case 2:

a=a-b;

break;

case 3:

a=a*b;

break;

case 4:

a=a/b;

break;

default:

printf("%f",a);

break;

}

printf("%f",a);

}

}

Размещено на Allbest.ru


Подобные документы

  • Разработка технологии обработки информации, структуры и формы представления данных. Проектирование программных модулей. Блок-схема алгоритма и исходный код программы анализа арифметического выражения, синтаксического анализа простой программы на языке С.

    курсовая работа [2,4 M], добавлен 12.12.2011

  • Разработка технического задания на проектирование, определение требований к программе. Предварительный выбор метода решения синтаксического анализатора, проектирование программного приложения, конфигурация технических средств программы и её тестирование.

    курсовая работа [28,5 K], добавлен 28.06.2011

  • Проектирование программы, реализующей синтаксический анализ простой программы на языке С: этапы создания, алгоритм ее функционирования, структура, технология обработки информации. Описание программных модулей, интерфейс; выбор инструментальных средств.

    курсовая работа [1,6 M], добавлен 12.12.2011

  • Синтаксический анализ простой программы на языке С. Предварительный выбор метода решения задачи. Разработка технологии обработки информации. Проектирование программных модулей. Процесс тестирования программы. Требования к программному обеспечению.

    курсовая работа [934,7 K], добавлен 01.07.2011

  • Рaзрaботка программного приложения (синтаксического aнaлизaторa), которое производит проверку синтaксисa простейшей программы на языке С++. Процедура проверки арифметических и логический выражений. Механизм удаления всех фиктивных переменных из программы.

    курсовая работа [27,2 K], добавлен 28.06.2011

  • Особенности разработки программы для ведения автоматизированной базы данных, организованной на информационных файлах. Тестовые наборы, проектирование кода программы. Принципы проведения испытаний и принципы проверки алгоритма на работоспособность.

    лабораторная работа [1,6 M], добавлен 23.11.2014

  • Проектирование программы-анализатора, состоящей из двух частей: лексического анализатора, разбивающего исходный текст программы на лексемы и заполняющего таблицу имен; синтаксического анализатора, проверяющего соответствие текста заданной грамматике.

    курсовая работа [2,0 M], добавлен 14.06.2010

  • Разработка программного приложения, производящего проверку синтаксиса простой программы: выбор метода создания синтаксического анализатора, описание требований к программному обеспечению, написание алгоритмов решения и тестирование конечного продукта.

    курсовая работа [579,7 K], добавлен 03.07.2011

  • Этапы разработки программного приложения, выполняющего синтаксический анализ программы на языке С и форматирование текста программы на языке С. Требования к программному обеспечению и интерфейсу. Конфигурация технических средств и оценка надежности.

    курсовая работа [1,6 M], добавлен 22.06.2011

  • Аспекты безопасности информации, предотвращение внедрения программных закладок. Проектирование и разработка программы шифрования данных по заданной таблице из 160 символов. Дешифровка и вывод результата приложения. Его программный код и тестирование.

    курсовая работа [163,1 K], добавлен 05.05.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.