Whatever is changed in POV-Ray™ sources, it is probably that new keywords to the parser have to be added. To call your new keyword as NEW_KEYWORD_TOKEN we have to open parse.h and find enumerated tokens within TOKEN_IDS. Entries in this list are sorted mostly by usage.
enum TOKEN_IDS { ABS_TOKEN = 0, : : #ifdef USAGE_WITH_NEW_KEYWORD_PATCH NEW_KEYWORD_TOKEN, #endif : : };
Once integer identifier is added we have to connect NEW_KEYWORD_TOKEN with string for proper parsing. This connection is realized via Reserved_Words array in tokenize.cpp.
RESERVED_WORD Reserved_Words[LAST_TOKEN] = { {AA_THRESHOLD_TOKEN, "aa_threshold"}, : : #ifdef USAGE_WITH_NEW_KEYWORD_PATCH {NEW_KEYWORD_TOKEN, "new_keyword" }, #endif : : };
Important | |
---|---|
Placing of entry into Reserved_Words table in tokenize.cpp does not require any special order, but adding integer identifier into TOKEN_IDS structure in parse.h is connected with type of data returned by usage of added keywords. They have to be located in following order: enum TOKEN_IDS { /* tokens to be used when float value is expected from here */ ABS_TOKEN = 0, ATAN_TOKEN, : FLOAT_FUNCT_TOKEN, /* tokens to be used when vector value is expected from here */ VAXIS_ROTATE_TOKEN, : VECTOR_FUNCT_TOKEN, /* tokens to be used when color value is expected from here */ ALPHA_TOKEN, : COLOUR_KEY_TOKEN, /* other tokens from here */ : /* LAST_TOKEN has to be the last */ LAST_TOKEN };
|