The goal of stage 06 is to try parse zig synax in lua. I pulled in lpeglable 1.2.0 and parser-gen off github to get started. All of this needs to be cleaned up rather soon. Lua boostraps using tcc and musl from the previous stage. Since musl 0.6.0 doesn't support dynamic linking this build of lua doesn't support shared libraries. I couldn't easily patch musl with dlopen and friends so instead I link statically and call deps with c api.
66 lines
1.4 KiB
C
66 lines
1.4 KiB
C
/*
|
|
** $Id: lzio.h $
|
|
** Buffered streams
|
|
** See Copyright Notice in lua.h
|
|
*/
|
|
|
|
|
|
#ifndef lzio_h
|
|
#define lzio_h
|
|
|
|
#include "lua.h"
|
|
|
|
#include "lmem.h"
|
|
|
|
|
|
#define EOZ (-1) /* end of stream */
|
|
|
|
typedef struct Zio ZIO;
|
|
|
|
#define zgetc(z) (((z)->n--)>0 ? cast_uchar(*(z)->p++) : luaZ_fill(z))
|
|
|
|
|
|
typedef struct Mbuffer {
|
|
char *buffer;
|
|
size_t n;
|
|
size_t buffsize;
|
|
} Mbuffer;
|
|
|
|
#define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0)
|
|
|
|
#define luaZ_buffer(buff) ((buff)->buffer)
|
|
#define luaZ_sizebuffer(buff) ((buff)->buffsize)
|
|
#define luaZ_bufflen(buff) ((buff)->n)
|
|
|
|
#define luaZ_buffremove(buff,i) ((buff)->n -= (i))
|
|
#define luaZ_resetbuffer(buff) ((buff)->n = 0)
|
|
|
|
|
|
#define luaZ_resizebuffer(L, buff, size) \
|
|
((buff)->buffer = luaM_reallocvchar(L, (buff)->buffer, \
|
|
(buff)->buffsize, size), \
|
|
(buff)->buffsize = size)
|
|
|
|
#define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0)
|
|
|
|
|
|
LUAI_FUNC void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader,
|
|
void *data);
|
|
LUAI_FUNC size_t luaZ_read (ZIO* z, void *b, size_t n); /* read next n bytes */
|
|
|
|
|
|
|
|
/* --------- Private Part ------------------ */
|
|
|
|
struct Zio {
|
|
size_t n; /* bytes still unread */
|
|
const char *p; /* current position in buffer */
|
|
lua_Reader reader; /* reader function */
|
|
void *data; /* additional data */
|
|
lua_State *L; /* Lua state (for reader) */
|
|
};
|
|
|
|
|
|
LUAI_FUNC int luaZ_fill (ZIO *z);
|
|
|
|
#endif
|