oid)
{
nx = string [pos + +];
# ifdef TEST
printf ("Поточний символ% c - % D. N ", nx, nx);
# endif
fprintf (fl, "Поточний символ% c -% D. N ", nx, nx);
}
// Мітка.
void Label (void)
{
if (ABS () == NO)
{
Error (8);
Scan ();
}
else
l + +;
}
// Ціле Без Знака.
int ABS (void)
{
# ifdef TEST
cprintf ("ABS - перевірка на Ціле Без Знака з цифри% c. R n ", nx);
# endif
fprintf (fl, "ABS - перевірка на Ціле Без Знака з цифри% c. N ", nx);
if (isdigit (nx))
{
while (isdigit (nx))
Scan ();
return (YES);
}
return (NO);
}
// Арифметичне Вираз.
int AB (void)
{
# ifdef TEST
cprintf ("AB - Перевірка на Арифметичне Вираз. R n ");
# endif
fprintf (fl, "AB - Перевірка на Арифметичне Вислів. N ");
Scan ();
if (nx == ')')
{
Error (12);
return (NO);
}
Term ();
if (nx == '+')
{
AB ();
}
else if (nx == '-')
{
AB ();
}
if (nx == NULL)
return (OK);
else if (nx! = '*' && nx! = '/' && Nx! = ')') p> Error (1);
return (YES);
}
// Терм.
int Term (void)
{
# ifdef TEST
cprintf ("Term - Перевірка на Терм. R n ");
# endif
fprintf (fl, "Term - Перевірка на Терм. n ");
Operand ();
if (nx == '/')
{
Scan ();
Term ();
}
else if (nx == '*')
{
Scan ();
if (nx == '*')
{
Scan ();
Term ();
}
else Term ();
}
if (nx == NULL)
return (OK);
else if (nx! = '+' && nx! = '-' && Nx! = ')') p> Error (2);
return (OK);
}
// Операнд.
int Operand (void)
{
# ifdef TEST
cprintf ("Operand - Перевірка на Операнд. R n ");
# endif
fprintf (fl, "Operand - Перевірка на Операнд. 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);
# endif
fprintf (fl, "IDENT - Перевірка на Ідентифікатор з символу% c. n ", nx);
if...