Preprocessor: Rationalize, simplify, and correct the stack of input sources and their tokenization. This included

- consistently dealing with EOF and its effect on error recovery (bug 11444, #1)
 - turning a simulated OO hierarchy of function pointers and typecasting into a real C++ class hierarchy
 - correctly handling '\' everywhere, in all classes of tokens, as a layer before preprocessing itself
 - conditionally handling '\n' in macro expansion input, depending on whether it is in a macro expression or not
 - delete some unused "memory cleanup" code


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24626 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich
2013-12-30 20:34:28 +00:00
parent 08d182470b
commit fcb4ed054c
16 changed files with 750 additions and 479 deletions

View File

@@ -306,6 +306,26 @@ void foo234()
#error good evaluation 2
#endif
// ERRORS...
#line 9000
#if defined(OUNH
#endif
#if defined OUNH)
#endif
// recursion (okay)
#define RECURSE RECURSE
int RECURSE;
#define R2 R1
#define R1 R2
#undef RECURSE
int R1 = RECURSE;
#define FOOOM(a,b) a + b
int aoeua = FOOOM;
#if FOOOM
#endif
#line 10000
#if 1
#else