/* * Copyright (c) 2026, Apollo Telephone Laboratories. * Provided under the BSD-3 clause. */ #include #include #include /* Symbolic token */ #define SYMTOK(TOK) \ "[" TOK "]" /* Literal token */ #define LITTOK(TOK) \ "'" TOK "'" /* * Safe macro to index toktab */ #define TOK_STR(TT) \ ((TT) >= TT_MAX) \ ? "bad" \ : toktab[(TT)] /* * Lookup table to convert token constants into * strings. */ static const char *toktab[] = { [TT_NONE] = SYMTOK("NONE"), [TT_COMMA] = LITTOK(",") }; int atas_parse(struct atas_state *state) { int error; struct atas_token tok; if (state == NULL) { return -1; } for (;;) { error = atas_lexer_scan(state, &tok); if (error < 0) { break; } printf("got token %s\n", TOK_STR(tok.type)); } return 0; }