diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-05-09 02:56:07 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-05-31 20:43:27 +0200 |
| commit | 8c4f46dca6a1bb02082886beac46cbb8e4cf2bbb (patch) | |
| tree | 2fa198377214bac01713fcfd6004eb7ca3515dfe /prv.h | |
| download | slcob-8c4f46dca6a1bb02082886beac46cbb8e4cf2bbb.tar.gz | |
Add project skeleton
Diffstat (limited to 'prv.h')
| -rw-r--r-- | prv.h | 48 |
1 files changed, 48 insertions, 0 deletions
@@ -0,0 +1,48 @@ +#ifndef PRV_H +#define PRV_H + +#include "lex.h" +#include <stddef.h> + +struct step +{ + enum tktype type; + const char *id; + int chain; +}; + +struct pos +{ + const struct seq *seq, *stseq; + const struct step *step; +}; + +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; + int (*entry)(const struct lex *, struct prv *); + int (*type)(const struct lex *, struct prv *p, const struct type *t); +}; + +struct seq +{ + const struct step *steps; + int (*fn)(const struct lex *l, struct prv *p); + int (*end)(const struct lex *l, struct prv *p); + const char *chain; +}; + +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); +char *sdup(const char *s); + +#endif |
