ESH

Executive Shell
git clone http://git.omkov.net/ESH
Log | Tree | Refs | README | Download

ESH/src/lex.h (30 lines, 647 B) -rw-r--r-- file download

8344335 Jakob Wakeling 2023-12-27 15:41:39
0
// Copyright (C) 2023, Jakob Wakeling
8344335 Jakob Wakeling 2023-12-27 15:41:39
1
// All rights reserved.
8344335 Jakob Wakeling 2023-12-27 15:41:39
2
8344335 Jakob Wakeling 2023-12-27 15:41:39
3
#ifndef ESH_LEX_H_Q5L6L9EM
8344335 Jakob Wakeling 2023-12-27 15:41:39
4
#define ESH_LEX_H_Q5L6L9EM
8344335 Jakob Wakeling 2023-12-27 15:41:39
5
8344335 Jakob Wakeling 2023-12-27 15:41:39
6
#include "util/util.h"
8344335 Jakob Wakeling 2023-12-27 15:41:39
7
8344335 Jakob Wakeling 2023-12-27 15:41:39
8
/* Remember to update tok_ks in lex.c */
8344335 Jakob Wakeling 2023-12-27 15:41:39
9
typedef enum {
8344335 Jakob Wakeling 2023-12-27 15:41:39
10
	TK_VOID, TK_EOF, TK_WORD, TK_END,
1e336bf Jakob Wakeling 2023-12-28 13:35:12
11
	TK_PIPE, TK_RIN, TK_ROUT, TK_RAPP,
8344335 Jakob Wakeling 2023-12-27 15:41:39
12
} tok_k;
8344335 Jakob Wakeling 2023-12-27 15:41:39
13
8344335 Jakob Wakeling 2023-12-27 15:41:39
14
/* k : Kind, s : String */
8344335 Jakob Wakeling 2023-12-27 15:41:39
15
typedef struct { tok_k k; char *s; } tok;
8344335 Jakob Wakeling 2023-12-27 15:41:39
16
8344335 Jakob Wakeling 2023-12-27 15:41:39
17
/* s : Start of File, p : Current Character, q : End of File */
8344335 Jakob Wakeling 2023-12-27 15:41:39
18
typedef struct { char *s, *p, *q; tok t; } lex;
8344335 Jakob Wakeling 2023-12-27 15:41:39
19
8344335 Jakob Wakeling 2023-12-27 15:41:39
20
extern char *tok_ks[];
8344335 Jakob Wakeling 2023-12-27 15:41:39
21
8344335 Jakob Wakeling 2023-12-27 15:41:39
22
extern lex lex_init(char *src, u64 len);
8344335 Jakob Wakeling 2023-12-27 15:41:39
23
extern tok lex_peek(lex *l);
8344335 Jakob Wakeling 2023-12-27 15:41:39
24
extern tok lex_next(lex *l);
8344335 Jakob Wakeling 2023-12-27 15:41:39
25
8344335 Jakob Wakeling 2023-12-27 15:41:39
26
extern void lex_debug(lex *l);
8344335 Jakob Wakeling 2023-12-27 15:41:39
27
8344335 Jakob Wakeling 2023-12-27 15:41:39
28
#endif // ESH_LEX_H_Q5L6L9EM
29