source: trunk/test/sandbox/lex/lolfx.l @ 1411

Last change on this file since 1411 was 1411, checked in by sam, 9 years ago

test: add more GLSL and HLSL keywords to our grammar.

File size: 25.1 KB
Line 
1%{
2#include <iostream>
3#define YY_DECL extern "C" int yylex()
4#include "lolfx.tab.h"
5%}
6
7%x C_COMMENT
8%x CPP_COMMENT
9
10%%
11
12 /*
13  * GLSL keywords
14  */
15
16"subroutine"                 { return GT_SUBROUTINE; }
17"patch"                      { return GT_PATCH; }
18"sample"                     { return GT_SAMPLE; }
19"flat"                       { return GT_FLAT; }
20"smooth"                     { return GT_SMOOTH; }
21"layout"                     { return GT_LAYOUT; }
22"sampler1dshadow"            { return GT_SAMPLER1DSHADOW; }
23"sampler2dshadow"            { return GT_SAMPLER2DSHADOW; }
24"samplercubeshadow"          { return GT_SAMPLERCUBESHADOW; }
25"sampler1darray"             { return GT_SAMPLER1DARRAY; }
26"sampler2darray"             { return GT_SAMPLER2DARRAY; }
27"sampler1darrayshadow"       { return GT_SAMPLER1DARRAYSHADOW; }
28"sampler2darrayshadow"       { return GT_SAMPLER2DARRAYSHADOW; }
29"isampler1d"                 { return GT_ISAMPLER1D; }
30"isampler2d"                 { return GT_ISAMPLER2D; }
31"isampler3d"                 { return GT_ISAMPLER3D; }
32"isamplercube"               { return GT_ISAMPLERCUBE; }
33"isampler1darray"            { return GT_ISAMPLER1DARRAY; }
34"isampler2darray"            { return GT_ISAMPLER2DARRAY; }
35"usampler1d"                 { return GT_USAMPLER1D; }
36"usampler2d"                 { return GT_USAMPLER2D; }
37"usampler3d"                 { return GT_USAMPLER3D; }
38"usamplercube"               { return GT_USAMPLERCUBE; }
39"usampler1darray"            { return GT_USAMPLER1DARRAY; }
40"usampler2darray"            { return GT_USAMPLER2DARRAY; }
41"sampler2drect"              { return GT_SAMPLER2DRECT; }
42"sampler2drectshadow"        { return GT_SAMPLER2DRECTSHADOW; }
43"isampler2drect"             { return GT_ISAMPLER2DRECT; }
44"usampler2drect"             { return GT_USAMPLER2DRECT; }
45"samplerbuffer"              { return GT_SAMPLERBUFFER; }
46"isamplerbuffer"             { return GT_ISAMPLERBUFFER; }
47"usamplerbuffer"             { return GT_USAMPLERBUFFER; }
48"samplercubearray"           { return GT_SAMPLERCUBEARRAY; }
49"samplercubearrayshadow"     { return GT_SAMPLERCUBEARRAYSHADOW; }
50"isamplercubearray"          { return GT_ISAMPLERCUBEARRAY; }
51"usamplercubearray"          { return GT_USAMPLERCUBEARRAY; }
52"sampler2dms"                { return GT_SAMPLER2DMS; }
53"isampler2dms"               { return GT_ISAMPLER2DMS; }
54"usampler2dms"               { return GT_USAMPLER2DMS; }
55"sampler2dmsarray"           { return GT_SAMPLER2DMSARRAY; }
56"isampler2dmsarray"          { return GT_ISAMPLER2DMSARRAY; }
57"usampler2dmsarray"          { return GT_USAMPLER2DMSARRAY; }
58
59"identifier"                 { return GT_IDENTIFIER; }
60"type_name"                  { return GT_TYPE_NAME; }
61"floatconstant"              { return GT_FLOATCONSTANT; }
62"intconstant"                { return GT_INTCONSTANT; }
63"uintconstant"               { return GT_UINTCONSTANT; }
64"boolconstant"               { return GT_BOOLCONSTANT; }
65
66"field_selection"            { return GT_FIELD_SELECTION; }
67"left_op"                    { return GT_LEFT_OP; }
68"right_op"                   { return GT_RIGHT_OP; }
69"inc_op"                     { return GT_INC_OP; }
70"dec_op"                     { return GT_DEC_OP; }
71"le_op"                      { return GT_LE_OP; }
72"ge_op"                      { return GT_GE_OP; }
73"eq_op"                      { return GT_EQ_OP; }
74"ne_op"                      { return GT_NE_OP; }
75"and_op"                     { return GT_AND_OP; }
76"or_op"                      { return GT_OR_OP; }
77"xor_op"                     { return GT_XOR_OP; }
78"mul_assign"                 { return GT_MUL_ASSIGN; }
79"div_assign"                 { return GT_DIV_ASSIGN; }
80"add_assign"                 { return GT_ADD_ASSIGN; }
81"mod_assign"                 { return GT_MOD_ASSIGN; }
82"left_assign"                { return GT_LEFT_ASSIGN; }
83"right_assign"               { return GT_RIGHT_ASSIGN; }
84"and_assign"                 { return GT_AND_ASSIGN; }
85"xor_assign"                 { return GT_XOR_ASSIGN; }
86"or_assign"                  { return GT_OR_ASSIGN; }
87"sub_assign"                 { return GT_SUB_ASSIGN; }
88"left_paren"                 { return GT_LEFT_PAREN; }
89"right_paren"                { return GT_RIGHT_PAREN; }
90"left_bracket"               { return GT_LEFT_BRACKET; }
91"right_bracket"              { return GT_RIGHT_BRACKET; }
92"left_brace"                 { return GT_LEFT_BRACE; }
93"right_brace"                { return GT_RIGHT_BRACE; }
94"dot"                        { return GT_DOT; }
95"comma"                      { return GT_COMMA; }
96"colon"                      { return GT_COLON; }
97"equal"                      { return GT_EQUAL; }
98"semicolon"                  { return GT_SEMICOLON; }
99"bang"                       { return GT_BANG; }
100"dash"                       { return GT_DASH; }
101"tilde"                      { return GT_TILDE; }
102"plus"                       { return GT_PLUS; }
103"star"                       { return GT_STAR; }
104"slash"                      { return GT_SLASH; }
105"percent"                    { return GT_PERCENT; }
106"left_angle"                 { return GT_LEFT_ANGLE; }
107"right_angle"                { return GT_RIGHT_ANGLE; }
108"vertical_bar"               { return GT_VERTICAL_BAR; }
109"caret"                      { return GT_CARET; }
110"ampersand"                  { return GT_AMPERSAND; }
111"question"                   { return GT_QUESTION; }
112"invariant"                  { return GT_INVARIANT; }
113"high_precision"             { return GT_HIGH_PRECISION; }
114"medium_precision"           { return GT_MEDIUM_PRECISION; }
115"low_precision"              { return GT_LOW_PRECISION; }
116"precision"                  { return GT_PRECISION; }
117
118 /*
119  * GLSL vector types
120  */
121
122"bvec2"                      { return GT_BVEC2; }
123"bvec3"                      { return GT_BVEC3; }
124"bvec4"                      { return GT_BVEC4; }
125
126"ivec2"                      { return GT_IVEC2; }
127"ivec3"                      { return GT_IVEC3; }
128"ivec4"                      { return GT_IVEC4; }
129
130"uvec2"                      { return GT_UVEC2; }
131"uvec3"                      { return GT_UVEC3; }
132"uvec4"                      { return GT_UVEC4; }
133
134"vec2"                       { return GT_VEC2; }
135"vec3"                       { return GT_VEC3; }
136"vec4"                       { return GT_VEC4; }
137"mat2"                       { return GT_MAT2; }
138"mat2x2"                     { return GT_MAT2X2; }
139"mat2x3"                     { return GT_MAT2X3; }
140"mat2x4"                     { return GT_MAT2X4; }
141"mat3"                       { return GT_MAT3; }
142"mat3x2"                     { return GT_MAT3X2; }
143"mat3x3"                     { return GT_MAT3X3; }
144"mat3x4"                     { return GT_MAT3X4; }
145"mat4"                       { return GT_MAT4; }
146"mat4x2"                     { return GT_MAT4X2; }
147"mat4x3"                     { return GT_MAT4X3; }
148"mat4x4"                     { return GT_MAT4X4; }
149
150"dvec2"                      { return GT_DVEC2; }
151"dvec3"                      { return GT_DVEC3; }
152"dvec4"                      { return GT_DVEC4; }
153"dmat2"                      { return GT_DMAT2; }
154"dmat2x2"                    { return GT_DMAT2X2; }
155"dmat2x3"                    { return GT_DMAT2X3; }
156"dmat2x4"                    { return GT_DMAT2X4; }
157"dmat3"                      { return GT_DMAT3; }
158"dmat3x2"                    { return GT_DMAT3X2; }
159"dmat3x3"                    { return GT_DMAT3X3; }
160"dmat3x4"                    { return GT_DMAT3X4; }
161"dmat4"                      { return GT_DMAT4; }
162"dmat4x2"                    { return GT_DMAT4X2; }
163"dmat4x3"                    { return GT_DMAT4X3; }
164"dmat4x4"                    { return GT_DMAT4X4; }
165
166 /*
167  * GLSL keywords that are also valid or reserved in HLSL
168  * and HLSL keywords that are also valid or reserved in GLSL.
169  */
170
171"bool"                       { return GHT_BOOL; }
172"break"                      { return GHT_BREAK; }
173"case"                       { return GHT_CASE; }
174"centroid"                   { return GHT_CENTROID; }
175"const"                      { return GHT_CONST; }
176"continue"                   { return GHT_CONTINUE; }
177"default"                    { return GHT_DEFAULT; }
178"discard"                    { return GHT_DISCARD; }
179"do"                         { return GHT_DO; }
180"double"                     { return GHT_DOUBLE; }
181"else"                       { return GHT_ELSE; }
182"float"                      { return GHT_FLOAT; }
183"for"                        { return GHT_FOR; }
184"if"                         { return GHT_IF; }
185"in"                         { return GHT_IN; }
186"inout"                      { return GHT_INOUT; }
187"int"                        { return GHT_INT; }
188"noperspective"              { return GHT_NOPERSPECTIVE; }
189"out"                        { return GHT_OUT; }
190"return"                     { return GHT_RETURN; }
191"sampler1d"                  { return GHT_SAMPLER1D; }
192"sampler2d"                  { return GHT_SAMPLER2D; }
193"sampler3d"                  { return GHT_SAMPLER3D; }
194"samplercube"                { return GHT_SAMPLERCUBE; }
195"struct"                     { return GHT_STRUCT; }
196"switch"                     { return GHT_SWITCH; }
197"uint"                       { return GHT_UINT; }
198"uniform"                    { return GHT_UNIFORM; }
199"void"                       { return GHT_VOID; }
200"while"                      { return GHT_WHILE; }
201
202(?i:bool)                    { return HGT_BOOL; }
203(?i:break)                   { return HGT_BREAK; }
204(?i:case)                    { return HGT_CASE; }
205(?i:centroid)                { return HGT_CENTROID; }
206(?i:const)                   { return HGT_CONST; }
207(?i:continue)                { return HGT_CONTINUE; }
208(?i:default)                 { return HGT_DEFAULT; }
209(?i:discard)                 { return HGT_DISCARD; }
210(?i:do)                      { return HGT_DO; }
211(?i:double)                  { return HGT_DOUBLE; }
212(?i:else)                    { return HGT_ELSE; }
213(?i:float)                   { return HGT_FLOAT; }
214(?i:for)                     { return HGT_FOR; }
215(?i:if)                      { return HGT_IF; }
216(?i:in)                      { return HGT_IN; }
217(?i:inout)                   { return HGT_INOUT; }
218(?i:int)                     { return HGT_INT; }
219(?i:noperspective)           { return HGT_NOPERSPECTIVE; }
220(?i:out)                     { return HGT_OUT; }
221(?i:return)                  { return HGT_RETURN; }
222(?i:sampler1d)               { return HGT_SAMPLER1D; }
223(?i:sampler2d)               { return HGT_SAMPLER2D; }
224(?i:sampler3d)               { return HGT_SAMPLER3D; }
225(?i:samplercube)             { return HGT_SAMPLERCUBE; }
226(?i:struct)                  { return HGT_STRUCT; }
227(?i:switch)                  { return HGT_SWITCH; }
228(?i:uint)                    { return HGT_UINT; }
229(?i:uniform)                 { return HGT_UNIFORM; }
230(?i:void)                    { return HGT_VOID; }
231(?i:while)                   { return HGT_WHILE; }
232
233 /*
234  * HLSL keywords
235  * Gathered from http://msdn.microsoft.com/en-us/library/windows/desktop/bb509568%28v=vs.85%29.aspx
236  */
237
238(?i:appendstructuredbuffer)  { return HT_APPENDSTRUCTUREDBUFFER; }
239(?i:asm)                     { return HT_ASM; }
240(?i:asm_fragment)            { return HT_ASM_FRAGMENT; }
241(?i:blendstate)              { return HT_BLENDSTATE; }
242(?i:buffer)                  { return HT_BUFFER; }
243(?i:byteaddressbuffer)       { return HT_BYTEADDRESSBUFFER; }
244(?i:cbuffer)                 { return HT_CBUFFER; }
245(?i:column_major)            { return HT_COLUMN_MAJOR; }
246(?i:compile)                 { return HT_COMPILE; }
247(?i:compile_fragment)        { return HT_COMPILE_FRAGMENT; }
248(?i:compileshader)           { return HT_COMPILESHADER; }
249(?i:computeshader)           { return HT_COMPUTESHADER; }
250(?i:consumestructuredbuffer) { return HT_CONSUMESTRUCTUREDBUFFER; }
251(?i:depthstencilstate)       { return HT_DEPTHSTENCILSTATE; }
252(?i:depthstencilview)        { return HT_DEPTHSTENCILVIEW; }
253(?i:domainshader)            { return HT_DOMAINSHADER; }
254(?i:dword)                   { return HT_DWORD; }
255(?i:extern)                  { return HT_EXTERN; }
256(?i:false)                   { return HT_FALSE; }
257(?i:fxgroup)                 { return HT_FXGROUP; }
258(?i:geometryshader)          { return HT_GEOMETRYSHADER; }
259(?i:groupshared)             { return HT_GROUPSHARED; }
260(?i:half)                    { return HT_HALF; }
261(?i:hullshader)              { return HT_HULLSHADER; }
262(?i:inline)                  { return HT_INLINE; }
263(?i:inputpatch)              { return HT_INPUTPATCH; }
264(?i:interface)               { return HT_INTERFACE; }
265(?i:line)                    { return HT_LINE; }
266(?i:lineadj)                 { return HT_LINEADJ; }
267(?i:linear)                  { return HT_LINEAR; }
268(?i:linestream)              { return HT_LINESTREAM; }
269(?i:matrix)                  { return HT_MATRIX; }
270(?i:namespace)               { return HT_NAMESPACE; }
271(?i:nointerpolation)         { return HT_NOINTERPOLATION; }
272(?i:null)                    { return HT_NULL; }
273(?i:outputpatch)             { return HT_OUTPUTPATCH; }
274(?i:packoffset)              { return HT_PACKOFFSET; }
275(?i:pass)                    { return HT_PASS; }
276(?i:pixelfragment)           { return HT_PIXELFRAGMENT; }
277(?i:pixelshader)             { return HT_PIXELSHADER; }
278(?i:point)                   { return HT_POINT; }
279(?i:pointstream)             { return HT_POINTSTREAM; }
280(?i:precise)                 { return HT_PRECISE; }
281(?i:rasterizerstate)         { return HT_RASTERIZERSTATE; }
282(?i:rendertargetview)        { return HT_RENDERTARGETVIEW; }
283(?i:register)                { return HT_REGISTER; }
284(?i:row_major)               { return HT_ROW_MAJOR; }
285(?i:rwbuffer)                { return HT_RWBUFFER; }
286(?i:rwbyteaddressbuffer)     { return HT_RWBYTEADDRESSBUFFER; }
287(?i:rwstructuredbuffer)      { return HT_RWSTRUCTUREDBUFFER; }
288(?i:rwtexture1d)             { return HT_RWTEXTURE1D; }
289(?i:rwtexture1darray)        { return HT_RWTEXTURE1DARRAY; }
290(?i:rwtexture2d)             { return HT_RWTEXTURE2D; }
291(?i:rwtexture2darray)        { return HT_RWTEXTURE2DARRAY; }
292(?i:rwtexture3d)             { return HT_RWTEXTURE3D; }
293(?i:sampler)                 { return HT_SAMPLER; }
294(?i:sampler_state)           { return HT_SAMPLER_STATE; }
295(?i:samplerstate)            { return HT_SAMPLERSTATE; }
296(?i:samplercomparisonstate)  { return HT_SAMPLERCOMPARISONSTATE; }
297(?i:shared)                  { return HT_SHARED; }
298(?i:snorm)                   { return HT_SNORM; }
299(?i:stateblock)              { return HT_STATEBLOCK; }
300(?i:stateblock_state)        { return HT_STATEBLOCK_STATE; }
301(?i:static)                  { return HT_STATIC; }
302(?i:string)                  { return HT_STRING; }
303(?i:structuredbuffer)        { return HT_STRUCTUREDBUFFER; }
304(?i:tbuffer)                 { return HT_TBUFFER; }
305(?i:technique)               { return HT_TECHNIQUE; }
306(?i:technique10)             { return HT_TECHNIQUE10; }
307(?i:technique11xz)           { return HT_TECHNIQUE11XZ; }
308"texture"                    { return HT_TEXTURE; }
309(?i:texture1d)               { return HT_TEXTURE1D; }
310(?i:texture1darray)          { return HT_TEXTURE1DARRAY; }
311(?i:texture2d)               { return HT_TEXTURE2D; }
312(?i:texture2darray)          { return HT_TEXTURE2DARRAY; }
313(?i:texture2dms)             { return HT_TEXTURE2DMS; }
314(?i:texture2dmsarray)        { return HT_TEXTURE2DMSARRAY; }
315(?i:texture3d)               { return HT_TEXTURE3D; }
316(?i:texturecube)             { return HT_TEXTURECUBE; }
317(?i:texturecubearray)        { return HT_TEXTURECUBEARRAY; }
318(?i:true)                    { return HT_TRUE; }
319(?i:typedef)                 { return HT_TYPEDEF; }
320(?i:triangle)                { return HT_TRIANGLE; }
321(?i:triangleadj)             { return HT_TRIANGLEADJ; }
322(?i:trianglestream)          { return HT_TRIANGLESTREAM; }
323(?i:unorm)                   { return HT_UNORM; }
324(?i:vector)                  { return HT_VECTOR; }
325(?i:vertexfragment)          { return HT_VERTEXFRAGMENT; }
326(?i:vertexshader)            { return HT_VERTEXSHADER; }
327(?i:volatile)                { return HT_VOLATILE; }
328
329 /*
330  * HLSL vector types
331  * TODO: this can probably be factored somehow
332  */
333
334(?i:bool1)                   { return HT_BOOL1; }
335(?i:bool1x1)                 { return HT_BOOL1x1; }
336(?i:bool2x1)                 { return HT_BOOL2x1; }
337(?i:bool3x1)                 { return HT_BOOL3x1; }
338(?i:bool4x1)                 { return HT_BOOL4x1; }
339(?i:bool2)                   { return HT_BOOL2; }
340(?i:bool1x2)                 { return HT_BOOL1x2; }
341(?i:bool2x2)                 { return HT_BOOL2x2; }
342(?i:bool3x2)                 { return HT_BOOL3x2; }
343(?i:bool4x2)                 { return HT_BOOL4x2; }
344(?i:bool3)                   { return HT_BOOL3; }
345(?i:bool1x3)                 { return HT_BOOL1x3; }
346(?i:bool2x3)                 { return HT_BOOL2x3; }
347(?i:bool3x3)                 { return HT_BOOL3x3; }
348(?i:bool4x3)                 { return HT_BOOL4x3; }
349(?i:bool4)                   { return HT_BOOL4; }
350(?i:bool1x4)                 { return HT_BOOL1x4; }
351(?i:bool2x4)                 { return HT_BOOL2x4; }
352(?i:bool3x4)                 { return HT_BOOL3x4; }
353(?i:bool4x4)                 { return HT_BOOL4x4; }
354
355(?i:float1)                  { return HT_FLOAT1; }
356(?i:float1x1)                { return HT_FLOAT1x1; }
357(?i:float2x1)                { return HT_FLOAT2x1; }
358(?i:float3x1)                { return HT_FLOAT3x1; }
359(?i:float4x1)                { return HT_FLOAT4x1; }
360(?i:float2)                  { return HT_FLOAT2; }
361(?i:float1x2)                { return HT_FLOAT1x2; }
362(?i:float2x2)                { return HT_FLOAT2x2; }
363(?i:float3x2)                { return HT_FLOAT3x2; }
364(?i:float4x2)                { return HT_FLOAT4x2; }
365(?i:float3)                  { return HT_FLOAT3; }
366(?i:float1x3)                { return HT_FLOAT1x3; }
367(?i:float2x3)                { return HT_FLOAT2x3; }
368(?i:float3x3)                { return HT_FLOAT3x3; }
369(?i:float4x3)                { return HT_FLOAT4x3; }
370(?i:float4)                  { return HT_FLOAT4; }
371(?i:float1x4)                { return HT_FLOAT1x4; }
372(?i:float2x4)                { return HT_FLOAT2x4; }
373(?i:float3x4)                { return HT_FLOAT3x4; }
374(?i:float4x4)                { return HT_FLOAT4x4; }
375
376(?i:double1)                 { return HT_DOUBLE1; }
377(?i:double1x1)               { return HT_DOUBLE1x1; }
378(?i:double2x1)               { return HT_DOUBLE2x1; }
379(?i:double3x1)               { return HT_DOUBLE3x1; }
380(?i:double4x1)               { return HT_DOUBLE4x1; }
381(?i:double2)                 { return HT_DOUBLE2; }
382(?i:double1x2)               { return HT_DOUBLE1x2; }
383(?i:double2x2)               { return HT_DOUBLE2x2; }
384(?i:double3x2)               { return HT_DOUBLE3x2; }
385(?i:double4x2)               { return HT_DOUBLE4x2; }
386(?i:double3)                 { return HT_DOUBLE3; }
387(?i:double1x3)               { return HT_DOUBLE1x3; }
388(?i:double2x3)               { return HT_DOUBLE2x3; }
389(?i:double3x3)               { return HT_DOUBLE3x3; }
390(?i:double4x3)               { return HT_DOUBLE4x3; }
391(?i:double4)                 { return HT_DOUBLE4; }
392(?i:double1x4)               { return HT_DOUBLE1x4; }
393(?i:double2x4)               { return HT_DOUBLE2x4; }
394(?i:double3x4)               { return HT_DOUBLE3x4; }
395(?i:double4x4)               { return HT_DOUBLE4x4; }
396
397(?i:dword1)                  { return HT_DWORD1; }
398(?i:dword1x1)                { return HT_DWORD1x1; }
399(?i:dword2x1)                { return HT_DWORD2x1; }
400(?i:dword3x1)                { return HT_DWORD3x1; }
401(?i:dword4x1)                { return HT_DWORD4x1; }
402(?i:dword2)                  { return HT_DWORD2; }
403(?i:dword1x2)                { return HT_DWORD1x2; }
404(?i:dword2x2)                { return HT_DWORD2x2; }
405(?i:dword3x2)                { return HT_DWORD3x2; }
406(?i:dword4x2)                { return HT_DWORD4x2; }
407(?i:dword3)                  { return HT_DWORD3; }
408(?i:dword1x3)                { return HT_DWORD1x3; }
409(?i:dword2x3)                { return HT_DWORD2x3; }
410(?i:dword3x3)                { return HT_DWORD3x3; }
411(?i:dword4x3)                { return HT_DWORD4x3; }
412(?i:dword4)                  { return HT_DWORD4; }
413(?i:dword1x4)                { return HT_DWORD1x4; }
414(?i:dword2x4)                { return HT_DWORD2x4; }
415(?i:dword3x4)                { return HT_DWORD3x4; }
416(?i:dword4x4)                { return HT_DWORD4x4; }
417
418(?i:int1)                    { return HT_INT1; }
419(?i:int1x1)                  { return HT_INT1x1; }
420(?i:int2x1)                  { return HT_INT2x1; }
421(?i:int3x1)                  { return HT_INT3x1; }
422(?i:int4x1)                  { return HT_INT4x1; }
423(?i:int2)                    { return HT_INT2; }
424(?i:int1x2)                  { return HT_INT1x2; }
425(?i:int2x2)                  { return HT_INT2x2; }
426(?i:int3x2)                  { return HT_INT3x2; }
427(?i:int4x2)                  { return HT_INT4x2; }
428(?i:int3)                    { return HT_INT3; }
429(?i:int1x3)                  { return HT_INT1x3; }
430(?i:int2x3)                  { return HT_INT2x3; }
431(?i:int3x3)                  { return HT_INT3x3; }
432(?i:int4x3)                  { return HT_INT4x3; }
433(?i:int4)                    { return HT_INT4; }
434(?i:int1x4)                  { return HT_INT1x4; }
435(?i:int2x4)                  { return HT_INT2x4; }
436(?i:int3x4)                  { return HT_INT3x4; }
437(?i:int4x4)                  { return HT_INT4x4; }
438
439(?i:uint1)                   { return HT_UINT1; }
440(?i:uint1x1)                 { return HT_UINT1x1; }
441(?i:uint2x1)                 { return HT_UINT2x1; }
442(?i:uint3x1)                 { return HT_UINT3x1; }
443(?i:uint4x1)                 { return HT_UINT4x1; }
444(?i:uint2)                   { return HT_UINT2; }
445(?i:uint1x2)                 { return HT_UINT1x2; }
446(?i:uint2x2)                 { return HT_UINT2x2; }
447(?i:uint3x2)                 { return HT_UINT3x2; }
448(?i:uint4x2)                 { return HT_UINT4x2; }
449(?i:uint3)                   { return HT_UINT3; }
450(?i:uint1x3)                 { return HT_UINT1x3; }
451(?i:uint2x3)                 { return HT_UINT2x3; }
452(?i:uint3x3)                 { return HT_UINT3x3; }
453(?i:uint4x3)                 { return HT_UINT4x3; }
454(?i:uint4)                   { return HT_UINT4; }
455(?i:uint1x4)                 { return HT_UINT1x4; }
456(?i:uint2x4)                 { return HT_UINT2x4; }
457(?i:uint3x4)                 { return HT_UINT3x4; }
458(?i:uint4x4)                 { return HT_UINT4x4; }
459
460 /*
461  * HLSL preprocessor directives
462  * Gathered from http://msdn.microsoft.com/en-us/library/windows/desktop/bb943993%28v=vs.85%29.aspx
463  */
464
465"#"[ \t]*"define"            { return PREPROCESSOR_DEFINE; }
466"#"[ \t]*"elif"              { return PREPROCESSOR_ELIF; }
467"#"[ \t]*"else"              { return PREPROCESSOR_ELSE; }
468"#"[ \t]*"endif"             { return PREPROCESSOR_ENDIF; }
469"#"[ \t]*"error"             { return PREPROCESSOR_ERROR; }
470"#"[ \t]*"if"                { return PREPROCESSOR_IF; }
471"#"[ \t]*"ifdef"             { return PREPROCESSOR_IFDEF; }
472"#"[ \t]*"ifndef"            { return PREPROCESSOR_IFNDEF; }
473"#"[ \t]*"include"           { return PREPROCESSOR_INCLUDE; }
474"#"[ \t]*"line"              { return PREPROCESSOR_LINE; }
475"#"[ \t]*"pragma"            { return PREPROCESSOR_PRAGMA; }
476"#"[ \t]*"undef"             { return PREPROCESSOR_UNDEF; }
477
478 /*
479  * HLSL reserved keywords
480  * Gathered from http://msdn.microsoft.com/en-us/library/windows/desktop/bb509569%28v=vs.85%29.aspx
481  */
482
483(?i:auto)                    { return HT_AUTO; }
484(?i:catch)                   { return HT_CATCH; }
485(?i:char)                    { return HT_CHAR; }
486(?i:class)                   { return HT_CLASS; }
487(?i:const_cast)              { return HT_CONST_CAST; }
488(?i:delete)                  { return HT_DELETE; }
489(?i:dynamic_cast)            { return HT_DYNAMIC_CAST; }
490(?i:enum)                    { return HT_ENUM; }
491(?i:explicit)                { return HT_EXPLICIT; }
492(?i:friend)                  { return HT_FRIEND; }
493(?i:goto)                    { return HT_GOTO; }
494(?i:long)                    { return HT_LONG; }
495(?i:mutable)                 { return HT_MUTABLE; }
496(?i:new)                     { return HT_NEW; }
497(?i:operator)                { return HT_OPERATOR; }
498(?i:private)                 { return HT_PRIVATE; }
499(?i:protected)               { return HT_PROTECTED; }
500(?i:public)                  { return HT_PUBLIC; }
501(?i:reinterpret_cast)        { return HT_REINTERPRET_CAST; }
502(?i:short)                   { return HT_SHORT; }
503(?i:signed)                  { return HT_SIGNED; }
504(?i:sizeof)                  { return HT_SIZEOF; }
505(?i:static_cast)             { return HT_STATIC_CAST; }
506(?i:template)                { return HT_TEMPLATE; }
507(?i:this)                    { return HT_THIS; }
508(?i:throw)                   { return HT_THROW; }
509(?i:try)                     { return HT_TRY; }
510(?i:typename)                { return HT_TYPENAME; }
511(?i:union)                   { return HT_UNION; }
512(?i:unsigned)                { return HT_UNSIGNED; }
513(?i:using)                   { return HT_USING; }
514(?i:virtual)                 { return HT_VIRTUAL; }
515
516 /*
517  * Various tokens
518  */
519
520[0-9]+\.[0-9]+ { yylval.fval = atof(yytext); return FLOAT; }
521[0-9]+         { yylval.ival = atoi(yytext); return INT; }
522[a-zA-Z][a-zA-Z0-9_]*   {
523    /* Copy token for now */
524    yylval.sval = strdup(yytext);
525    return NAME;
526}
527[ \t\n]+       ;
528"{"|"}"|"("|")"|"["|"]" { return *yytext; }
529.                       { return *yytext; }
530
531 /*
532  * Ignore C comments
533  */
534
535"/*"              { BEGIN(C_COMMENT); }
536<C_COMMENT>"*/"   { BEGIN(INITIAL); }
537<C_COMMENT>[^*]*  { }
538<C_COMMENT>.      { }
539
540 /*
541  * Ignore C++ comments
542  */
543
544"//"              { BEGIN(CPP_COMMENT); }
545<CPP_COMMENT>\n   { BEGIN(INITIAL); }
546<CPP_COMMENT>.*   { }
547
548%%
549
Note: See TracBrowser for help on using the repository browser.