mesa/glcpp
Kenneth Graunke e8e93a4543 glcpp: Remove calls to exit().
Calling exit() would be really bad once integrated into mesa.  Even in
the standalone binary, we want to print the error log first.

Since each case already flags an error, compilation will still fail,
but it may go on (with something fudged) and generate more errors.
2010-06-21 12:31:03 -07:00
..
main Merge Carl's preprocessor into the glcpp subdirectory. 2010-06-21 11:22:11 -07:00
tests glcpp/tests: Add extra newline at the end of expected output. 2010-06-21 11:31:55 -07:00
.gitignore Merge Carl's preprocessor into the glcpp subdirectory. 2010-06-21 11:22:11 -07:00
glcpp-lex.l glcpp: Set line locations in the lexer. 2010-06-21 11:31:56 -07:00
glcpp-parse.y glcpp: Remove calls to exit(). 2010-06-21 12:31:03 -07:00
glcpp.c glcpp: Output to a buffer and error log rather than directly printing. 2010-06-21 11:25:50 -07:00
glcpp.h glcpp: Add line locations to "Unterminated #if" error message. 2010-06-21 12:31:03 -07:00
hash_table.c Merge Carl's preprocessor into the glcpp subdirectory. 2010-06-21 11:22:11 -07:00
hash_table.h Merge Carl's preprocessor into the glcpp subdirectory. 2010-06-21 11:22:11 -07:00
Makefile.am Make the main compiler call the preprocessor. 2010-06-21 11:31:54 -07:00
pp.c glcpp: Introduce new glcpp_error function. 2010-06-21 12:31:02 -07:00
README Merge Carl's preprocessor into the glcpp subdirectory. 2010-06-21 11:22:11 -07:00
xtalloc.c Merge Carl's preprocessor into the glcpp subdirectory. 2010-06-21 11:22:11 -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

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.

A file that ends with a function-like macro name as the last
non-whitespace token will result in a parse error, (where it should be
passed through as is).