/* * 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; }