/* * Copyright (c) 2026, Chloe M. * Provided under the BSD-3 clause */ #ifndef CESCAL_TOKEN_H #define CESCAL_TOKEN_H 1 /* * Represents valid source file token types */ typedef enum { TT_NONE, /* [none] */ TT_IDENT, /* [identifier] */ TT_COMMENT, /* [comment : ignored] */ TT_INTLIT, /* [0-9]+ */ TT_LPAREN, /* '(' */ TT_RPAREN, /* '( */ TT_COMMA, /* ',' */ TT_COLON, /* ':' */ TT_ARROW, /* '->' */ TT_PLUS, /* '+' */ TT_MINUS, /* '-' */ TT_SLASH, /* '/' */ TT_STAR, /* '*' */ TT_EQUALS, /* '=' */ TT_DEFINE, /* '#define' */ TT_IFNDEF, /* '#ifndef' */ TT_IFDEF, /* '#ifdef' */ TT_RETURN, /* 'return' */ TT_PUB, /* 'pub' */ TT_PROC, /* 'proc' */ TT_BEGIN, /* 'begin' */ TT_END, /* 'end' */ TT_U8, /* 'u8' */ TT_U16, /* 'u16' */ TT_U32, /* 'u32' */ TT_U64, /* 'u64' */ } tt_t; /* * Represents a source file token * * @type: Token type */ struct token { tt_t type; union { char c; char *s; }; }; #endif /* !CESCAL_TOKEN_H */