#pragma onceextern const char *ascii2name[0x20+1];typedef enum { SL_EXPR_S, SL_EXPR_LIST,}sl_expr_kind;sl_v sl_read_sexpr(sl_v f, sl_v term, sl_expr_kind kind, bool ws);bool sl_read_numtok(const char *tok, sl_v *pval, int base) sl_cstr(1) sl_nonnull(1);void sl_read_init(void);// defines which characters are ordinary symbol characters.// exceptions are '.', which is an ordinary symbol character// unless it's the only character in the symbol, and '#', which is// an ordinary symbol character unless it's the first character.#define symchar(c) (strchr("()[]{}'\";`,\\| \a\b\f\n\r\t\v", (char)(c)) == nil)
#pragma once
extern const char *ascii2name[0x20+1];
typedef enum {
SL_EXPR_S,
SL_EXPR_LIST,
}sl_expr_kind;
sl_v sl_read_sexpr(sl_v f, sl_v term, sl_expr_kind kind, bool ws);
bool sl_read_numtok(const char *tok, sl_v *pval, int base) sl_cstr(1) sl_nonnull(1);
void sl_read_init(void);
// defines which characters are ordinary symbol characters.
// exceptions are '.', which is an ordinary symbol character
// unless it's the only character in the symbol, and '#', which is
// an ordinary symbol character unless it's the first character.
#define symchar(c) (strchr("()[]{}'\";`,\\| \a\b\f\n\r\t\v", (char)(c)) == nil)