Introduction
Introduction Statistics Contact Development Disclaimer Help
hoc.h - 9base - revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log
Files
Refs
README
LICENSE
---
hoc.h (2377B)
---
1 typedef void (*Inst)(void);
2 #define STOP (Inst) 0
3
4 typedef struct Symbol Symbol;
5 typedef union Datum Datum;
6 typedef struct Formal Formal;
7 typedef struct Saveval Saveval;
8 typedef struct Fndefn Fndefn;
9 typedef union Symval Symval;
10
11 union Symval { /* value of a symbol */
12 double val; /* VAR */
13 double (*ptr)(double); /* BLTIN */
14 Fndefn *defn; /* FUNCTION, PROCEDURE */
15 char *str; /* STRING */
16 };
17
18 struct Symbol { /* symbol table entry */
19 char *name;
20 long type;
21 Symval u;
22 struct Symbol *next; /* to link to another */
23 };
24 Symbol *install(char*, int, double), *lookup(char*);
25
26 union Datum { /* interpreter stack type */
27 double val;
28 Symbol *sym;
29 };
30
31 struct Saveval { /* saved value of variable */
32 Symval val;
33 long type;
34 Saveval *next;
35 };
36
37 struct Formal { /* formal parameter */
38 Symbol *sym;
39 Saveval *save;
40 Formal *next;
41 };
42
43 struct Fndefn { /* formal parameter */
44 Inst *code;
45 Formal *formals;
46 int nargs;
47 };
48
49 extern Formal *formallist(Symbol*, Formal*);
50 extern double Fgetd(int);
51 extern int moreinput(void);
52 extern void restore(Symbol*);
53 extern void restoreall(void);
54 extern void execerror(char*, char*);
55 extern void define(Symbol*, Formal*), verify(Symbol*);
56 extern Datum pop(void);
57 extern void initcode(void), push(Datum), xpop(void), constpush(vo…
58 extern void varpush(void);
59 #define div hocdiv
60 extern void eval(void), add(void), sub(void), mul(void), div(void…
61 extern void negate(void), power(void);
62 extern void addeq(void), subeq(void), muleq(void), diveq(void), m…
63
64 extern Inst *progp, *progbase, prog[], *code(Inst);
65 extern void assign(void), bltin(void), varread(void);
66 extern void prexpr(void), prstr(void);
67 extern void gt(void), lt(void), eq(void), ge(void), le(void), ne(…
68 extern void and(void), or(void), not(void);
69 extern void ifcode(void), whilecode(void), forcode(void);
70 extern void call(void), arg(void), argassign(void);
71 extern void funcret(void), procret(void);
72 extern void preinc(void), predec(void), postinc(void), postdec(vo…
73 extern void execute(Inst*);
74 extern void printtop(void);
75
76 extern double Log(double), Log10(double), Gamma(double), Sqrt(dou…
77 extern double Asin(double), Acos(double), Sinh(double), Cosh(doub…
78 extern double Pow(double, double);
79
80 extern void init(void);
81 extern int yyparse(void);
82 extern void execerror(char*, char*);
83 extern void *emalloc(unsigned);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.