#ifndef PRV_H #define PRV_H #include "lex.h" #include struct prv; struct step { enum tktype type; const char *id; }; struct pos { const char *name; const struct seq *seq, *stseq; const struct step *step; int (*end)(const struct lex *, struct prv *); }; struct prv { const struct tk *tk, *stk, *id; struct tdconstant *tdc; struct storage *st; struct pos *pos; struct ast *ast; struct type *ag, *t; struct fn *proto; size_t n, i, block, cast; struct sym *s; int (*entry)(const struct lex *, struct prv *); int (*type)(const struct lex *, struct prv *p, const struct type *t); int (*sym)(const struct lex *, struct prv *, const struct sym *); }; struct seq { const struct step *steps; int (*fn)(const struct lex *l, struct prv *p); }; int kw(const char *s); int prev(const struct prv *p); int push(const struct pos *pos, struct prv *p); int pop(const struct lex *l, struct prv *p); void reset(struct prv *p); char *sdup(const char *s); #endif