| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- %{
- #include "BsParserFX.h"
- #define YY_USER_ACTION yylloc->first_column = yycolumn + 1; yylloc->first_line = yylineno + 1; yycolumn += (int)yyleng;
- #define YY_USER_INIT yylineno = 0; yycolumn = 0;
- %}
-
- %option yylineno reentrant noyywrap nounistd never-interactive warn nodefault bison-bridge bison-locations
- %option outfile="BsLexerFX.c" header-file="BsLexerFX.h"
- %option extra-type="struct tagParseState *"
- INTEGER -?[0-9][0-9]*
- INTEGER_16 0[xX][0-9a-fA-F]+
- FLOAT [0-9]+\.[0-9]+([eE][+-]?[0-9]+)?[fF]?
- STRING \"[^"\n]*\"
- IDENTIFIER [_a-zA-Z][_a-zA-Z0-9]*
- WS [ \r\n\t]*
- COMMENT \/\/[^\n]*
- %%
- {WS} { /* Skip blank */ }
- {INTEGER} { yylval->intValue = atoi(yytext); return TOKEN_INTEGER; }
- {INTEGER_16} { yylval->intValue = (int)strtol(yytext, 0, 0); return TOKEN_INTEGER; }
- {FLOAT} { yylval->floatValue = (float)atof(yytext); return TOKEN_FLOAT; }
- {STRING} { yylval->strValue = mmalloc_strdup(yyextra->memContext, yytext); return TOKEN_STRING; }
- true { yylval->intValue = 1; return TOKEN_BOOLEAN; }
- false { yylval->intValue = 0; return TOKEN_BOOLEAN; }
- /* Value types */
- float { yylval->intValue = PT_Float; return TOKEN_FLOATTYPE; }
- float2 { yylval->intValue = PT_Float2; return TOKEN_FLOAT2TYPE; }
- float3 { yylval->intValue = PT_Float3; return TOKEN_FLOAT3TYPE; }
- float4 { yylval->intValue = PT_Float4; return TOKEN_FLOAT4TYPE; }
- color { yylval->intValue = PT_Color; return TOKEN_COLORTYPE; }
- mat2x2 { yylval->intValue = PT_Mat2x2; return TOKEN_MAT2x2TYPE; }
- mat2x3 { yylval->intValue = PT_Mat2x3; return TOKEN_MAT2x3TYPE; }
- mat2x4 { yylval->intValue = PT_Mat2x4; return TOKEN_MAT2x4TYPE; }
- mat3x2 { yylval->intValue = PT_Mat3x2; return TOKEN_MAT3x2TYPE; }
- mat3x3 { yylval->intValue = PT_Mat3x3; return TOKEN_MAT3x3TYPE; }
- mat3x4 { yylval->intValue = PT_Mat3x4; return TOKEN_MAT3x4TYPE; }
- mat4x2 { yylval->intValue = PT_Mat4x2; return TOKEN_MAT4x2TYPE; }
- mat4x3 { yylval->intValue = PT_Mat4x3; return TOKEN_MAT4x3TYPE; }
- mat4x4 { yylval->intValue = PT_Mat4x4; return TOKEN_MAT4x4TYPE; }
- Sampler1D { yylval->intValue = PT_Sampler1D; return TOKEN_SAMPLER1D; }
- Sampler2D { yylval->intValue = PT_Sampler2D; return TOKEN_SAMPLER2D; }
- Sampler3D { yylval->intValue = PT_Sampler3D; return TOKEN_SAMPLER3D; }
- SamplerCUBE { yylval->intValue = PT_SamplerCUBE; return TOKEN_SAMPLERCUBE; }
- Sampler2DMS { yylval->intValue = PT_Sampler2DMS; return TOKEN_SAMPLER2DMS; }
- Texture1D { yylval->intValue = PT_Texture1D; return TOKEN_TEXTURE1D; }
- Texture2D { yylval->intValue = PT_Texture2D; return TOKEN_TEXTURE2D; }
- Texture3D { yylval->intValue = PT_Texture3D; return TOKEN_TEXTURE3D; }
- TextureCUBE { yylval->intValue = PT_TextureCUBE; return TOKEN_TEXTURECUBE; }
- Texture2DMS { yylval->intValue = PT_Texture2DMS; return TOKEN_TEXTURE2DMS; }
- ByteBuffer { yylval->intValue = PT_ByteBuffer; return TOKEN_BYTEBUFFER; }
- StructBuffer { yylval->intValue = PT_StructBuffer; return TOKEN_STRUCTBUFFER; }
- TypedBufferRW { yylval->intValue = PT_TypedBufferRW; return TOKEN_RWTYPEDBUFFER; }
- ByteBufferRW { yylval->intValue = PT_ByteBufferRW; return TOKEN_RWBYTEBUFFER; }
- StructBufferRW { yylval->intValue = PT_StructBufferRW; return TOKEN_RWSTRUCTBUFFER; }
- AppendBuffer { yylval->intValue = PT_AppendBuffer; return TOKEN_RWAPPENDBUFFER; }
- ConsumeBuffer { yylval->intValue = PT_ConsumeBuffer; return TOKEN_RWCONSUMEBUFFER; }
- Block { return TOKEN_PARAMSBLOCK; }
- /* Shader keywords */
- Separable { return TOKEN_SEPARABLE; }
- Queue { return TOKEN_QUEUE; }
- Priority { return TOKEN_PRIORITY; }
- Transparent { return TOKEN_TRANSPARENT; }
- Technique { return TOKEN_TECHNIQUE; }
- Parameters { return TOKEN_PARAMETERS; }
- Blocks { return TOKEN_BLOCKS; }
- /* Technique keywords */
- Renderer { return TOKEN_RENDERER; }
- Language { return TOKEN_LANGUAGE; }
- Include { return TOKEN_INCLUDE; }
- Pass { return TOKEN_PASS; }
- /* Pass keywords */
- Vertex { return TOKEN_VERTEX; }
- Fragment { return TOKEN_FRAGMENT; }
- Geometry { return TOKEN_GEOMETRY; }
- Hull { return TOKEN_HULL; }
- Domain { return TOKEN_DOMAIN; }
- Compute { return TOKEN_COMPUTE; }
- Common { return TOKEN_COMMON; }
- StencilRef { return TOKEN_STENCILREF; }
- /* Rasterizer state keywords */
- Fill { return TOKEN_FILLMODE; }
- Cull { return TOKEN_CULLMODE; }
- DepthBias { return TOKEN_DEPTHBIAS; }
- ScaledDepthBias { return TOKEN_SDEPTHBIAS; }
- DepthClip { return TOKEN_DEPTHCLIP; }
- Scissor { return TOKEN_SCISSOR; }
- Multisample { return TOKEN_MULTISAMPLE; }
- AALine { return TOKEN_AALINE; }
- /* Depth-stencil state keywords */
- DepthRead { return TOKEN_DEPTHREAD; }
- DepthWrite { return TOKEN_DEPTHWRITE; }
- CompareFunc { return TOKEN_COMPAREFUNC; }
- Stencil { return TOKEN_STENCIL; }
- StencilReadMask { return TOKEN_STENCILREADMASK; }
- StencilWriteMask { return TOKEN_STENCILWRITEMASK; }
- StencilOpFront { return TOKEN_STENCILOPFRONT; }
- StencilOpBack { return TOKEN_STENCILOPBACK; }
- Fail { return TOKEN_FAIL; }
- ZFail { return TOKEN_ZFAIL; }
- /* Blend state keywords */
- AlphaToCoverage { return TOKEN_ALPHATOCOVERAGE; }
- IndependantBlend { return TOKEN_INDEPENDANTBLEND; }
- Target { return TOKEN_TARGET; }
- Index { return TOKEN_INDEX; }
- Blend { return TOKEN_BLEND; }
- Color { return TOKEN_COLOR; }
- Alpha { return TOKEN_ALPHA; }
- WriteMask { return TOKEN_WRITEMASK; }
- Source { return TOKEN_SOURCE; }
- Dest { return TOKEN_DEST; }
- Op { return TOKEN_OP; }
- /* Sampler state keywords */
- AddressMode { return TOKEN_ADDRMODE; }
- MinFilter { return TOKEN_MINFILTER; }
- MagFilter { return TOKEN_MAGFILTER; }
- MipFilter { return TOKEN_MIPFILTER; }
- MaxAniso { return TOKEN_MAXANISO; }
- MipmapBias { return TOKEN_MIPBIAS; }
- MipMin { return TOKEN_MIPMIN; }
- MipMax { return TOKEN_MIPMAX; }
- BorderColor { return TOKEN_BORDERCOLOR; }
- U { return TOKEN_U; }
- V { return TOKEN_V; }
- W { return TOKEN_W; }
- /* Qualifiers */
- auto { return TOKEN_AUTO; }
- alias { return TOKEN_ALIAS; }
- shared { return TOKEN_SHARED; }
- usage { return TOKEN_USAGE; }
- /* State values */
- WIRE { yylval->intValue = FMV_Wire; return TOKEN_FILLMODEVALUE; }
- SOLID { yylval->intValue = FMV_Solid; return TOKEN_FILLMODEVALUE; }
- NOCULL { yylval->intValue = CMV_None; return TOKEN_CULLMODEVALUE; }
- CW { yylval->intValue = CMV_CW; return TOKEN_CULLMODEVALUE; }
- CCW { yylval->intValue = CMV_CCW; return TOKEN_CULLMODEVALUE; }
- FAIL { yylval->intValue = CFV_Fail; return TOKEN_COMPFUNCVALUE; }
- PASS { yylval->intValue = CFV_Pass; return TOKEN_COMPFUNCVALUE; }
- LT { yylval->intValue = CFV_LT; return TOKEN_COMPFUNCVALUE; }
- LTE { yylval->intValue = CFV_LTE; return TOKEN_COMPFUNCVALUE; }
- EQ { yylval->intValue = CFV_EQ; return TOKEN_COMPFUNCVALUE; }
- NEQ { yylval->intValue = CFV_NEQ; return TOKEN_COMPFUNCVALUE; }
- GTE { yylval->intValue = CFV_GTE; return TOKEN_COMPFUNCVALUE; }
- GT { yylval->intValue = CFV_GT; return TOKEN_COMPFUNCVALUE; }
- KEEP { yylval->intValue = OV_Keep; return TOKEN_OPVALUE; }
- ZERO { yylval->intValue = OV_Zero; return TOKEN_OPVALUE; }
- REPLACE { yylval->intValue = OV_Replace; return TOKEN_OPVALUE; }
- INC { yylval->intValue = OV_Incr; return TOKEN_OPVALUE; }
- DEC { yylval->intValue = OV_Decr; return TOKEN_OPVALUE; }
- INCWRAP { yylval->intValue = OV_IncrWrap; return TOKEN_OPVALUE; }
- DECWRAP { yylval->intValue = OV_DecrWrap; return TOKEN_OPVALUE; }
- INV { yylval->intValue = OV_Invert; return TOKEN_OPVALUE; }
- ONE { yylval->intValue = OV_One; return TOKEN_OPVALUE; }
- DSTRGB { yylval->intValue = OV_DestColor; return TOKEN_OPVALUE; }
- SRCRGB { yylval->intValue = OV_SrcColor; return TOKEN_OPVALUE; }
- DSTIRGB { yylval->intValue = OV_InvDestColor; return TOKEN_OPVALUE; }
- SRCIRGB { yylval->intValue = OV_InvSrcColor; return TOKEN_OPVALUE; }
- DSTA { yylval->intValue = OV_DestAlpha; return TOKEN_OPVALUE; }
- SRCA { yylval->intValue = OV_SrcAlpha; return TOKEN_OPVALUE; }
- DSTIA { yylval->intValue = OV_InvDestAlpha; return TOKEN_OPVALUE; }
- SRCIA { yylval->intValue = OV_InvSrcAlpha; return TOKEN_OPVALUE; }
- ADD { yylval->intValue = BOV_Add; return TOKEN_BLENDOPVALUE; }
- SUB { yylval->intValue = BOV_Subtract; return TOKEN_BLENDOPVALUE; }
- RSUB { yylval->intValue = BOV_RevSubtract; return TOKEN_BLENDOPVALUE; }
- MIN { yylval->intValue = BOV_Min; return TOKEN_BLENDOPVALUE; }
- MAX { yylval->intValue = BOV_Max; return TOKEN_BLENDOPVALUE; }
- NOCOLOR { yylval->intValue = 0x0; return TOKEN_COLORMASK; }
- R { yylval->intValue = 0x1; return TOKEN_COLORMASK; }
- G { yylval->intValue = 0x2; return TOKEN_COLORMASK; }
- B { yylval->intValue = 0x4; return TOKEN_COLORMASK; }
- A { yylval->intValue = 0x8; return TOKEN_COLORMASK; }
- RG { yylval->intValue = 0x3; return TOKEN_COLORMASK; }
- RB { yylval->intValue = 0x5; return TOKEN_COLORMASK; }
- RA { yylval->intValue = 0x9; return TOKEN_COLORMASK; }
- GB { yylval->intValue = 0x6; return TOKEN_COLORMASK; }
- GA { yylval->intValue = 0xA; return TOKEN_COLORMASK; }
- BA { yylval->intValue = 0xC; return TOKEN_COLORMASK; }
- RGB { yylval->intValue = 0x7; return TOKEN_COLORMASK; }
- RGA { yylval->intValue = 0xB; return TOKEN_COLORMASK; }
- RBA { yylval->intValue = 0xD; return TOKEN_COLORMASK; }
- GBA { yylval->intValue = 0xE; return TOKEN_COLORMASK; }
- RGBA { yylval->intValue = 0xF; return TOKEN_COLORMASK; }
- WRAP { yylval->intValue = AMV_Wrap; return TOKEN_ADDRMODEVALUE; }
- MIRROR { yylval->intValue = AMV_Mirror; return TOKEN_ADDRMODEVALUE; }
- CLAMP { yylval->intValue = AMV_Clamp; return TOKEN_ADDRMODEVALUE; }
- BORDER { yylval->intValue = AMV_Border; return TOKEN_ADDRMODEVALUE; }
- NOFILTER { yylval->intValue = FV_None; return TOKEN_FILTERVALUE; }
- POINT { yylval->intValue = FV_Point; return TOKEN_FILTERVALUE; }
- LINEAR { yylval->intValue = FV_Linear; return TOKEN_FILTERVALUE; }
- ANISO { yylval->intValue = FV_Anisotropic; return TOKEN_FILTERVALUE; }
- POINTC { yylval->intValue = FV_PointCmp; return TOKEN_FILTERVALUE; }
- LINEARC { yylval->intValue = FV_LinearCmp; return TOKEN_FILTERVALUE; }
- ANISOC { yylval->intValue = FV_AnisotropicCmp; return TOKEN_FILTERVALUE; }
- STATIC { yylval->intValue = BUV_Static; return TOKEN_BUFFERUSAGE; }
- DYNAMIC { yylval->intValue = BUV_Dynamic; return TOKEN_BUFFERUSAGE; }
- {COMMENT} { }
- {IDENTIFIER} { yylval->strValue = mmalloc_strdup(yyextra->memContext, yytext); return TOKEN_IDENTIFIER; }
- . { return yytext[0]; }
|