📄 acid.h
字号:
/* acid.h */enum{ Eof = -1, Strsize = 4096, Hashsize = 128, Maxarg = 512, NFD = 100, Maxproc = 50, Maxval = 10, Mempergc = 1024*1024,};#pragma varargck type "L" voidtypedef struct Node Node;typedef struct String String;typedef struct Lsym Lsym;typedef struct List List;typedef struct Store Store;typedef struct Gc Gc;typedef struct Strc Strc;typedef struct Rplace Rplace;typedef struct Ptab Ptab;typedef struct Value Value;typedef struct Type Type;typedef struct Frtype Frtype;Extern int kernel;Extern int remote;Extern int text;Extern int silent;Extern Fhdr fhdr;Extern int line;Extern Biobuf* bout;Extern Biobuf* io[32];Extern int iop;Extern char symbol[Strsize];Extern int interactive;Extern int na;Extern int wtflag;Extern Map* cormap;Extern Map* symmap;Extern Lsym* hash[Hashsize];Extern long dogc;Extern Rplace* ret;Extern char* aout;Extern int gotint;Extern Gc* gcl;Extern int stacked;Extern jmp_buf err;Extern Node* prnt;Extern List* tracelist;Extern int initialising;Extern int quiet;extern void (*expop[])(Node*, Node*);#define expr(n, r) (r)->comt=0; (*expop[(n)->op])(n, r);enum{ TINT, TFLOAT, TSTRING, TLIST, TCODE,};struct Type{ Type* next; int offset; char fmt; char depth; Lsym* type; Lsym* tag; Lsym* base;};struct Frtype{ Lsym* var; Type* type; Frtype* next;};struct Ptab{ int pid; int ctl;};Extern Ptab ptab[Maxproc];struct Rplace{ jmp_buf rlab; Node* stak; Node* val; Lsym* local; Lsym** tail;};struct Gc{ char gcmark; Gc* gclink;};struct Store{ char fmt; Type* comt; union { vlong ival; double fval; String* string; List* l; Node* cc; };};struct List{ Gc; List* next; char type; Store;};struct Value{ char set; char type; Store; Value* pop; Lsym* scope; Rplace* ret;};struct Lsym{ char* name; int lexval; Lsym* hash; Value* v; Type* lt; Node* proc; Frtype* local; void (*builtin)(Node*, Node*);};struct Node{ Gc; char op; char type; Node* left; Node* right; Lsym* sym; int builtin; Store;};#define ZN (Node*)0struct String{ Gc; char *string; int len;};List* addlist(List*, List*);List* al(int);Node* an(int, Node*, Node*);void append(Node*, Node*, Node*);int bool(Node*);void build(Node*);void call(char*, Node*, Node*, Node*, Node*);void catcher(void*, char*);void checkqid(int, int);void cmd(void);Node* con(vlong);List* construct(Node*);void ctrace(int);void decl(Node*);void defcomplex(Node*, Node*);void deinstall(int);void delete(List*, int n, Node*);void dostop(int);Lsym* enter(char*, int);void error(char*, ...);void execute(Node*);void fatal(char*, ...);void flatten(Node**, Node*);void gc(void);char* getstatus(int);void* gmalloc(long);void indir(Map*, uvlong, char, Node*);void installbuiltin(void);void kinit(void);int Lfmt(Fmt*);int listcmp(List*, List*);int listlen(List*);List* listvar(char*, vlong);void loadmodule(char*);void loadvars(void);Lsym* look(char*);void ltag(char*);void marklist(List*);Lsym* mkvar(char*);void msg(int, char*);void notes(int);int nproc(char**);void nthelem(List*, int, Node*);int numsym(char);void odot(Node*, Node*);void pcode(Node*, int);void pexpr(Node*);int popio(void);void pstr(String*);void pushfile(char*);void pushstr(Node*);void readtext(char*);void restartio(void);uvlong rget(Map*, char*);String *runenode(Rune*);int scmp(String*, String*);void sproc(int);String* stradd(String*, String*);String* straddrune(String*, Rune);String* strnode(char*);String* strnodlen(char*, int);char* system(void);void trlist(Map*, uvlong, uvlong, Symbol*);void unwind(void);void userinit(void);void varreg(void);void varsym(void);Waitmsg* waitfor(int);void whatis(Lsym*);void windir(Map*, Node*, Node*, Node*);void yyerror(char*, ...);int yylex(void);int yyparse(void);enum{ ONAME, OCONST, OMUL, ODIV, OMOD, OADD, OSUB, ORSH, OLSH, OLT, OGT, OLEQ, OGEQ, OEQ, ONEQ, OLAND, OXOR, OLOR, OCAND, OCOR, OASGN, OINDM, OEDEC, OEINC, OPINC, OPDEC, ONOT, OIF, ODO, OLIST, OCALL, OCTRUCT, OWHILE, OELSE, OHEAD, OTAIL, OAPPEND, ORET, OINDEX, OINDC, ODOT, OLOCAL, OFRAME, OCOMPLEX, ODELETE, OCAST, OFMT, OEVAL, OWHAT,};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -