Функция parse
Версия от 15:08, 6 апреля 2018; Admin (обсуждение | вклад)
Функция parse(FILE *f, char *path, void data(Dat *), void func(Fn *)) - функция, реализованная в Си интерфейсе QBE. Располагается в файле parse.c
и "подключается" в all.h
.
Назначение
parse осуществляет парсинг QBE файла во внутреннее представление, с которым происходит взаимодействие внутри некоторой функции (внутри крутится вечный цикл со свитчами, которые еще что-то парсят). В примере считывание происходит, очевидно с stdin
, работать с внутренним представлением функции предлагают в func
, data
не используется.
Исходный код
Функция parse из parse.c
void parse(FILE *f, char *path, void data(Dat *), void func(Fn *)) { int t, export; lexinit(); inf = f; inpath = path; lnum = 1; thead = Txxx; ntyp = 0; typ = vnew(0, sizeof typ[0], Pheap); for (;;) { export = 0; switch (nextnl()) { default: err("top-level definition expected"); case Texport: export = 1; t = nextnl(); if (t == Tfunc) { case Tfunc: func(parsefn(export)); break; } else if (t == Tdata) { case Tdata: parsedat(data, export); break; } else err("export can only qualify data and function"); case Ttype: parsetyp(); break; case Teof: vfree(typ); return; } } }