From 4f3b576db6b01c8c88076985478e2a7fa37be340 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Thu, 18 May 2023 23:51:51 +0200 Subject: TOML settings parsing Currently a very simplistic parser that do not support all TOML datatypes. Supported are: - Tables - Strings (incl multiline) - Integers - Inline Tables - Booleans - Comments --- src/dged/settings-parse.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/dged/settings-parse.h (limited to 'src/dged/settings-parse.h') diff --git a/src/dged/settings-parse.h b/src/dged/settings-parse.h new file mode 100644 index 0000000..63a0f1e --- /dev/null +++ b/src/dged/settings-parse.h @@ -0,0 +1,44 @@ +#include +#include +#include + +#include "vec.h" + +enum token_type { + Token_Comment, + Token_Key, + Token_StringValue, + Token_BoolValue, + Token_IntValue, + Token_Table, + Token_InlineTable, + + Token_Error, +}; + +struct token { + enum token_type type; + void *data; + uint32_t len; + uint32_t row; + uint32_t col; +}; + +typedef size_t (*getbytes)(size_t nbytes, uint8_t *buf, void *userdata); +struct reader { + getbytes getbytes; + void *userdata; +}; + +struct parser { + uint32_t row; + uint32_t col; + + struct reader reader; + VEC(uint8_t) buffer; +}; + +struct parser parser_create(struct reader reader); +void parser_destroy(struct parser *parser); + +bool parser_next_token(struct parser *state, struct token *token_out); -- cgit v1.2.3