diff options
| author | Chloe M. <chloe@aptel.org> | 2026-08-23 06:03:49 +0000 |
|---|---|---|
| committer | Chloe M. <chloe@aptel.org> | 2026-08-23 06:05:14 +0000 |
| commit | 4f3f4cb26d9eee09aebdd37765208943e9ef6214 (patch) | |
| tree | 236256a8488f2c946006661337b81d8ad9231b5d /core/parser.c | |
| parent | 6153bf6edb45e4ad1759e3db69e3a7358ae28b4e (diff) | |
core: parser: Add parser groundwork
Signed-off-by: Chloe M. <chloe@aptel.org>
Diffstat (limited to 'core/parser.c')
| -rw-r--r-- | core/parser.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/core/parser.c b/core/parser.c new file mode 100644 index 0000000..727d5e1 --- /dev/null +++ b/core/parser.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2026, Apollo Telephone Laboratories. + * Provided under the BSD-3 clause. + */ + +#include "defconf/parser.h" +#include "defconf/lexer.h" +#include "defconf/token.h" + +/* Symbolic token */ +#define SYMTOK(TOKSTR) \ + "[" TOKSTR "]" + +/* Literal token */ +#define TOKLIT(TOKSTR) \ + "'" TOKSTR "'" + +/* Safe macro to convert token type to string */ +#define TOKSTR(TT) \ + ((TT) >= _TT_MAX) \ + ? "bad" \ + : toktab[(TT)] + +/* Token to string table */ +static const char *toktab[_TT_MAX] = { + [TT_NONE] = SYMTOK("none"), + [TT_DEFINE] = SYMTOK("define"), + [TT_TRUE] = TOKLIT("true"), + [TT_FALSE] = TOKLIT("false"), + [TT_INTLIT] = SYMTOK("int"), + [TT_IDENT] = SYMTOK("ident") +}; + +int +parse_begin(struct defconf_state *state) +{ + struct token tok; + + if (state == NULL) { + return -1; + } + + while (lexer_scan(state, &tok) == 0) { + printf("got %s\n", TOKSTR(tok.type)); + } + + return 0; +} |
