d Grammar (void);// Граматика мови. p> void GetFilename (void);// Запит імені файлу для відкриття. p> int ScanStr (char *);// Пошук GOTO. p> int Scaner (char *);// Обробка рядка. p> void Scan (void);// Сканування наступного символу. p> void Delspace (char *);// Видалення непотрібних прогалин в рядку.
int AB (void);// Реалізація нетермінала <АВ>. p> int T (void);// Реалізація нетермінала <Т>. p> int O (void);// Реалізація нетермінала <О>.
int IDENT (void);// Реалізація нетермінала . p> int FLOAT (void);// Реалізація нетермінала . p> void Error (int = 0, char * = "");// Обробка помилки. p>// Глобальні змінні.
char filename [MAX_STR_LEN];// Ім'я файлу. p> char * text [COL_STR +1];// Масив покажчиків на рядки тексту. p> char screen [4096];// Буфер під копію екрану. p> char mes [21] [20] [80];// Масив під повідомлення про помилках.
char nx;// Поточний символ. p> int pos;// Поточна позиція в рядку. p> char STR [80];// Сканована рядок. p> int ERR1;// Лічильник сторінок в масиві помилок. p> int ERR2;// Лічильник рядків у масиві помилок. p> FILE * errors;// Дескриптор файлу. p>// Функція MAIN. p> void main (int argc, char * argv [])
{
textcolor (LIGHTGRAY);
textbackground (BLACK);
_setcursortype (_NOCURSOR);
clrscr ();
if (argc> 2)
{
Usage ();
MyExit ();
}
if (argc == 2)
strcpy (filename, argv [1]);
else
{
Welcome ();
gettext (20,7,60,17, screen);
GetFilename ();
}
while (OpenFile ())
{
puttext (20,7,60,17, screen);
GetFilename ();
}
Menu ();
}
// Висновок повідомлень про помилки.
void Message (int j)
{
window (42,3,79,23);
textcolor (BLUE);
textbackground (CYAN);
clrscr ();
for (int i = 0; i
cprintf ("%-30s r n", mes [j] [i]);
}
// Гpамматіка мови.
void Grammar (void)
{
window (1,25,80,25);
textattr (112);
MyPuts (" ~ F1 ~ Help ~ F2 ~ Grammar ~ F3 ~ Language ~ F9 ~ Compile ~ F10 ~ Quit ~ Alt-X ~
Quit ~ Esc ~ Quit ", DARKGRAY);
window (10,5,70,20);
textcolor (WHITE);
textbackground (MAGENTA);
clrscr ();
DrawBox (2,1,60,16, "Гpамматіка мови ");
window (12,6,78,19);
textcolor (YELLOW);
cputs (" r n");
cputs (" 1. <Опеpатоpа> -> GOTO <вираженню> r n ");
cputs (" 2. <Вираженню> -> T | <вираженню> + T | <Вираженню>-T r n ");
cputs (" 3. T -> O | T * O | T/O | T ** O r n ");
cputs (" 4. O -> (<вираженню>) | <Ідентифікатор> | <ДБЗ> r n ");
cputs (" 5. <Ідентифікатор> -> Б {Б | Ц} [L] r n ");
cputs (" 6. <ДБЗ> -> Ц {Ц} [. Ц {Ц}] [L] r n n ");
...