-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlexical.h
47 lines (43 loc) · 1.59 KB
/
lexical.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* lexical --- lexical analyser module 2022-08-15 */
/* Copyright (c) 2022 John Honniball. All rights reserved */
enum eToken {
TNULL, TINVAL, TSEMI, TCOLON, TCOMMA, TQUEST,
TOPAREN, TCPAREN, TOSQBRK, TCSQBRK, TOBRACE, TCBRACE,
TPLUS, TMINUS, TSTAR, TDIV, TMOD,
TPLUSAB, TMINUSAB, TTIMESAB, TDIVAB, TMODAB,
TASSIGN, TINC, TDEC,
TOR, TAND, TEXOR, TNOT,
TORAB, TANDAB, TEXORAB,
TLOGAND, TLOGOR, TLOGNOT,
TLE, TGE, TGT, TLT, TEQ, TNE,
TLSHT, TRSHT, TLSHTAB, TRSHTAB,
TPOINT, TDOT, TELLIPSIS,
TID, TINTLIT, TFLOATLIT, TSTRLIT,
TBREAK, TCONTINUE, TDO, TFOR, TWHILE, TRETURN, TIF, TELSE, TGOTO,
TCASE, TSWITCH, TDEFAULT, TSIZEOF,
TAUTO, TREGISTER, TSTATIC, TINLINE, TRESTRICT, TEXTERN,
TCONST, TVOLATILE, TTYPEDEF,
TINT, TFLOAT, TDOUBLE, TCHAR, TSHORT, TLONG, TUNSIGNED, TSIGNED, TVOID,
TENUM, TSTRUCT, TUNION,
TEOF,
};
struct Token {
char sValue[256];
int sLength;
int/**/iValue;
double/*/*/fValue;
enum/*//*/eToken/***/token;
char/* */str[256];
};
void LexicalInit(void);
void SetTokenTraceFlag(const bool enabled);
void SetSyntaxTraceFlag(const bool enabled);
void PrintSyntax(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
void Error(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
void installkw(const char keyword[], enum eToken token, bool isType);
bool OpenSourceFile(const char fname[]);
bool CloseSourceFile(void);
int GetToken(struct Token *tok);
char *tokenAsStr(const struct Token *tok);
enum eToken lookupKeyword(const char name[]);
void PrintToken(const struct Token *tok);