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-- blame download

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