UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
makeПо мере увеличения исходного текста программы
hocmakeМы сделаем еще две модификации в файле
makefiley.tab.hhoc.ymakefile.ox.tab.hy.tab.hprПервая модификация позволяет существенно экономить время в случае больших программ, когда грамматика постоянна, а семантические действия меняются (обычная ситуация). Второе изменение обеспечивает экономию бумаги.
Приведем
makefilehoc4YFLAGS = -dOBJS = hoc.o code.o init.o math.o symbol.ohoc4: $(OBJS) cc $(OBJS) -lm -o hoc4hoc.o code.o init.o symbol.o: hoc.hcode.o init.o symbol.o: x.tab.hx.tab.h: y.tab.h -cmp -s x.tab.h y.tab.h || cp y.tab.h x.tab.hpr: hoc.y hoc.h code.c init.c math.c symbol.c @pr $? @touch prclean: rm -f $(OBJS) [xy].tab.[ch]Символ
'-'cmpmakecmpx.tab.h-scmp$?makefileПроиллюстрируем изложенное выше на примере (в предположении, что все файлы последней версии):
$ touch hoc.y$ makeyacc -d hoc.y conflicts: 1 shift/reduceсс -с y.tab.crm y.tab.cmv y.tab.o hoc.ocmp -s x.tab.h y.tab.h || cp y.tab.h x.tab.hcc hoc.o code.o init.o math.o symbol.o -lm -o hoc4$ make -n ppr hoc.ytouch pr$Отметим, что, кроме
hoc.yy.tab.hСделайте размеры стека и массива
proghoc4mallocИзмените
hoc4execute+8.5 Этап 5: структуры управления и операции отношений
Версия
hoc5if-elsewhile{}print>>=ANDOR&&||Грамматику
hoc5ifwhileifwhile$ cat hoc.y%{#include "hoc.h"#define code2(c1,c2) code(c1); code(c2)#define code3(c1,c2,c3) code(c1); code(c2); code(c3)%}%union { Symbol *sym; /* symbol table pointer */ Inst *inst; /* machine instruction */}
