p>
# include stdafx.h
//Підключаємо необхідні заголовні файли
# include lt; iostream gt;
# include lt; string gt;
# include lt; conio.h gt;
///////////////////
# include states.h // функції переходів автомата
# include common.h // допоміжні функції
///////////////////
//за замовчуванням використовуємо простір імен std namespace std;
//таким чином робимо змінні видимими в різних модулях
//extern lexem * idtable [MAXHASH];// таблиця ідентіфікаторовlexem ** idtable=NULL;//таблиця ідентіфікаторовlexem * lexTableHead=NULL;// покажчик на початок (початковий елемент) таблиці лексемlexem * lexTableEnd=NULL;// покажчик на кінець (останній елемент) таблиці лексем
int row=0; col=0;
// головна функція_tmain (int argc, _TCHAR * argv [])
{
setlocale (LC_ALL, Russian );// дана строчка необхідна для коректного відображення кирилиці
header ();// виводимо шапку
string fileName= c: /test.txtraquo ;;
//задаємо ім'я файлу
//cout lt; lt; Введіть шлях і ім'я файлу n raquo ;;
//cin gt; gt; fileName;
//вважаємо содержівое файлу (текст програми) в рядок
string programText=readFile (fileName); (); lexem= raquo ;;// змінна для зберігання імені лексемиcurrState=sBEGIN;// поточний стан автомата
//текс програми розберемо посимвольно в циклі
for (unsigned int i=0; i lt; programText.length (); i ++) {c=toupper (programText [i]);// поточний символ (c == n )
{++;=0;
} (currState) {sBEGIN: .clear ();=beginState (c, lexem) ;;
///////////////////////////////////////// sIF1 :=if1State (c, lexem) ;;
///////////////////////////////////////// sIF2 :=if2State (c, lexem) ;;
///////////////////////////////////////// sELSE1 :=else1State (c, lexem) ;;
///////////////////////////////////////// sELSE2 :=else2State (c, lexem) ;;
///////////////////////////////////////// sELSE3 :=else3State (c, lexem) ;;
///////////////////////////////////////// sELSE4 :=else4State (c, lexem) ;;
///////////////////////////////////////// sFOR1 :=for1State (c, lexem) ;;
///////////////////////////////////////// sFOR2 :=for2State (c, lexem) ;;
///////////////////////////////////////// sFOR3 :=for3State (c, lexem) ;;
///////////////////////////////////////// sDO1 :=do1State (c, lexem) ;;
///////////////////////////////////////// sDO2 :=do2State (c, lexem) ;;
///////////////////////////////////////// sPROG1 :=prog1State (c, lexem) ;;
///////////////////////////////////////// sPROG2 :=prog2State (c, lexem) ;;
///////////////////////////////////////// sPROG3 :=prog3State (c, lexem) ;;
///////////////////////////////////////// sPROG4 :=prog4State (c, lexem); ;
///////////////////////////////////////// sEND1 :=end1State (c, lexem); ;
///////////////////////////////////////// sEND2 :=end2State (c, lexem); ;
///////////////////////////////////////// sSYMBOL1 := ' raquo ;;=symbol1State (c, lexem) ;;
///////////////////////////////////////// sSYMBOL2 :=symbol2State (c, lexem) ;;
///////////////////////////////////////// sSYMBOL3 :=symbol3State (c, lexem) ;;
///////////////////////////////////////// sASSIGN1 :=: raquo ;;=assign1State (c, lexem) ;;
///////////////////////////////////////// sASSIGN2 := raquo ;;=assign2State (c, lexem) ;;
///////////////////////////////////////// sCOMMENT1 := raquo ;;=comment1State (c, lexem) ;;
///////////////////////////////////////// sCOMMENT2 :=comment2State (c, lexem) ;;
///////////////////////////////////////// sIDENT :=idState (c, lexem) ;; sNUMBER:
/////////////////////////////////////////= numberState (c, lexem) ;;
} +=c; ++;
}
//зберігаємо таблиці (); ();