Брайан Керниган - UNIX — универсальная среда программирования

Здесь есть возможность читать онлайн «Брайан Керниган - UNIX — универсальная среда программирования» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1992, ISBN: 1992, Издательство: Финансы и статистика, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

UNIX — универсальная среда программирования: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «UNIX — универсальная среда программирования»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
.
Для программистов-пользователей операционной системы UNIX.

UNIX — универсальная среда программирования — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «UNIX — универсальная среда программирования», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

moreinput() {

if (gargc-- <= 0)

return 0;

if (fin && fin != stdin)

fclose(fin);

infile = *gargv++;

lineno = 1;

if (strcmp(infile, "-") == 0) {

fin = stdin;

infile = 0;

} else if ((fin=fopen(infile, "r")) == NULL) {

fprintf (stderr, "%s: can't open %s\n", progname, infile);

return moreinput();

}

return 1;

}

run() /* execute until EOF */

{

setjmp(begin);

signal(SIGFPE, fpecatch);

for (initcode(); yyparse(); initcode())

execute(progbase);

}

warning(s, t) /* print warning message */

char *s, *t;

{

fprintf(stderr, "%s: %s", progname, s);

if (t)

fprintf(stderr, " %s", t);

if (infile)

fprintf(stderr, " in %s", infile);

fprintf(stderr, " near line %d\n", lineno);

while (c != '\n' && c != EOF)

с = getc(fin); /* flush rest of input line */

if (c == '\n')

lineno++;

}

3.7.15 init.c

#include "hoc.h"

#include "y.tab.h"

#include

extern double Log(), Log10(), Sqrt(), Exp(), integer();

static struct { /* Keywords */

char *name;

int kval;

} keywords[] = {

"proc", PROC,

"func", FUNC,

"return", RETURN,

"if", IF,

"else", ELSE,

"while", WHILE,

"print", PRINT,

"read", READ,

0, 0,

};

static struct { /* Constants */

char *name;

double eval;

} consts[] = {

"PI", 3.14159265358979323846,

"E", 2.71828182845904523536,

"GAMMA", 0.57721566490153286060, /* Euler */

"DEG", 57.29577951308232087680, /* deg/radian */

"PHI", 1.61803398874989484820, /* golden ratio */

0, 0

};

static struct { /* Built-ins */

char *name;

double (*func)();

} builtins[] = {

"sin", sin,

"cos", cos,

"atan", atan,

"log", Log, /* checks range */

"log10", Log10, /* checks range */

"exp", Exp, /* checks range */

"sqrt", Sqrt, /* checks range */

"int", integer,

"abs", fabs,

0, 0

};

init() /* install constants and built-ins in table */

{

int i;

Symbol *s;

for (i = 0; keywords[i].name; i++)

install(keywords[i].name, keywords[i].kval, 0.0);

for (i = 0; consts[i].name; i++)

install(consts[i].name, VAR, consts[i].eval);

for (i = 0; builtins[i].name; i++) {

s = install(builtins[i].name, BLTIN, 0.0);

s->u.ptr = builtins[i].func;

}

}

3.7.16 makeapp

#!/bin/sh

cd hoc6

for i in hoc.y hoc.h symbol.c code.c init.c math.c makefile

do

echo "

**** $i ***************************************

"

sed 's/\\/\\e/g

s/^$/.sp .5/' $i |

awk '

{ print }

/(^ ;$)|(^})|(^%%)/ { print ".P3" }

'

done

3.7.17 makefile

CC = lcc

YFLAGS = -d

OBJS = hoc.o code.o init.o math.o symbol.o

hoc6: $(OBJS)

$(CC) $(CFLAGS) $(OBJS) -lm -o hoc6

hoc.o code.o init.o symbol.o: hoc.h

code.o init.o symbol.o: x.tab.h

x.tab.h: y.tab.h

-cmp -s x.tab.h y.tab.h || cp y.tab.h x.tab.h

pr: hoc.y hoc.h code.c init.c math.c symbol.c

@pr $?

@touch pr

clean:

rm -f $(OBJS) [xy].tab.[ch]

3.7.18 math.c

#include

#include

extern int errno;

double errcheck();

double Log(x)

double x;

{

return errcheck(log(x), "log");

}

double Log10(x)

double x;

{

return errcheck(log10(x), "log10");

}

double Sqrt(x)

double x;

{

return errcheck(sqrt(x), "sqrt");

}

double Exp(x)

double x;

{

return errcheck(exp(x), "exp");

}

double Pow(x, y)

double x, y;

{

return errcheck(pow(x,y), "exponentiation");

}

double integer(x)

double x;

{

return (double)(long)x;

}

double errcheck(d, s) /* check result of library call */

double d;

char *s;

{

if (errno == EDOM) {

errno = 0;

execerror(s, "argument out of domain");

} else if (errno == ERANGE) {

errno = 0;

execerror(s, "result out of range");

}

return d;

}

3.7.19 mbox

From: Polyhedron Software Ltd <100013.461@CompuServe.COM>

To: ">INTERNET:bwk@research.att.com"

Subject: Message from Internet

Date: 10 May 91 04:07:07 EDT

Message-Id: <"910510080707 100013.461 CHE27-1"@CompuServe.COM>

Got your message. I'll pass it on to Tony. We haven't noticed any

errors at all in CompuServe mail, so far.

Regards

Graham Wood

From kam Thu May 9 10:58:06 EDT 1991

tony fritzpatrick called from england. he had spoken to you

last week about compuserve.

the number is:

100013,461

this is regarding the HOC6 listing.

he will call you back tomorrow

From pipe!subll276 Fri May 3 10:38:29 EDT 1991

Message to: BK

From: Tony Fitzpatrick

ECL

Highlands Farm

Greys Road

Henley OXON, RG 94 PS

ENGLAND

Telephone: 0491 - 575-989 (country code 45)

FAX: 0491 576 557

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «UNIX — универсальная среда программирования»

Представляем Вашему вниманию похожие книги на «UNIX — универсальная среда программирования» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «UNIX — универсальная среда программирования»

Обсуждение, отзывы о книге «UNIX — универсальная среда программирования» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x