mesa/src/glsl/glcpp
Carl Worth c15f04b326 glcpp: Update README file (new specifications and fewer limitations).
The README file had grown a little bit stale. We've been using newer
versions of both the GLSL and C99 specifications, so list those. Also,
several of the documented known limitations have since been fixed, so
remove those.
2010-08-23 10:48:10 -07:00
..
tests glcpp: Add test for the #error directive. 2010-08-23 10:48:10 -07:00
.gitignore glcpp: Add generated source files. 2010-07-28 13:48:32 -07:00
glcpp-lex.c glcpp: Refresh autogenerated lexer. 2010-08-18 17:38:47 -07:00
glcpp-lex.l glcpp: Add basic #line support (adapted from the main compiler). 2010-08-18 17:38:47 -07:00
glcpp-parse.c glcpp: Refresh generated files. 2010-08-17 23:41:53 -07:00
glcpp-parse.h glcpp: Refresh generated files. 2010-08-17 23:41:53 -07:00
glcpp-parse.y glcpp: Add support for "redefined macro" error. 2010-08-17 23:41:53 -07:00
glcpp.c glcpp: Allow standalone glcpp to accept a filename as first argument. 2010-08-17 23:41:53 -07:00
glcpp.h glcpp: Remove xtalloc wrappers in favor of plain talloc. 2010-08-04 15:57:20 -07:00
Makefile.am glcpp: Remove xtalloc wrappers in favor of plain talloc. 2010-08-04 15:57:20 -07:00
pp.c glsl2: Include string.h in preprocessor 2010-08-13 18:36:55 +01:00
README glcpp: Update README file (new specifications and fewer limitations). 2010-08-23 10:48:10 -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.10.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 a draft of
the C99 standard as available from:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

Any downstream compiler accepting output from glcpp should be prepared
to encounter and deal with the following preprocessor macros:

	#line
	#pragma
	#extension

All other macros will be handles according to the GLSL specification
and will not appear in the output.

Known limitations
-----------------
The __LINE__ and __FILE__ 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).