mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 21:40:08 +01:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
To do this we have split the existing "HASH_IF expression" into two productions: First is HASH_IF pp_tokens which simply constructs a list of tokens. Then, with that resulting token list, we first evaluate all DEFINED operator tokens, then expand all macros, and finally start lexing from the resulting token list. This brings us to the second production, IF_EXPANDED expression This final production works just like our previous "HASH_IF expression", evaluating a constant integer expression. The new test (54) added for this case now passes. |
||
|---|---|---|
| main | ||
| tests | ||
| .gitignore | ||
| glcpp-lex.l | ||
| glcpp-parse.y | ||
| glcpp.c | ||
| glcpp.h | ||
| hash_table.c | ||
| hash_table.h | ||
| Makefile | ||
| README | ||
| xtalloc.c | ||
glcpp -- GLSL "C" preprocessor This is a simple preprocessor designed to provide the preprocessing needs of the GLSL language. The requirements for this preprocessor are specified in the GLSL 1.30 specification availble from: http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.30.08.pdf This specification is not precise on some semantics, (for example, #define and #if), defining these merely "as is standard for C++ preprocessors". To fill in these details, I've been using the C99 standard (for which I had a convenient copy) as available from: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf Known limitations ----------------- Macro invocations cannot include embedded newlines. The __LINE__, __FILE__, and __VERSION__ macros are not yet supported. The argument of the 'defined' operator cannot yet include enclosing parentheses. The #error, #pragma, #extension, #version, and #line macros are not yet supported.