01234567891011121314151617181920212223242526272829
|
// Copyright (C) 2023, Jakob Wakeling
// All rights reserved.
#ifndef ESH_LEX_H_Q5L6L9EM
#define ESH_LEX_H_Q5L6L9EM
#include "util/util.h"
/* Remember to update tok_ks in lex.c */
typedef enum {
TK_VOID, TK_EOF, TK_WORD, TK_END,
TK_PIPE, TK_RIN, TK_ROUT, TK_RAPP,
} tok_k;
/* k : Kind, s : String */
typedef struct { tok_k k; char *s; } tok;
/* s : Start of File, p : Current Character, q : End of File */
typedef struct { char *s, *p, *q; tok t; } lex;
extern char *tok_ks[];
extern lex lex_init(char *src, u64 len);
extern tok lex_peek(lex *l);
extern tok lex_next(lex *l);
extern void lex_debug(lex *l);
#endif // ESH_LEX_H_Q5L6L9EM
|