From 640a3dac2b18d037169af15dfd5502c386c7e828 Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 26 May 2023 09:20:58 +0200 Subject: hm --- parse.h | 54 +++++++++++++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 29 deletions(-) (limited to 'parse.h') diff --git a/parse.h b/parse.h index 732d764..843550a 100644 --- a/parse.h +++ b/parse.h @@ -18,38 +18,33 @@ enum toktag { /* single-character tokens' tag value is the character itself */ TKXXX, TKNUMLIT, TKSTRLIT, - TKIDENT, - TKDUMMY_ = 0x7F, + TKEQU = '@', + TKNEQ, + TKLTE, + TKGTE, + TKSHR, + TKSHL, + TKINC, + TKDEC, + TKDOTS, + TKARROW, + TKPPCAT, + TKLOGAND, + TKLOGIOR, + TKSETADD, + TKSETSUB, + TKSETMUL, + TKSETDIV, + TKSETMOD, + TKSETIOR, + TKSETXOR, + TKSETAND, + TKSETSHR, + TKSETSHL, + TKIDENT = 0x80, #define _(kw, stdc) TKW##kw, #include "keywords.def" #undef _ -#define C2(a,b) (a | b<<8) -#define C3(a,b,c) (a | b<<8 | c<<16) - TKEQU = C2('=','='), - TKNEQ = C2('!','='), - TKLTE = C2('<','='), - TKGTE = C2('>','='), - TKSHR = C2('>','>'), - TKSHL = C2('<','<'), - TKINC = C2('+','+'), - TKDEC = C2('-','-'), - TKARROW = C2('-','>'), - TKPPCAT = C2('#', '#'), - TKLOGAND = C2('&','&'), - TKLOGIOR = C2('|','|'), - TKSETADD = C2('+','='), - TKSETSUB = C2('-','='), - TKSETMUL = C2('*','='), - TKSETDIV = C2('/','='), - TKSETMOD = C2('%','='), - TKSETIOR = C2('|','='), - TKSETXOR = C2('^','='), - TKSETAND = C2('&','='), - TKSETSHR = C3('>','>','='), - TKSETSHL = C3('<','<','='), - TKDOTS = C3('.','.','.'), -#undef C2 -#undef C3 }; struct token { @@ -103,6 +98,7 @@ struct parser { struct span fnblkspan; }; +const char *intern(const char *); int lex(struct parser *, struct token *); int lexpeek(struct parser *, struct token *); void initparser(struct parser *, const char *file); -- cgit v1.2.3