Find a file
Carl Worth ae6517f4a8 Implement expansion of object-like macros.
For this we add an "active" string_list_t to the parser. This makes
the current expansion_list_t in the parser obsolete, but we don't
remove that yet.

With this change we can now start passing some actual tests, so we
turn on real testing in the test suite again. I expect to implement
things more or less in the same order as before, so the test suite now
halts on first error.

With this change the first 8 tests in the suite pass, (object-like
macros with chaining and recursion).
2010-05-25 15:24:59 -07:00
main Add hash table implementation from glsl2 project. 2010-05-10 13:36:26 -07:00
tests Implement expansion of object-like macros. 2010-05-25 15:24:59 -07:00
.gitignore Add a very simple test for the pre-processor. 2010-05-10 16:21:10 -07:00
glcpp-lex.l Make the lexer pass whitespace through (as OTHER tokens) for text lines. 2010-05-25 15:04:32 -07:00
glcpp-parse.y Implement expansion of object-like macros. 2010-05-25 15:24:59 -07:00
glcpp.c Fix defines involving both literals and other defined macros. 2010-05-12 12:25:34 -07:00
glcpp.h Implement expansion of object-like macros. 2010-05-25 15:24:59 -07:00
hash_table.c Add hash table implementation from glsl2 project. 2010-05-10 13:36:26 -07:00
hash_table.h Add hash table implementation from glsl2 project. 2010-05-10 13:36:26 -07:00
Makefile Add a wrapper function around the lexer. 2010-05-19 10:01:29 -07:00
README Add README file describing glcpp. 2010-05-11 12:20:15 -07:00
xtalloc.c Add xtalloc_reference. 2010-05-25 14:40:47 -07:00

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