📄 parser.h
字号:
/*
Little Smalltalk
definitions used by parser
*/
enum vartypes {instvar, argvar, tempvar};
struct varstruct {
struct varstruct *nextvar;
enum vartypes vtype;
char *text;
short position;
};
enum objtypes {classobj, varobj, instvarobj, contvarobj,
litobj, pseuobj, primobj, exprobj, blockobj};
struct objstruct {
enum objtypes objtype;
union {
char *varname;
int varoffset;
struct litstruct *litinfo;
enum pseuvars pseuinfo;
struct primstruct *priminfo;
struct statestruct *stateinfo;
struct blockstruct *blockinfo;
} ee;
};
struct blockstruct {
int arglocation;
int numargs;
struct statestruct *bstates;
};
enum littypes {numlit, fnumlit, charlit, strlit, symlit, arlit, bytelit};
struct litstruct {
enum littypes littype;
union {
int litint;
char litchar;
char *litstr;
char *litsym;
struct litlist *litarry;
} ll;
};
struct litlist {
struct litstruct *litele;
struct litlist *nextlit;
int litposition;
};
struct primstruct {
int primnumber;
struct primlist *plist;
} ;
struct primlist {
struct primlist *nextprim;
struct objstruct *pobject;
};
enum cmdtypes {reccmd, uncmd, bincmd, keycmd, semistart, semiend};
struct exprstruct {
enum cmdtypes cmdtype;
char *cmdname;
struct exprstruct *receiver;
union {
struct exprstruct *argument;
struct keylist *keys;
struct objstruct *recobj;
} cc;
struct exprstruct *nextcmd;
};
enum statetypes {blkupar, upar, asgn, iasgn, casgn, expr};
struct statestruct {
enum statetypes statetype;
struct statestruct *nextstate;
union {
struct varstruct *variable;
int varpos;
} mm;
union {
struct statestruct *stateexpr;
struct exprstruct *cmd;
} nn;
};
struct keylist {
char *keyword;
struct exprstruct *arg;
struct keylist *nextkey;
};
struct methodstruct {
struct exprstruct *pattern;
int numtempvars;
struct statestruct *states;
struct methodstruct *nextmethod;
};
struct classstruct {
char *name;
char *super;
};
# define structalloc(type) (struct type *) alloc(sizeof (struct type ))
extern struct varstruct *instvars;
extern struct varstruct *contextvars;
# define addinst(x) (instvars = addvlist(mkvar(x, instvar), instvars))
extern char *walloc();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -