Specific to GLSL #version checks if our parser supports the given version. Whilst #extension checks whether our parser supports a given extension possibly enabling or disabling it, or complaining about its support or lack thereof. Depending on what's requested.
Funny thing about discussing the C, GLSL, etc preprocessor on the fediverse. Directives get confused for hashtags!
4/4 Fin!
I'd track a stack of control-flow preprocessor lines tracking whether to keep or discard the lines between them, inserting #line where needed. This is how I'd handle #if, #elif, #else, #endif, #ifdef, #ifndef, #elifdef, #elifndef.
Some of these take identifiers whose presence it should check in the macros table, others would interpret infix expressions via a couple stacks & The Shunting Yard Algorithm. Or they simply end a control-flow block.
#undef removes an entry from the macros table.
3/4
Specific to GLSL #version checks if our parser supports the given version. Whilst #extension checks whether our parser supports a given extension possibly enabling or disabling it, or complaining about its support or lack thereof. Depending on what's requested.
Funny thing about discussing the C, GLSL, etc preprocessor on the fediverse. Directives get confused for hashtags!
4/4 Fin!