14f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com/* 24f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// 35524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. 44f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be 54f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// found in the LICENSE file. 64f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// 74f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 8044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgThis file contains the Lex specification for GLSL ES. 9044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgBased on ANSI C grammar, Lex specification: 10044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orghttp://www.lysator.liu.se/c/ANSI-C-grammar-l.html 114f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 1275fe6b76d27174fd42ae4235df11a009bb3ed36dalokp@chromium.orgIF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh, 13044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgWHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp). 144f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com*/ 154f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 16044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org%top{ 17044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org// 185524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. 19044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org// Use of this source code is governed by a BSD-style license that can be 20044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org// found in the LICENSE file. 21044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org// 224f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 2375fe6b76d27174fd42ae4235df11a009bb3ed36dalokp@chromium.org// This file is auto-generated by generate_parser.sh. DO NOT EDIT! 24536888b8718e3451e0c5fb964a9c4b682f4950b3apatrick@chromium.org 25536888b8718e3451e0c5fb964a9c4b682f4950b3apatrick@chromium.org// Ignore errors in auto-generated code. 26536888b8718e3451e0c5fb964a9c4b682f4950b3apatrick@chromium.org#if defined(__GNUC__) 27a1d8059d676046ff9a35e15341866f1e93944132apatrick@chromium.org#pragma GCC diagnostic ignored "-Wunused-function" 28536888b8718e3451e0c5fb964a9c4b682f4950b3apatrick@chromium.org#pragma GCC diagnostic ignored "-Wunused-variable" 29e057c5dd6e234c6edd8b80537ccb753b6c1eb343apatrick@chromium.org#pragma GCC diagnostic ignored "-Wswitch-enum" 30536888b8718e3451e0c5fb964a9c4b682f4950b3apatrick@chromium.org#elif defined(_MSC_VER) 31536888b8718e3451e0c5fb964a9c4b682f4950b3apatrick@chromium.org#pragma warning(disable: 4065) 32a1d8059d676046ff9a35e15341866f1e93944132apatrick@chromium.org#pragma warning(disable: 4189) 33a1d8059d676046ff9a35e15341866f1e93944132apatrick@chromium.org#pragma warning(disable: 4505) 34a1d8059d676046ff9a35e15341866f1e93944132apatrick@chromium.org#pragma warning(disable: 4701) 35536888b8718e3451e0c5fb964a9c4b682f4950b3apatrick@chromium.org#endif 36044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org} 37eab1ef126b3118ac06b715e236f6b805f668b46dalokp@chromium.org 38044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org%{ 3917732823f9c21bdba9cc51ffaceb545ce3857a8cGeoff Lang#include "compiler/translator/glslang.h" 406b9cb25980022d0c792d858bc6f6500c00a6c29dJamie Madill#include "compiler/translator/ParseContext.h" 41b401a92b48599a64cbb44e463aef1b2976b3fbf8daniel@transgaming.com#include "compiler/preprocessor/Token.h" 4217732823f9c21bdba9cc51ffaceb545ce3857a8cGeoff Lang#include "compiler/translator/util.h" 435508f39d0cffc9a68565bbff2e6f61332a509cdfJamie Madill#include "compiler/translator/length_limits.h" 44eab1ef126b3118ac06b715e236f6b805f668b46dalokp@chromium.org#include "glslang_tab.h" 454f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 464f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com/* windows only pragma */ 474f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com#ifdef _MSC_VER 484f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com#pragma warning(disable : 4102) 494f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com#endif 504f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 51075edd84dd682b91279132317d34b09e8028ae6fJamie Madill#define YY_USER_ACTION \ 52075edd84dd682b91279132317d34b09e8028ae6fJamie Madill yylloc->first_file = yylloc->last_file = yycolumn; \ 53075edd84dd682b91279132317d34b09e8028ae6fJamie Madill yylloc->first_line = yylloc->last_line = yylineno; 54075edd84dd682b91279132317d34b09e8028ae6fJamie Madill 55044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org#define YY_INPUT(buf, result, max_size) \ 56044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org result = string_input(buf, max_size, yyscanner); 574f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 58d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.comstatic yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner); 59044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgstatic int check_type(yyscan_t yyscanner); 60044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgstatic int reserved_word(yyscan_t yyscanner); 6135f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.orgstatic int ES2_reserved_ES3_keyword(TParseContext *context, int token); 6235f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.orgstatic int ES2_keyword_ES3_reserved(TParseContext *context, int token); 6316242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.orgstatic int ES2_ident_ES3_keyword(TParseContext *context, int token); 64c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.orgstatic int uint_constant(TParseContext *context); 65f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mostatic int int_constant(yyscan_t yyscanner); 66f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mostatic int float_constant(yyscan_t yyscanner); 674d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.orgstatic int floatsuffix_check(TParseContext* context); 684f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com%} 694f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 70044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org%option noyywrap nounput never-interactive 71075edd84dd682b91279132317d34b09e8028ae6fJamie Madill%option yylineno reentrant bison-bridge bison-locations 72044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org%option extra-type="TParseContext*" 734f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 74044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgD [0-9] 75044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgL [a-zA-Z_] 76044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgH [a-fA-F0-9] 77044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgE [Ee][+-]?{D}+ 78044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgO [0-7] 794f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 804f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com%% 81044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 82044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org%{ 83044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org TParseContext* context = yyextra; 84044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org%} 85044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 8656b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"invariant" { return INVARIANT; } 8756b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"highp" { return HIGH_PRECISION; } 8856b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"mediump" { return MEDIUM_PRECISION; } 8956b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"lowp" { return LOW_PRECISION; } 9056b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"precision" { return PRECISION; } 91044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 9235f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org"attribute" { return ES2_keyword_ES3_reserved(context, ATTRIBUTE); } 9356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"const" { return CONST_QUAL; } 9456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"uniform" { return UNIFORM; } 9535f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org"varying" { return ES2_keyword_ES3_reserved(context, VARYING); } 96044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 9756b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"break" { return BREAK; } 9856b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"continue" { return CONTINUE; } 9956b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"do" { return DO; } 10056b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"for" { return FOR; } 10156b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"while" { return WHILE; } 102044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 10356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"if" { return IF; } 10456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"else" { return ELSE; } 10535f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org"switch" { return ES2_reserved_ES3_keyword(context, SWITCH); } 1065c55caf3ae7829741cda145b1542d70cea6cb556Jamie Madill"case" { return ES2_ident_ES3_keyword(context, CASE); } 10735f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org"default" { return ES2_reserved_ES3_keyword(context, DEFAULT); } 1085524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 1095c55caf3ae7829741cda145b1542d70cea6cb556Jamie Madill"centroid" { return ES2_ident_ES3_keyword(context, CENTROID); } 11035f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org"flat" { return ES2_reserved_ES3_keyword(context, FLAT); } 1115c55caf3ae7829741cda145b1542d70cea6cb556Jamie Madill"smooth" { return ES2_ident_ES3_keyword(context, SMOOTH); } 112044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 11356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"in" { return IN_QUAL; } 11456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"out" { return OUT_QUAL; } 11556b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"inout" { return INOUT_QUAL; } 116044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 11778eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"float" { return FLOAT_TYPE; } 11878eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"int" { return INT_TYPE; } 1196b7099111f6f00493b24dd05680f60c30b60cb7cshannonwoods@chromium.org"uint" { return ES2_ident_ES3_keyword(context, UINT_TYPE); } 12078eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"void" { return VOID_TYPE; } 12178eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"bool" { return BOOL_TYPE; } 12256b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"true" { yylval->lex.b = true; return BOOLCONSTANT; } 12356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"false" { yylval->lex.b = false; return BOOLCONSTANT; } 124044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 12556b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"discard" { return DISCARD; } 12656b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"return" { return RETURN; } 127044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 12878eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"mat2" { return MATRIX2; } 12978eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"mat3" { return MATRIX3; } 13078eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"mat4" { return MATRIX4; } 131044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 1329bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat2x2" { return ES2_ident_ES3_keyword(context, MATRIX2); } 1339bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat3x3" { return ES2_ident_ES3_keyword(context, MATRIX3); } 1349bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat4x4" { return ES2_ident_ES3_keyword(context, MATRIX4); } 1359bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org 1369bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat2x3" { return ES2_ident_ES3_keyword(context, MATRIX2x3); } 1379bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat3x2" { return ES2_ident_ES3_keyword(context, MATRIX3x2); } 1389bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat2x4" { return ES2_ident_ES3_keyword(context, MATRIX2x4); } 1399bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat4x2" { return ES2_ident_ES3_keyword(context, MATRIX4x2); } 1409bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat3x4" { return ES2_ident_ES3_keyword(context, MATRIX3x4); } 1419bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org"mat4x3" { return ES2_ident_ES3_keyword(context, MATRIX4x3); } 1429bd22fa90f6a16ae279330c802ebdb5e608d9348shannonwoods@chromium.org 14378eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"vec2" { return VEC2; } 14478eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"vec3" { return VEC3; } 14578eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"vec4" { return VEC4; } 14678eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"ivec2" { return IVEC2; } 14778eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"ivec3" { return IVEC3; } 14878eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"ivec4" { return IVEC4; } 14978eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"bvec2" { return BVEC2; } 15078eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"bvec3" { return BVEC3; } 15178eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"bvec4" { return BVEC4; } 1528c788e8d35ba20ca19afacbcfe4a6f326b8ecb60shannonwoods@chromium.org"uvec2" { return ES2_ident_ES3_keyword(context, UVEC2); } 1538c788e8d35ba20ca19afacbcfe4a6f326b8ecb60shannonwoods@chromium.org"uvec3" { return ES2_ident_ES3_keyword(context, UVEC3); } 1548c788e8d35ba20ca19afacbcfe4a6f326b8ecb60shannonwoods@chromium.org"uvec4" { return ES2_ident_ES3_keyword(context, UVEC4); } 155044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 1562a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"sampler2D" { return SAMPLER2D; } 1572a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"samplerCube" { return SAMPLERCUBE; } 1582a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"samplerExternalOES" { return SAMPLER_EXTERNAL_OES; } 1592a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"sampler3D" { return ES2_reserved_ES3_keyword(context, SAMPLER3D); } 1602a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"sampler3DRect" { return ES2_reserved_ES3_keyword(context, SAMPLER3DRECT); } 1612a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"sampler2DRect" { return SAMPLER2DRECT; } 1622a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"sampler2DArray" { return ES2_ident_ES3_keyword(context, SAMPLER2DARRAY); } 1632a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"isampler2D" { return ES2_ident_ES3_keyword(context, ISAMPLER2D); } 1642a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"isampler3D" { return ES2_ident_ES3_keyword(context, ISAMPLER3D); } 1652a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"isamplerCube" { return ES2_ident_ES3_keyword(context, ISAMPLERCUBE); } 1662a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"isampler2DArray" { return ES2_ident_ES3_keyword(context, ISAMPLER2DARRAY); } 1672a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"usampler2D" { return ES2_ident_ES3_keyword(context, USAMPLER2D); } 1682a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"usampler3D" { return ES2_ident_ES3_keyword(context, USAMPLER3D); } 1692a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"usamplerCube" { return ES2_ident_ES3_keyword(context, USAMPLERCUBE); } 1702a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"usampler2DArray" { return ES2_ident_ES3_keyword(context, USAMPLER2DARRAY); } 1715c55caf3ae7829741cda145b1542d70cea6cb556Jamie Madill"sampler2DShadow" { return ES2_reserved_ES3_keyword(context, SAMPLER2DSHADOW); } 1722a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"samplerCubeShadow" { return ES2_ident_ES3_keyword(context, SAMPLERCUBESHADOW); } 1732a1d8a381d29b906cb143c5834466d66ee032682Nicolas Capens"sampler2DArrayShadow" { return ES2_ident_ES3_keyword(context, SAMPLER2DARRAYSHADOW); } 174044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 17578eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"struct" { return STRUCT; } 176044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 177302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org"layout" { return ES2_ident_ES3_keyword(context, LAYOUT); } 178302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org 1795524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com /* Reserved keywords for GLSL ES 3.00 that are not reserved for GLSL ES 1.00 */ 1805524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"coherent" | 1815524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"restrict" | 1825524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"readonly" | 1835524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"writeonly" | 1845524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"resource" | 1855524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"atomic_uint" | 1865524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"noperspective" | 1875524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"patch" | 1885524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sample" | 1895524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"subroutine" | 1905524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"common" | 1915524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"partition" | 1925524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"active" | 1935524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 1945524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"filter" | 1955524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image1D" | 1965524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image2D" | 1975524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image3D" | 1985524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"imageCube" | 1995524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"iimage1D" | 2005524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"iimage2D" | 2015524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"iimage3D" | 2025524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"iimageCube" | 2035524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"uimage1D" | 2045524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"uimage2D" | 2055524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"uimage3D" | 2065524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"uimageCube" | 2075524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image1DArray" | 2085524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image2DArray" | 2095524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"iimage1DArray" | 2105524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"iimage2DArray" | 2115524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"uimage1DArray" | 2125524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"uimage2DArray" | 2135524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image1DShadow" | 2145524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image2DShadow" | 2155524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image1DArrayShadow" | 2165524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"image2DArrayShadow" | 2175524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"imageBuffer" | 2185524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"iimageBuffer" | 2195524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"uimageBuffer" | 2205524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2215524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sampler1DArray" | 2225524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sampler1DArrayShadow" | 2235524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"isampler1D" | 2245524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"isampler1DArray" | 2255524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"usampler1D" | 2265524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"usampler1DArray" | 2275524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"isampler2DRect" | 2285524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"usampler2DRect" | 2295524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"samplerBuffer" | 2305524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"isamplerBuffer" | 2315524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"usamplerBuffer" | 2325524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sampler2DMS" | 2335524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"isampler2DMS" | 2345524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"usampler2DMS" | 2355524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sampler2DMSArray" | 2365524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"isampler2DMSArray" | 2375524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"usampler2DMSArray" { 2385524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com if (context->shaderVersion < 300) { 2395524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com yylval->lex.string = NewPoolTString(yytext); 2405524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com return check_type(yyscanner); 2415524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com } 2425524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com return reserved_word(yyscanner); 2435524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com} 2445524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 245302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org /* Reserved keywords in GLSL ES 1.00 that are not reserved in GLSL ES 3.00 */ 246302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org"packed" { 247302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org if (context->shaderVersion >= 300) 248302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org { 249302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org yylval->lex.string = NewPoolTString(yytext); 250302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org return check_type(yyscanner); 251302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org } 252302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org 253302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org return reserved_word(yyscanner); 254302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org} 255302adfef44f2a18b5770315408c23087cf5eff04shannonwoods@chromium.org 2565524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com /* Reserved keywords */ 2575524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"asm" | 2585524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2595524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"class" | 2605524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"union" | 2615524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"enum" | 2625524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"typedef" | 2635524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"template" | 2645524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"this" | 2655524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2665524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"goto" | 2675524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2685524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"inline" | 2695524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"noinline" | 2705524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"volatile" | 2715524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"public" | 2725524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"static" | 2735524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"extern" | 2745524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"external" | 2755524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"interface" | 2765524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2775524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"long" | 2785524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"short" | 2795524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"double" | 2805524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"half" | 2815524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"fixed" | 2825524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"unsigned" | 2835524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"superp" | 2845524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2855524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"input" | 2865524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"output" | 2875524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2885524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"hvec2" | 2895524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"hvec3" | 2905524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"hvec4" | 2915524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"dvec2" | 2925524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"dvec3" | 2935524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"dvec4" | 2945524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"fvec2" | 2955524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"fvec3" | 2965524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"fvec4" | 2975524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 2985524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sampler1D" | 2995524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sampler1DShadow" | 3005524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sampler2DRectShadow" | 3015524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 3025524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"sizeof" | 3035524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"cast" | 3045524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com 3055524db0c05c8df6002489a077b18dd6fd5746448shannon.woods%transgaming.com@gtempaccount.com"namespace" | 306044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org"using" { return reserved_word(yyscanner); } 307044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 308044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org{L}({L}|{D})* { 309044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org yylval->lex.string = NewPoolTString(yytext); 310044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org return check_type(yyscanner); 3114f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com} 3124f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 313f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo0[xX]{H}+ { return int_constant(yyscanner); } 314f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo0{O}+ { return int_constant(yyscanner); } 315f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo{D}+ { return int_constant(yyscanner); } 31656b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill 317c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org0[xX]{H}+[uU] { return uint_constant(context); } 318c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org0{O}+[uU] { return uint_constant(context); } 319c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org{D}+[uU] { return uint_constant(context); } 320044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 321f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo{D}+{E} { return float_constant(yyscanner); } 322f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo{D}+"."{D}*({E})? { return float_constant(yyscanner); } 323f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo"."{D}+({E})? { return float_constant(yyscanner); } 32456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill 3254d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org{D}+{E}[fF] { return floatsuffix_check(context); } 3264d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org{D}+"."{D}*({E})?[fF] { return floatsuffix_check(context); } 3274d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org"."{D}+({E})?[fF] { return floatsuffix_check(context); } 328044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 32956b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"+=" { return ADD_ASSIGN; } 33056b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"-=" { return SUB_ASSIGN; } 33156b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"*=" { return MUL_ASSIGN; } 33256b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"/=" { return DIV_ASSIGN; } 33356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"%=" { return MOD_ASSIGN; } 33456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"<<=" { return LEFT_ASSIGN; } 33556b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill">>=" { return RIGHT_ASSIGN; } 33656b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"&=" { return AND_ASSIGN; } 33756b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"^=" { return XOR_ASSIGN; } 33856b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"|=" { return OR_ASSIGN; } 33956b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill 34056b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"++" { return INC_OP; } 34156b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"--" { return DEC_OP; } 34256b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"&&" { return AND_OP; } 34356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"||" { return OR_OP; } 34456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"^^" { return XOR_OP; } 34556b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"<=" { return LE_OP; } 34656b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill">=" { return GE_OP; } 34756b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"==" { return EQ_OP; } 34856b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"!=" { return NE_OP; } 34956b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"<<" { return LEFT_OP; } 35056b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill">>" { return RIGHT_OP; } 35178eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill";" { return SEMICOLON; } 35278eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill("{"|"<%") { return LEFT_BRACE; } 35356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill("}"|"%>") { return RIGHT_BRACE; } 35478eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"," { return COMMA; } 35556b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill":" { return COLON; } 35678eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"=" { return EQUAL; } 35778eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill"(" { return LEFT_PAREN; } 35878eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill")" { return RIGHT_PAREN; } 35956b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill("["|"<:") { return LEFT_BRACKET; } 36056b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill("]"|":>") { return RIGHT_BRACKET; } 361f8dc4fb66d2ee473b6ba37626f02756422863f6cJamie Madill"." { return DOT; } 36256b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"!" { return BANG; } 36356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"-" { return DASH; } 36456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"~" { return TILDE; } 36556b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"+" { return PLUS; } 36656b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"*" { return STAR; } 36756b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"/" { return SLASH; } 36856b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"%" { return PERCENT; } 36956b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"<" { return LEFT_ANGLE; } 37056b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill">" { return RIGHT_ANGLE; } 37156b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"|" { return VERTICAL_BAR; } 37256b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"^" { return CARET; } 37356b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"&" { return AMPERSAND; } 37456b065198f6fdac375d4ce39549a97180e7bc5daJamie Madill"?" { return QUESTION; } 3754f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 37639a8ce6be517928abd6788bea0154f6dab8246f9Jamie Madill[ \t\v\n\f\r] { } 377f8dc4fb66d2ee473b6ba37626f02756422863f6cJamie Madill<<EOF>> { yyterminate(); } 378f8dc4fb66d2ee473b6ba37626f02756422863f6cJamie Madill. { assert(false); return 0; } 3794f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 3804f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com%% 3814f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com 382d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.comyy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner) { 38373bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org pp::Token token; 38473bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org yyget_extra(yyscanner)->preprocessor.lex(&token); 385d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.com yy_size_t len = token.type == pp::Token::LAST ? 0 : token.text.size(); 386d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.com if (len < max_size) 3875b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org memcpy(buf, token.text.c_str(), len); 388075edd84dd682b91279132317d34b09e8028ae6fJamie Madill yyset_column(token.location.file, yyscanner); 389075edd84dd682b91279132317d34b09e8028ae6fJamie Madill yyset_lineno(token.location.line, yyscanner); 39073bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org 39173bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org if (len >= max_size) 39273bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org YY_FATAL_ERROR("Input buffer overflow"); 39373bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org else if (len > 0) 39473bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org buf[len++] = ' '; 39573bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org return len; 396044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org} 397044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 398044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgint check_type(yyscan_t yyscanner) { 399044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; 400044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 401044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org int token = IDENTIFIER; 40296e7ba17f417a48c1a6c31f3d9fbd5611219d14dshannonwoods@chromium.org TSymbol* symbol = yyextra->symbolTable.find(yytext, yyextra->shaderVersion); 40378eb5dfbd88dc39a2b6d54f3f531767f45eca4b2Jamie Madill if (symbol && symbol->isVariable()) { 404044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org TVariable* variable = static_cast<TVariable*>(symbol); 405044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org if (variable->isUserType()) { 406044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org token = TYPE_NAME; 407044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org } 408044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org } 409044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org yylval->lex.symbol = symbol; 410044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org return token; 411044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org} 412044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 413044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgint reserved_word(yyscan_t yyscanner) { 414044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; 415044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 416075edd84dd682b91279132317d34b09e8028ae6fJamie Madill yyextra->error(*yylloc, "Illegal use of reserved word", yytext, ""); 417044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org yyextra->recover(); 418044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org return 0; 4194f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com} 420044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 42135f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.orgint ES2_reserved_ES3_keyword(TParseContext *context, int token) 42235f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org{ 42335f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org yyscan_t yyscanner = (yyscan_t) context->scanner; 42435f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org 42535f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org if (context->shaderVersion < 300) 42635f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org { 42735f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org return reserved_word(yyscanner); 42835f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org } 42935f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org 43035f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org return token; 43135f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org} 43235f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org 43335f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.orgint ES2_keyword_ES3_reserved(TParseContext *context, int token) 43435f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org{ 43535f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org yyscan_t yyscanner = (yyscan_t) context->scanner; 43635f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org 43735f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org if (context->shaderVersion >= 300) 43835f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org { 43935f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org return reserved_word(yyscanner); 44035f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org } 44135f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org 44235f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org return token; 44335f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org} 44435f156d9319d3f47a4893746275596d23ffe6124shannonwoods@chromium.org 44516242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.orgint ES2_ident_ES3_keyword(TParseContext *context, int token) 44616242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org{ 44716242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org struct yyguts_t* yyg = (struct yyguts_t*) context->scanner; 44816242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org yyscan_t yyscanner = (yyscan_t) context->scanner; 44916242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org 45016242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org // not a reserved word in GLSL ES 1.00, so could be used as an identifier/type name 45116242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org if (context->shaderVersion < 300) 45216242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org { 45316242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org yylval->lex.string = NewPoolTString(yytext); 45416242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org return check_type(yyscanner); 45516242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org } 45616242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org 45716242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org return token; 45816242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org} 45916242efc0b35c55c435992f1ab7f84bc4a4dc457shannonwoods@chromium.org 460c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.orgint uint_constant(TParseContext *context) 461c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org{ 462c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org struct yyguts_t* yyg = (struct yyguts_t*) context->scanner; 463c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org yyscan_t yyscanner = (yyscan_t) context->scanner; 464c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org 465c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org if (context->shaderVersion < 300) 466c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org { 467075edd84dd682b91279132317d34b09e8028ae6fJamie Madill context->error(*yylloc, "Unsigned integers are unsupported prior to GLSL ES 3.00", yytext, ""); 468c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org context->recover(); 469c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org return 0; 470c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org } 471c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org 472f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo if (!atoi_clamp(yytext, &(yylval->lex.i))) 473f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo yyextra->warning(*yylloc, "Integer overflow", yytext, ""); 474f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo 475c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org return UINTCONSTANT; 476c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org} 477c8100b85aa421a38ca3d70a612539d09c3f39192shannonwoods@chromium.org 4784d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.orgint floatsuffix_check(TParseContext* context) 4794d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org{ 4804d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org struct yyguts_t* yyg = (struct yyguts_t*) context->scanner; 4814d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org 4824d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org if (context->shaderVersion < 300) 4834d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org { 484075edd84dd682b91279132317d34b09e8028ae6fJamie Madill context->error(*yylloc, "Floating-point suffix unsupported prior to GLSL ES 3.00", yytext); 4854d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org context->recover(); 4864d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org return 0; 4874d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org } 4884d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org 489f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo if (!atof_clamp(yytext, &(yylval->lex.f))) 490f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo yyextra->warning(*yylloc, "Float overflow", yytext, ""); 491f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo 4924d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org return(FLOATCONSTANT); 4934d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org} 4944d20a846b6ac66392b7c0db08353f21441e90029shannonwoods@chromium.org 4950b67bfbf4aa27b96e6790fefad40633e7bf289beAlok Priyadarshivoid yyerror(YYLTYPE* lloc, TParseContext* context, const char* reason) { 4960b67bfbf4aa27b96e6790fefad40633e7bf289beAlok Priyadarshi context->error(*lloc, reason, yyget_text(context->scanner)); 4970b67bfbf4aa27b96e6790fefad40633e7bf289beAlok Priyadarshi context->recover(); 4980b67bfbf4aa27b96e6790fefad40633e7bf289beAlok Priyadarshi} 4990b67bfbf4aa27b96e6790fefad40633e7bf289beAlok Priyadarshi 500f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Moint int_constant(yyscan_t yyscanner) { 501f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; 502f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo 503f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo if (!atoi_clamp(yytext, &(yylval->lex.i))) 504f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo yyextra->warning(*yylloc, "Integer overflow", yytext, ""); 505f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo return INTCONSTANT; 506f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo} 507f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo 508f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Moint float_constant(yyscan_t yyscanner) { 509f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo struct yyguts_t* yyg = (struct yyguts_t*) yyscanner; 510f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo 511f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo if (!atof_clamp(yytext, &(yylval->lex.f))) 512f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo yyextra->warning(*yylloc, "Float overflow", yytext, ""); 513f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo return FLOATCONSTANT; 514f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo} 515f1d723c698d88c7f9086d7fa0aa1c064dddfa8d4Zhenyao Mo 516044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgint glslang_initialize(TParseContext* context) { 517044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org yyscan_t scanner = NULL; 518044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org if (yylex_init_extra(context, &scanner)) 519044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org return 1; 520044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 521044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org context->scanner = scanner; 522044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org return 0; 523044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org} 524044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 525044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.orgint glslang_finalize(TParseContext* context) { 526044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org yyscan_t scanner = context->scanner; 527044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org if (scanner == NULL) return 0; 528044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 529044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org context->scanner = NULL; 53073bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org yylex_destroy(scanner); 53173bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org 53273bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org return 0; 533044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org} 534044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 535d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.comint glslang_scan(size_t count, const char* const string[], const int length[], 536408c45e703875953dee96d9012f340b8d5bbd68aalokp@chromium.org TParseContext* context) { 537044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org yyrestart(NULL, context->scanner); 538075edd84dd682b91279132317d34b09e8028ae6fJamie Madill yyset_column(0, context->scanner); 539075edd84dd682b91279132317d34b09e8028ae6fJamie Madill yyset_lineno(1, context->scanner); 54073bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org 54173bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org // Initialize preprocessor. 54273bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org if (!context->preprocessor.init(count, string, length)) 54373bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org return 1; 54473bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org 54573bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org // Define extension macros. 54673bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org const TExtensionBehavior& extBehavior = context->extensionBehavior(); 54773bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org for (TExtensionBehavior::const_iterator iter = extBehavior.begin(); 54873bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org iter != extBehavior.end(); ++iter) { 549e3043b14c6f8a31d4ab2e514782f86124938908balokp@chromium.org context->preprocessor.predefineMacro(iter->first.c_str(), 1); 55073bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org } 551cbb6b6a0416552b5e3fa8589194288532558ccb8shannon.woods%transgaming.com@gtempaccount.com if (context->fragmentPrecisionHigh) 552cbb6b6a0416552b5e3fa8589194288532558ccb8shannon.woods%transgaming.com@gtempaccount.com context->preprocessor.predefineMacro("GL_FRAGMENT_PRECISION_HIGH", 1); 553cbb6b6a0416552b5e3fa8589194288532558ccb8shannon.woods%transgaming.com@gtempaccount.com 5547faf1a14deb3cdfc9f9137de95f9fc1552b603bdZhenyao Mo context->preprocessor.setMaxTokenSize(GetGlobalMaxTokenSize(context->shaderSpec)); 5555508f39d0cffc9a68565bbff2e6f61332a509cdfJamie Madill 55673bc298e3f0688d40c07c13d94197c4146ae1b49alokp@chromium.org return 0; 557044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org} 558044a5cf8348594de2009331cfc02bd35477caf20alokp@chromium.org 559