Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Розробка синтаксичного розпізнавача обчислюваного оператора переходу мови FORTRAN

Реферат Розробка синтаксичного розпізнавача обчислюваного оператора переходу мови FORTRAN





<Операнд>.

int O (void)

{

# ifdef TEST

cprintf ("O - Перевірка на Операнд. R n ");

# endif

fprintf (errors, "O - Перевірка на Операнд. N ");

if (nx == '(')

{

AB ();

if (nx! = ')')

Error (3);

else

{

Scan ();

return (OK);

}

}

else

if (IDENT () == NO)

{

if (FLOAT () == NO)

Error (4);

}

return (OK);

}

// Реалізація нетермінала <Ідентифікатор>.

int IDENT (void)

{

# ifdef TEST

cprintf ("IDENT - Перевірка на Ідентифікатор з символу% c. R n ", nx);

getch ();

# endif

fprintf (errors, "IDENT - Перевірка на Ідентифікатор з символу% c. N ", nx);

if (isalpha (nx))

{

while (isalpha (nx) | | Isdigit (nx))

Scan ();

return (YES);

}

return (NO);

}

// Реалізація нетермінала <Дробове Без Знака>.

int FLOAT (void)

{

# ifdef TEST

cprintf ("FLOAT - Перевірка на Дробове Без Знака з цифри% c. R n ", nx);

getch ();

# endif

fprintf (errors, "FLOAT - Перевірка на Дробове Без Знака з цифри% c. N ", nx);

if (isdigit (nx))

{

while (isdigit (nx))

Scan ();

if (nx == '.')

{

Scan ();

while (isdigit (nx))

Scan ();

}

return (YES);

}

return (NO);

}

// Сканування наступного символу з рядка.

void Scan (void)

{

# ifdef TEST

cprintf ("SCAN - Сканування. Поточний символ '% c' з кодом% d. R n ", STR [pos], STR [pos]);

getch ();

# endif

fprintf (errors, "SCAN - Сканування. Поточний символ '% c' з кодом

% d. n ", STR [pos], STR [pos]);

nx = STR [pos];

pos + +;

}

// Обробка помилок.

void Error (int num, char * s)

{

char * E [40] =

{p> "Очікується '+' або '-'",

"Очікується '*', '/' або '**'",

"Очікується ')'",

"Очікується ідентифікатор або Дробове без знака",

"Не визначено ідентифікатор",

"Не знайдено оператор GOTO r nСтрока розбору не підлягає",

NULL

}; p> sprintf (mes [ERR1] [ERR2], "% s% s", E [num-1], s);

fprintf (errors, "Error - Помилка рядок% d, помилка #% d. N ", ERR1, ERR2);

# ifdef TEST

cprintf ("Error - Помилка: рядок #% d, помилка #% d. R n ", ERR1, ERR2);

cprintf ("% s r n", mes [ERR1] [ERR2]);

Beep (1000,200);

getch ();

# endif

fprintf (errors, "% s n", mes [ERR1] [ERR2]);

ERR2 + +;

mes [ERR1] [ERR2] [0] = NULL;


Назад | сторінка 8 з 9 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка веб-сайту міжнародного симпозіуму SCAN 2012
  • Реферат на тему: Return to materialism
  • Реферат на тему: Дослідження токсичного і генотоксичних ефектів синтетичних харчових барвник ...
  • Реферат на тему: Обробка результатів багаторазових вимірювань фізичної величини, перевірка с ...
  • Реферат на тему: Податкова перевірка