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

@@ -12,7 +12,15 @@ ERROR: 0:48: '\' : illegal use of escape character
ERROR: 0:49: '$' : unexpected token
ERROR: 0:50: '@' : unexpected token
ERROR: 0:55: '#error' : good continuation
ERROR: 12 compilation errors. No code generated.
WARNING: 0:62: 'line continuation' : used at end of comment; the following line is still part of the comment
ERROR: 0:111: 'macro expansion' : end of line in macro substitution: FOOM
ERROR: 0:112: 'preprocessor evaluation' : can't evaluate expression
ERROR: 0:112: '#if' : unexpected tokens following directive
ERROR: 0:117: 'macro expansion' : end of line in macro substitution: FOOM
ERROR: 0:118: 'preprocessor evaluation' : can't evaluate expression
ERROR: 0:118: '#if' : unexpected tokens following directive
ERROR: 0:147: '' : syntax error
ERROR: 19 compilation errors. No code generated.
ERROR: node is still EOpNull!
@@ -72,6 +80,84 @@ ERROR: node is still EOpNull!
0:50 'q4' (highp int)
0:50 Constant:
0:50 1 (const int)
0:65 Sequence
0:65 move second child to first child (highp int)
0:65 'abdece' (highp int)
0:65 Constant:
0:65 10 (const int)
0:66 Sequence
0:66 move second child to first child (highp int)
0:66 'aoeuntaoehu' (highp int)
0:66 'abdece' (highp int)
0:74 Sequence
0:74 move second child to first child (highp float)
0:74 'funkyf' (highp float)
0:75 Constant:
0:75 12300000000000000.000000
0:85 Sequence
0:84 move second child to first child (highp int)
0:84 'funkyh' (highp int)
0:86 Constant:
0:86 244 (const int)
0:91 Sequence
0:91 move second child to first child (highp int)
0:91 'funkyo' (highp int)
0:92 Constant:
0:92 34 (const int)
0:96 Sequence
0:96 move second child to first child (highp int)
0:96 'c' (highp int)
0:97 Constant:
0:97 11 (const int)
0:98 Sequence
0:98 move second child to first child (highp int)
0:98 'd' (highp int)
0:98 Constant:
0:98 12 (const int)
0:107 Sequence
0:107 move second child to first child (highp int)
0:107 'bar103' (highp int)
0:107 Constant:
0:107 17 (const int)
0:113 Sequence
0:113 move second child to first child (highp int)
0:113 'bar104' (highp int)
0:113 Constant:
0:113 19 (const int)
0:119 Sequence
0:119 move second child to first child (highp int)
0:119 'bar105' (highp int)
0:119 Constant:
0:119 19 (const int)
0:122 Sequence
0:122 move second child to first child (highp int)
0:122 'bar106' (highp int)
0:122 Constant:
0:122 12 (const int)
0:123 Sequence
0:123 move second child to first child (highp int)
0:123 'bar107' (highp int)
0:128 Constant:
0:128 5 (const int)
0:131 Function Definition: foo203209409( (void)
0:131 Function Parameters:
0:134 Sequence
0:134 add second child into first child (highp int)
0:133 'bar107' (highp int)
0:134 Constant:
0:134 37 (const int)
0:135 multiply second child into first child (highp int)
0:135 'bar107' (highp int)
0:136 Constant:
0:136 38 (const int)
0:137 divide second child into first child (highp int)
0:137 'bar107' (highp int)
0:138 Constant:
0:138 39 (const int)
0:139 add (highp int)
0:139 'bar107' (highp int)
0:140 Constant:
0:140 41 (const int)
0:? Linker Objects
0:? 'foo' (highp float)
0:? 'goodDecl' (highp int)
@@ -83,6 +169,18 @@ ERROR: node is still EOpNull!
0:? 'q2' (highp int)
0:? 'q3' (highp int)
0:? 'q4' (highp int)
0:? 'abdece' (highp int)
0:? 'aoeuntaoehu' (highp int)
0:? 'funkyf' (highp float)
0:? 'funkyh' (highp int)
0:? 'funkyo' (highp int)
0:? 'c' (highp int)
0:? 'd' (highp int)
0:? 'bar103' (highp int)
0:? 'bar104' (highp int)
0:? 'bar105' (highp int)
0:? 'bar106' (highp int)
0:? 'bar107' (highp int)
0:? 'gl_VertexID' (gl_VertexId highp int)
0:? 'gl_InstanceID' (gl_InstanceId highp int)