Xreferat.com » Рефераты по информатике и программированию » Построение формального языка L

Построение формального языка L

}


//----------------------------------------------------------------------------

// Сканирует до появления While

//----------------------------------------------------------------------------

int scan()

{

int k,j,w; //счетчики

mistake_number[1]=1;

for(j=0;;j++)

{

if(TEXT[x][j] == NULL) break;

if(TEXT[x][j] == 'W')

{

y=j; //если нашли W или w

if(my_while() == 1) break; //то вызываем

} //my_while

if(TEXT[x][j] == 'w')

{

y=j;

if(my_while() == 1) break;

}

if(TEXT[x][j] != ' ')

{

strange[s++]=TEXT[x][j];

mistake_number[10]=1;

}

if(TEXT[x][j] == ' ')

{

strange[s++]=',';

strange[s++]=' ';

}

}

strange[s]=NULL;

return(1);

}


//----------------------------------------------------------------------------

// Обрабатывает While и вызывает обработку функций

//----------------------------------------------------------------------------

int my_while()

{

char str[10];

int k,j,w; //счетчики

for(w=0;w<5;w++)

{

if(TEXT[x][y] == NULL) break;

str[w]=toupper(TEXT[x][y++]); //Toupper - переводит

} //все буквы в заглавные

str[w]=NULL;

if(strcmp(str,"WHILE") == 0) //Если While найден то производим

{ // дальнейший разбор

fprintf(fl_t,"Найден While проверка началась с символа - %cn",TEXT[x][y]);

if(TEXT[x][y] != '(') mistake_number[2]=1;

else y++;

AB();

if(TEXT[x][y] != ')') mistake_number[3]=1;

y++;

mistake_number[1]=0;

FUNC();

return(1);

}

else return(0);

}


//----------------------------------------------------------------------------

// Обработка выражения

//----------------------------------------------------------------------------

int AB()

{

char signal[4]=">

int z;

fprintf(fl_t,"Проверка на ABn");

TERM();

if(TEXT[x][y] == '<')

{

y++;

if(TEXT[x][y] == '=') y++;

for(z=0;z<4;z++)

if(TEXT[x][y] == signal[z]) //Если слишком

{ //сложная знаковая

mistake_number[14]=1; //конструкция

y++; //то ошибка

z=0;

}

AB();

return(1);

}

if(TEXT[x][y] == '>')

{

y++;

if(TEXT[x][y] == '=') y++;

for(z=0;z<4;z++)

if(TEXT[x][y] == signal[z])

{

mistake_number[14]=1;

y++;

z=0;

}

AB();

return(1);

}

if(TEXT[x][y] == '=')

{

y++;

if(TEXT[x][y] == '=')

{

y++;

}

for(z=0;z<4;z++)

if(TEXT[x][y] == signal[z])

{

mistake_number[14]=1;

y++;

z=0;

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: