f (liter == '.')
{liter = fgetc (in);
while (isdigit (liter))
{liter = fgetc (in);
num + +;
}
ungetc (liter, in);
num -;
return (1);
}
else
{if (isalpha (liter))
{number = 0;
while (isalnum (liter))
{number + +;
num + +;
liter = fgetc (in);
}
ungetc (liter, in);
num -;
return (2);
}
else switch (liter)
{case '+': num = 0; return (3);
case '-': num = 0; return (4);
case '/': num = 0; return (5);
case '*': num = 0;
if ((liter = fgetc (in)) == '*') return (7);
else
{ungetc (liter, in);
return (6);
}
case '(': return (8);
case ')': return (9);
case '=': return (10);
case ' n': return (11);
case EOF: return (12);
default: return (0);
}
}// else
}
// розпізнала ПОМИЛКИ У ідентифікатор.
void identif (void)
{if (temp == 0)
{While ((next! = RAV) && (next! = _EOLN_) && (next! = _EOF_))
{err [sum] = next;
sum + +;
next = scaner ();
}
}
if (temp == 1)
{if ((next! = CBZ) && (next! = ID))
{if (next == ERROR) error (2);
else error (3);
}
number = num-1;
num = 0;
}
if (number> 6) error (5);
}
// нетермінал "O" <Операнд >
void operand ()
{if (next == SKL)
{next = scaner ();
expr ();
if (next! = SKR) error (6);
else next = scaner ();
}
else
{if (next == ID) {identif (); next = scaner ();}
else
{if (next! = CBZ)
{If ((next! = _EOLN_) && (next! = _EOF_))
{If (next == ERROR)
{error (7);
next = scaner ();
operand ();
}
else
{if (next == RAV) error (7);
else error (8);
}
}
else error (8);
}
else next = scaner ();
}// else
}// else
}
// НЕТEРМІНАЛ "Е" <Вираз >
void expr (void)
{term ();
while ((next == PLUS) | | (next == MIN))
{next = scaner ();
expr ();
}
}
// нетермінал "T" <Терм >
void term (void)
{operand ();
while ((next == DIV) | | (next == MUL) | | (next == STEP))
{next = scaner ();
term ();
}
}
void error (int choice)
{switch (choice)
{case 1: mistake [line] [ofset + +] = 1; break;
case 2: mistake [...