Главная arrow Программирование С++ arrow Функция main

Функция main

Функция main о начинает интерпретацию программы, заданной в командной строке. Далее приведен код функции, int main(int argc, char *argv[]) {
if(argc != 2)  {
cout « "Usage: minicpp <filename>\n" ; return 1;
}
// Выделяет память для программы, try {
p_buf = new char[PROG_SIZE]; } catch (bad_alloc exc)  {
cout « "Could Not Allocate Program Buffer\n"; return 1;
}
// Загружает программу для выполнения.
if(!load_program(p_buf, argv[1])) return 1;
// Устанавливает указатель программы на начало программного, буфера, prog = p_buf;
}
try {
// Находит местоположение всех функций //и глобальных переменных в программе, prescan();
// Затем подготавливает вызов функции main().
// Находит начальную точку программы, prog = find_func("main");
// Проверяет на некорректность или отсутствие функцию main(). if(!prog)  {
cout « "main() Not FoundNn";
return 1;
}
// Возвращается к открывающей скобке (. prog—;
// Устанавливает значение первой лексемы, равное main, strcpy(token, "main");
// Вызывает main(), чтобы начать интерпретацию, call();
}
catch(InterpExc exc)  { sntx_err(exc.get_err()); return 1;
}
catch(bad_alloc exc)  {
cout « "Cut Of Memory\n"; return 1;
}
return ret_value;
>
функция main о начинается с выделения памяти для программы, которая будет интерпретироваться. Обратите внимание, максимальный размер интерпретируемой программы задается константой PROG_SIZE. ЭТО значение, равное 10 ООО, задается произвольно, и вы можете увеличить его, если захотите. Далее программа загружается с помощью функции load_program(). После загрузки программы функция main () выполняет три основных действия.
1. Вызывает функцию prescano для предварительного просмотра программы интерпретатором.
2. Подготавливает интерпретатор для вызова функции main о программы, определяя ее местоположение в исходном коде.
3. Выполняет функцию callo, которая начинает выполнение программы со стартовой точки функции main о.
Функция main () также обрабатывает все исключения типа InterpExc, генерируемые интерпретатором Mini С++, включая исключительные ситуации, созданные синтаксическим анализатором выражений.
В следующих разделах подробно рассматриваются ключевые компоненты интерпретатора.