Чтение онлайн

на главную - закладки

Жанры

UNIX — универсальная среда программирования
Шрифт:

warning(s, t)

 char *s, *t;

{

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

 if (t && *t)

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

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

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

c = getchar; /* flush rest of input line */

 fseek(stdin, 0L, 2); /* flush rest of file */

 longjmp(begin, 0);

}

3.6.6

init.c

#include "hoc.h"

#include "y.tab.h"

#include <math.h>

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

static struct { /* Keywords */

 char *name;

 int kval;

} keywords[] = {

 "if", IF,

 "else", ELSE,

 "while", WHILE,

 "print", PRINT,

 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 argument */

 "log10", Log10, /* checks argument */

 "exp", exp,

 "sqrt", Sqrt, /* checks argument */

 "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.6.7

makefile

YFLAGS = -d

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

hoc5: $(OBJS)

cc $(OBJS) -lm -o hoc5

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.6.8

math.c

#include <math.h>

#include <errno.h>

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");

Поделиться:
Популярные книги

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9