add hoc
This commit is contained in:
parent
c72688efcf
commit
c5b9ff9fa8
8 changed files with 1364 additions and 4 deletions
69
src/cmd/hoc/init.c
Normal file
69
src/cmd/hoc/init.c
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include "hoc.h"
|
||||
#include "y.tab.h"
|
||||
|
||||
static struct { /* Keywords */
|
||||
char *name;
|
||||
int kval;
|
||||
} keywords[] = {
|
||||
"proc", PROC,
|
||||
"func", FUNC,
|
||||
"return", RETURN,
|
||||
"if", IF,
|
||||
"else", ELSE,
|
||||
"while", WHILE,
|
||||
"for", FOR,
|
||||
"print", PRINT,
|
||||
"read", READ,
|
||||
0, 0,
|
||||
};
|
||||
|
||||
static struct { /* Constants */
|
||||
char *name;
|
||||
double cval;
|
||||
} 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)(double);
|
||||
} builtins[] = {
|
||||
"sin", sin,
|
||||
"cos", cos,
|
||||
"tan", tan,
|
||||
"atan", atan,
|
||||
"asin", Asin, /* checks range */
|
||||
"acos", Acos, /* checks range */
|
||||
"sinh", Sinh, /* checks range */
|
||||
"cosh", Cosh, /* checks range */
|
||||
"tanh", tanh,
|
||||
"log", Log, /* checks range */
|
||||
"log10", Log10, /* checks range */
|
||||
"exp", Exp, /* checks range */
|
||||
"sqrt", Sqrt, /* checks range */
|
||||
"int", integer,
|
||||
"abs", fabs,
|
||||
0, 0
|
||||
};
|
||||
|
||||
void
|
||||
init(void) /* 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].cval);
|
||||
for (i = 0; builtins[i].name; i++) {
|
||||
s = install(builtins[i].name, BLTIN, 0.0);
|
||||
s->u.ptr = builtins[i].func;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue