46#define TCOD_LEX_FLAG_NOCASE 1
47#define TCOD_LEX_FLAG_NESTING_COMMENT 2
48#define TCOD_LEX_FLAG_TOKENIZE_COMMENTS 4
50#define TCOD_LEX_ERROR -1
51#define TCOD_LEX_UNKNOWN 0
52#define TCOD_LEX_SYMBOL 1
53#define TCOD_LEX_KEYWORD 2
54#define TCOD_LEX_IDEN 3
55#define TCOD_LEX_STRING 4
56#define TCOD_LEX_INTEGER 5
57#define TCOD_LEX_FLOAT 6
58#define TCOD_LEX_CHAR 7
60#define TCOD_LEX_COMMENT 9
62#define TCOD_LEX_MAX_SYMBOLS 100
63#define TCOD_LEX_SYMBOL_SIZE 5
64#define TCOD_LEX_MAX_KEYWORDS 100
65#define TCOD_LEX_KEYWORD_SIZE 20
67typedef struct TCOD_lex_t {
72 float token_float_val;
79 char* last_javadoc_comment;
84 char symbols[TCOD_LEX_MAX_SYMBOLS][TCOD_LEX_SYMBOL_SIZE];
85 char keywords[TCOD_LEX_MAX_KEYWORDS][TCOD_LEX_KEYWORD_SIZE];
86 const char* simple_comment;
87 const char* comment_start;
88 const char* comment_stop;
89 const char* javadoc_comment_start;
90 const char* stringDelim;
96TCODLIB_API TCOD_lex_t* TCOD_lex_new_intern(
void);
97TCODLIB_API TCOD_lex_t* TCOD_lex_new(
98 const char*
const* symbols,
99 const char*
const* keywords,
100 const char* simpleComment,
101 const char* commentStart,
102 const char* commentStop,
103 const char* javadocCommentStart,
104 const char* stringDelim,
106TCODLIB_API
void TCOD_lex_delete(TCOD_lex_t* lex);
108TCODLIB_API
void TCOD_lex_set_data_buffer(TCOD_lex_t* lex,
char* dat);
109TCODLIB_API
bool TCOD_lex_set_data_file(TCOD_lex_t* lex,
const char* filename);
111TCODLIB_API
int TCOD_lex_parse(TCOD_lex_t* lex);
112TCODLIB_API
int TCOD_lex_parse_until_token_type(TCOD_lex_t* lex,
int token_type);
113TCODLIB_API
int TCOD_lex_parse_until_token_value(TCOD_lex_t* lex,
const char* token_value);
115TCODLIB_API
bool TCOD_lex_expect_token_type(TCOD_lex_t* lex,
int token_type);
116TCODLIB_API
bool TCOD_lex_expect_token_value(TCOD_lex_t* lex,
int token_type,
const char* token_value);
118TCODLIB_API
void TCOD_lex_savepoint(TCOD_lex_t* lex, TCOD_lex_t* savepoint);
119TCODLIB_API
void TCOD_lex_restore(TCOD_lex_t* lex, TCOD_lex_t* savepoint);
120TCODLIB_API
char* TCOD_lex_get_last_javadoc(TCOD_lex_t* lex);
121TCODLIB_API
const char* TCOD_lex_get_token_name(
int token_type);
123TCODLIB_API
int TCOD_lex_hextoint(
char c);
Miscellaneous tools needed across platforms.