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

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

Жанры

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

return index(transtab, с)[1];

 return c;

}

follow(expect, ifyes, ifno) /* look ahead for >=, etc. */

{

 int с = getc(fin);

 if (c == expect)

return ifyes;

 ungetc(c, fin);

 return ifno;

}

defnonly(s) /* warn if illegal definition */

 char *s;

{

 if (!indef)

execerror(s, "used outside definition");

}

yyerror(s) /* report compile-time error */

 char *s;

{

 warning(s, (char *)0);

}

execerror(s, t) /* recover from run-time error */

 char *s, *t;

{

 warning(s, t);

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

 longjmp(begin, 0);

}

fpecatch /* catch floating point exceptions */

{

 execerror("floating point exception", (char*)0);

}

main(argc, argv) /* hoc6 */

 char *argv[];

{

 int i, fpecatch;

 progname = argv[0];

 if (argc == 1) { /* fake an argument list */

static char *stdinonly[] = { "-" };

gargv = stdinonly;

gargc = 1;

 } else {

gargv = argv+1;

gargc = argc-1;

 }

 init;

 while (moreinput)

run;

 return 0;

}

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 <math.h>

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

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

Рассвет русского царства

Грехов Тимофей
1. Новая Русь
Документальная литература:
историческая литература
5.00
рейтинг книги
Рассвет русского царства

Кодекс Охотника. Книга XXIV

Винокуров Юрий
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV

Самодержец пустыни

Юзефович Леонид Абрамович
Проза:
историческая проза
6.25
рейтинг книги
Самодержец пустыни

Мужество

Кетлинская Вера Казимировна
Проза:
советская классическая проза
7.56
рейтинг книги
Мужество

Поводырь

Щепетнов Евгений Владимирович
3. Ботаник
Фантастика:
фэнтези
6.36
рейтинг книги
Поводырь

Главбухша

Романов Владислав Иванович
Любовные романы:
остросюжетные любовные романы
5.00
рейтинг книги
Главбухша

Я уже бог. Книга XL

Дрейк Сириус
40. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я уже бог. Книга XL

Лекарь Империи 4

Карелин Сергей Витальевич
4. Лекарь Империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Лекарь Империи 4

Стая

Сергеева Оксана Николаевна
1. Стая
Любовные романы:
современные любовные романы
остросюжетные любовные романы
9.37
рейтинг книги
Стая

Газлайтер. Том 22

Володин Григорий Григорьевич
22. История Телепата
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.25
рейтинг книги
Газлайтер. Том 22

Меняя маски

Метельский Николай Александрович
1. Унесенный ветром
Фантастика:
боевая фантастика
попаданцы
9.22
рейтинг книги
Меняя маски

Имперец. Том 3

Романов Михаил Яковлевич
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.50
рейтинг книги
Имперец. Том 3

Василий Шуйский

Скрынников Руслан Григорьевич
Историческая библиотека
Научно-образовательная:
история
5.00
рейтинг книги
Василий Шуйский

Иисус неизвестный

Мережковский Дмитрий Сергеевич
Научно-образовательная:
философия
4.00
рейтинг книги
Иисус неизвестный