UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Определение
%token NUMBERyacc#definy.tab.cNUMBERYaccПри наличии синтаксической ошибки
yyparseyyerroryyerrorwarninghocwarningyyerror(s) /* called for yacc syntax error */ char *s;{ warning(s, (char*)0);}warning(s, t) /* print warning message */ char *s, *t;{ fprintf(stderr, "%s: %s", progname, s); if (t) fprintf(stderr, " %s", t); fprintf(stderr, " near line %dn", lineno);}Этим завершаются процедуры файла
hoc.yyacc$ yacc hoc.y $ сс y.tab.c -о hoc1 $ hoc12/3 0.66666667-3-4hoc1: syntax error near line 1$Исследуйте структуру файла
y.tab.choc1Ранее мы утверждали, что, работая с
yacchoc1-3-4вычислялись, а не отвергались как синтаксические ошибки. Всего две строки нужно дополнительно включить в
hoc.yUNARYMINUS%left '+' '-'%left '*' '/'%left UNARYMINUS /* новая лексема */Грамматика увеличивается на одно правило для
exprexpr: NUMBER ($$= $1;} | '-' expr %prec UNARYMINUS {$$=- $2} /* новое */Определение
%prec"-"UNARYMINUSДобавьте операции
%hoc1frexp(3)makeОбидно, что приходится вводить две команды для компиляции
hoc1makemakeyaccОсобенно полезно обращаться к
makehoc1makehoc1makemakefile$ cat makefilehoc1: hoc.occ hoc.o -o hoc1$Здесь сообщается, что
hoc1hoc.ohoc1hoc.oссhoc1makeyacchoc.yhoc.o$ make yacc hoc.yсс -с y.tab.crm y.tab.cmv y.tab.o hoc.осс hoc.о -о hoc1$ make
