Ignore:
Timestamp:
May 23, 2012, 7:30:54 PM (11 years ago)
Author:
sam
Message:

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

Location:
trunk/test/sandbox/lex
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/sandbox/lex/lolfx.l

    r1410 r1411  
    1111
    1212 /*
    13   * Our language's keywords
    14   */
    15 
    16 "technique"    { return TECHNIQUE; }
    17 "pass"         { return PASS; }
     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; }
    18515
    19516 /*
     
    23520[0-9]+\.[0-9]+ { yylval.fval = atof(yytext); return FLOAT; }
    24521[0-9]+         { yylval.ival = atoi(yytext); return INT; }
    25 [a-zA-Z][a-zA-Z0-9_]*  {
     522[a-zA-Z][a-zA-Z0-9_]*   {
    26523    /* Copy token for now */
    27524    yylval.sval = strdup(yytext);
     
    29526}
    30527[ \t\n]+       ;
    31 .              { return *yytext; }
     528"{"|"}"|"("|")"|"["|"]" { return *yytext; }
     529.                       { return *yytext; }
    32530
    33531 /*
  • trunk/test/sandbox/lex/lolfx.y

    r1409 r1411  
    2020
    2121 /*
    22   * All the LolFx tokens
    23   */
    24 
    25 %token TECHNIQUE PASS
     22  * GLSL keywords
     23  * FIXME: unsorted
     24  */
     25
     26%token GT_SUBROUTINE GT_PATCH GT_SAMPLE GT_FLAT GT_SMOOTH GT_LAYOUT
     27%token GT_SAMPLER1DSHADOW GT_SAMPLER2DSHADOW GT_SAMPLERCUBESHADOW
     28%token GT_SAMPLER1DARRAY GT_SAMPLER2DARRAY GT_SAMPLER1DARRAYSHADOW
     29%token GT_SAMPLER2DARRAYSHADOW GT_ISAMPLER1D GT_ISAMPLER2D GT_ISAMPLER3D
     30%token GT_ISAMPLERCUBE GT_ISAMPLER1DARRAY GT_ISAMPLER2DARRAY GT_USAMPLER1D
     31%token GT_USAMPLER2D GT_USAMPLER3D GT_USAMPLERCUBE GT_USAMPLER1DARRAY
     32%token GT_USAMPLER2DARRAY GT_SAMPLER2DRECT GT_SAMPLER2DRECTSHADOW
     33%token GT_ISAMPLER2DRECT GT_USAMPLER2DRECT GT_SAMPLERBUFFER GT_ISAMPLERBUFFER
     34%token GT_USAMPLERBUFFER GT_SAMPLERCUBEARRAY GT_SAMPLERCUBEARRAYSHADOW
     35%token GT_ISAMPLERCUBEARRAY GT_USAMPLERCUBEARRAY GT_SAMPLER2DMS GT_ISAMPLER2DMS
     36%token GT_USAMPLER2DMS GT_SAMPLER2DMSARRAY GT_ISAMPLER2DMSARRAY
     37%token GT_USAMPLER2DMSARRAY GT_IDENTIFIER GT_TYPE_NAME GT_FLOATCONSTANT
     38%token GT_INTCONSTANT GT_UINTCONSTANT GT_BOOLCONSTANT GT_FIELD_SELECTION
     39%token GT_LEFT_OP GT_RIGHT_OP GT_INC_OP GT_DEC_OP GT_LE_OP GT_GE_OP GT_EQ_OP
     40%token GT_NE_OP GT_AND_OP GT_OR_OP GT_XOR_OP GT_MUL_ASSIGN GT_DIV_ASSIGN
     41%token GT_ADD_ASSIGN GT_MOD_ASSIGN GT_LEFT_ASSIGN GT_RIGHT_ASSIGN GT_AND_ASSIGN
     42%token GT_XOR_ASSIGN GT_OR_ASSIGN GT_SUB_ASSIGN GT_LEFT_PAREN GT_RIGHT_PAREN
     43%token GT_LEFT_BRACKET GT_RIGHT_BRACKET GT_LEFT_BRACE GT_RIGHT_BRACE GT_DOT
     44%token GT_COMMA GT_COLON GT_EQUAL GT_SEMICOLON GT_BANG GT_DASH GT_TILDE GT_PLUS
     45%token GT_STAR GT_SLASH GT_PERCENT GT_LEFT_ANGLE GT_RIGHT_ANGLE GT_VERTICAL_BAR
     46%token GT_CARET GT_AMPERSAND GT_QUESTION GT_INVARIANT GT_HIGH_PRECISION
     47%token GT_MEDIUM_PRECISION GT_LOW_PRECISION GT_PRECISION GT_BVEC2 GT_BVEC3
     48%token GT_BVEC4 GT_IVEC2 GT_IVEC3 GT_IVEC4 GT_UVEC2 GT_UVEC3 GT_UVEC4 GT_VEC2
     49%token GT_VEC3 GT_VEC4 GT_MAT2 GT_MAT2X2 GT_MAT2X3 GT_MAT2X4 GT_MAT3 GT_MAT3X2
     50%token GT_MAT3X3 GT_MAT3X4 GT_MAT4 GT_MAT4X2 GT_MAT4X3 GT_MAT4X4 GT_DVEC2
     51%token GT_DVEC3 GT_DVEC4 GT_DMAT2 GT_DMAT2X2 GT_DMAT2X3 GT_DMAT2X4 GT_DMAT3
     52%token GT_DMAT3X2 GT_DMAT3X3 GT_DMAT3X4 GT_DMAT4 GT_DMAT4X2 GT_DMAT4X3
     53%token GT_DMAT4X4
     54
     55 /*
     56  * HLSL and GLSL keywords
     57  */
     58
     59%token GHT_BOOL GHT_BREAK GHT_CASE GHT_CENTROID GHT_CONST GHT_CONTINUE
     60%token GHT_DEFAULT GHT_DISCARD GHT_DO GHT_DOUBLE GHT_ELSE GHT_FLOAT GHT_FOR
     61%token GHT_IF GHT_IN GHT_INOUT GHT_INT GHT_NOPERSPECTIVE GHT_OUT GHT_RETURN
     62%token GHT_SAMPLER1D GHT_SAMPLER2D GHT_SAMPLER3D GHT_SAMPLERCUBE GHT_STRUCT
     63%token GHT_SWITCH GHT_UINT GHT_UNIFORM GHT_VOID GHT_WHILE
     64
     65%token HGT_BOOL HGT_BREAK HGT_CASE HGT_CENTROID HGT_CONST HGT_CONTINUE
     66%token HGT_DEFAULT HGT_DISCARD HGT_DO HGT_DOUBLE HGT_ELSE HGT_FLOAT HGT_FOR
     67%token HGT_IF HGT_IN HGT_INOUT HGT_INT HGT_NOPERSPECTIVE HGT_OUT HGT_RETURN
     68%token HGT_SAMPLER1D HGT_SAMPLER2D HGT_SAMPLER3D HGT_SAMPLERCUBE HGT_STRUCT
     69%token HGT_SWITCH HGT_UINT HGT_UNIFORM HGT_VOID HGT_WHILE
     70
     71 /*
     72  * HLSL keywords
     73  */
     74
     75%token HT_APPENDSTRUCTUREDBUFFER HT_ASM HT_ASM_FRAGMENT HT_BLENDSTATE HT_BOOL
     76%token HT_BREAK HT_BUFFER HT_BYTEADDRESSBUFFER HT_CBUFFER HT_CENTROID
     77%token HT_COLUMN_MAJOR HT_COMPILE HT_COMPILE_FRAGMENT HT_COMPILESHADER HT_CONST
     78%token HT_CONTINUE HT_COMPUTESHADER HT_CONSUMESTRUCTUREDBUFFER
     79%token HT_DEPTHSTENCILSTATE HT_DEPTHSTENCILVIEW HT_DISCARD HT_DO HT_DOUBLE
     80%token HT_DOMAINSHADER HT_DWORD HT_ELSE HT_EXTERN HT_FALSE HT_FLOAT HT_FOR
     81%token HT_FXGROUP HT_GEOMETRYSHADER HT_GROUPSHARED HT_HALF HT_HULLSHADER HT_IF
     82%token HT_IN HT_INLINE HT_INOUT HT_INPUTPATCH HT_INT HT_INTERFACE HT_LINE
     83%token HT_LINEADJ HT_LINEAR HT_LINESTREAM HT_MATRIX HT_NAMESPACE
     84%token HT_NOINTERPOLATION HT_NOPERSPECTIVE HT_NULL HT_OUT HT_OUTPUTPATCH
     85%token HT_PACKOFFSET HT_PASS HT_PIXELFRAGMENT HT_PIXELSHADER HT_POINT
     86%token HT_POINTSTREAM HT_PRECISE HT_RASTERIZERSTATE HT_RENDERTARGETVIEW
     87%token HT_RETURN HT_REGISTER HT_ROW_MAJOR HT_RWBUFFER HT_RWBYTEADDRESSBUFFER
     88%token HT_RWSTRUCTUREDBUFFER HT_RWTEXTURE1D HT_RWTEXTURE1DARRAY HT_RWTEXTURE2D
     89%token HT_RWTEXTURE2DARRAY HT_RWTEXTURE3D HT_SAMPLER HT_SAMPLER1D HT_SAMPLER2D
     90%token HT_SAMPLER3D HT_SAMPLERCUBE HT_SAMPLER_STATE HT_SAMPLERSTATE
     91%token HT_SAMPLERCOMPARISONSTATE HT_SHARED HT_SNORM HT_STATEBLOCK
     92%token HT_STATEBLOCK_STATE HT_STATIC HT_STRING HT_STRUCT HT_SWITCH
     93%token HT_STRUCTUREDBUFFER HT_TBUFFER HT_TECHNIQUE HT_TECHNIQUE10
     94%token HT_TECHNIQUE11XZ HT_TEXTURE HT_TEXTURE1D HT_TEXTURE1DARRAY HT_TEXTURE2D
     95%token HT_TEXTURE2DARRAY HT_TEXTURE2DMS HT_TEXTURE2DMSARRAY HT_TEXTURE3D
     96%token HT_TEXTURECUBE HT_TEXTURECUBEARRAY HT_TRUE HT_TYPEDEF HT_TRIANGLE
     97%token HT_TRIANGLEADJ HT_TRIANGLESTREAM HT_UNIFORM HT_UNORM HT_UINT HT_VECTOR
     98%token HT_VERTEXFRAGMENT HT_VERTEXSHADER HT_VOID HT_VOLATILE HT_WHILE
     99
     100 /*
     101  * HLSL types
     102  */
     103
     104%token HT_BOOL1 HT_BOOL1x1 HT_BOOL2x1 HT_BOOL3x1 HT_BOOL4x1
     105%token HT_BOOL2 HT_BOOL1x2 HT_BOOL2x2 HT_BOOL3x2 HT_BOOL4x2
     106%token HT_BOOL3 HT_BOOL1x3 HT_BOOL2x3 HT_BOOL3x3 HT_BOOL4x3
     107%token HT_BOOL4 HT_BOOL1x4 HT_BOOL2x4 HT_BOOL3x4 HT_BOOL4x4
     108
     109%token HT_FLOAT1 HT_FLOAT1x1 HT_FLOAT2x1 HT_FLOAT3x1 HT_FLOAT4x1
     110%token HT_FLOAT2 HT_FLOAT1x2 HT_FLOAT2x2 HT_FLOAT3x2 HT_FLOAT4x2
     111%token HT_FLOAT3 HT_FLOAT1x3 HT_FLOAT2x3 HT_FLOAT3x3 HT_FLOAT4x3
     112%token HT_FLOAT4 HT_FLOAT1x4 HT_FLOAT2x4 HT_FLOAT3x4 HT_FLOAT4x4
     113
     114%token HT_DOUBLE1 HT_DOUBLE1x1 HT_DOUBLE2x1 HT_DOUBLE3x1 HT_DOUBLE4x1
     115%token HT_DOUBLE2 HT_DOUBLE1x2 HT_DOUBLE2x2 HT_DOUBLE3x2 HT_DOUBLE4x2
     116%token HT_DOUBLE3 HT_DOUBLE1x3 HT_DOUBLE2x3 HT_DOUBLE3x3 HT_DOUBLE4x3
     117%token HT_DOUBLE4 HT_DOUBLE1x4 HT_DOUBLE2x4 HT_DOUBLE3x4 HT_DOUBLE4x4
     118
     119%token HT_DWORD1 HT_DWORD1x1 HT_DWORD2x1 HT_DWORD3x1 HT_DWORD4x1
     120%token HT_DWORD2 HT_DWORD1x2 HT_DWORD2x2 HT_DWORD3x2 HT_DWORD4x2
     121%token HT_DWORD3 HT_DWORD1x3 HT_DWORD2x3 HT_DWORD3x3 HT_DWORD4x3
     122%token HT_DWORD4 HT_DWORD1x4 HT_DWORD2x4 HT_DWORD3x4 HT_DWORD4x4
     123
     124%token HT_INT1 HT_INT1x1 HT_INT2x1 HT_INT3x1 HT_INT4x1
     125%token HT_INT2 HT_INT1x2 HT_INT2x2 HT_INT3x2 HT_INT4x2
     126%token HT_INT3 HT_INT1x3 HT_INT2x3 HT_INT3x3 HT_INT4x3
     127%token HT_INT4 HT_INT1x4 HT_INT2x4 HT_INT3x4 HT_INT4x4
     128
     129%token HT_UINT1 HT_UINT1x1 HT_UINT2x1 HT_UINT3x1 HT_UINT4x1
     130%token HT_UINT2 HT_UINT1x2 HT_UINT2x2 HT_UINT3x2 HT_UINT4x2
     131%token HT_UINT3 HT_UINT1x3 HT_UINT2x3 HT_UINT3x3 HT_UINT4x3
     132%token HT_UINT4 HT_UINT1x4 HT_UINT2x4 HT_UINT3x4 HT_UINT4x4
     133
     134 /*
     135  * HLSL preprocessor directives
     136  */
     137
     138%token PREPROCESSOR_DEFINE PREPROCESSOR_ELIF PREPROCESSOR_ELSE
     139%token PREPROCESSOR_ENDIF PREPROCESSOR_ERROR PREPROCESSOR_IF
     140%token PREPROCESSOR_IFDEF PREPROCESSOR_IFNDEF PREPROCESSOR_INCLUDE
     141%token PREPROCESSOR_LINE PREPROCESSOR_PRAGMA PREPROCESSOR_UNDEF
     142
     143 /*
     144  * HLSL reserved keywords
     145  */
     146
     147%token HT_AUTO HT_CASE HT_CATCH HT_CHAR HT_CLASS HT_CONST_CAST HT_DEFAULT
     148%token HT_DELETE HT_DYNAMIC_CAST HT_ENUM HT_EXPLICIT HT_FRIEND HT_GOTO HT_LONG
     149%token HT_MUTABLE HT_NEW HT_OPERATOR HT_PRIVATE HT_PROTECTED HT_PUBLIC
     150%token HT_REINTERPRET_CAST HT_SHORT HT_SIGNED HT_SIZEOF HT_STATIC_CAST
     151%token HT_TEMPLATE HT_THIS HT_THROW HT_TRY HT_TYPENAME HT_UNION HT_UNSIGNED
     152%token HT_USING HT_VIRTUAL
     153
     154 /*
     155  * Temporary shit
     156  */
     157
    26158%token <ival> INT
    27159%token <fval> FLOAT
     
    49181
    50182technique:
    51     TECHNIQUE NAME '{' pass_list '}' { std::cout << "TECHNIQUE" << std::endl; }
     183    HT_TECHNIQUE NAME '{' pass_list '}' { std::cout << "New tech" << std::endl; }
    52184    ;
    53185
     
    62194
    63195pass:
    64     PASS NAME '{' pass_stmt_list '}' { std::cout << "PASS" << std::endl; }
     196    HT_PASS NAME '{' pass_stmt_list '}' { std::cout << "New pass" << std::endl; }
    65197    ;
    66198
Note: See TracChangeset for help on using the changeset viewer.