mojoshader_parser_hlsl.h 226 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272
  1. /*
  2. * My changes over the original lempar.c from SQLite are encased in
  3. * #if __MOJOSHADER__ blocks. --ryan.
  4. */
  5. #ifndef __MOJOSHADER__
  6. #define __MOJOSHADER__ 1
  7. #endif
  8. #if !__MOJOSHADER__
  9. #define LEMON_SUPPORT_TRACING (!defined(NDEBUG))
  10. #endif
  11. /* Driver template for the LEMON parser generator.
  12. ** The original author(s) of lempar.c disclaim copyright to this source code.
  13. ** However, changes made for MojoShader fall under the same license as the
  14. ** rest of MojoShader. Please see the file LICENSE.txt in the source's root
  15. ** directory.
  16. */
  17. /* First off, code is included that follows the "include" declaration
  18. ** in the input grammar file. */
  19. #include <stdio.h>
  20. #line 31 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  21. #ifndef __MOJOSHADER_HLSL_COMPILER__
  22. #error Do not compile this file directly.
  23. #endif
  24. #line 28 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  25. /* Next is all token values, in a form suitable for use by makeheaders.
  26. ** This section will be null unless lemon is run with the -m switch.
  27. */
  28. /*
  29. ** These constants (all generated automatically by the parser generator)
  30. ** specify the various kinds of tokens (terminals) that the parser
  31. ** understands.
  32. **
  33. ** Each symbol here is a terminal symbol in the grammar.
  34. */
  35. #define TOKEN_HLSL_COMMA 1
  36. #define TOKEN_HLSL_ASSIGN 2
  37. #define TOKEN_HLSL_ADDASSIGN 3
  38. #define TOKEN_HLSL_SUBASSIGN 4
  39. #define TOKEN_HLSL_MULASSIGN 5
  40. #define TOKEN_HLSL_DIVASSIGN 6
  41. #define TOKEN_HLSL_MODASSIGN 7
  42. #define TOKEN_HLSL_LSHIFTASSIGN 8
  43. #define TOKEN_HLSL_RSHIFTASSIGN 9
  44. #define TOKEN_HLSL_ANDASSIGN 10
  45. #define TOKEN_HLSL_ORASSIGN 11
  46. #define TOKEN_HLSL_XORASSIGN 12
  47. #define TOKEN_HLSL_QUESTION 13
  48. #define TOKEN_HLSL_OROR 14
  49. #define TOKEN_HLSL_ANDAND 15
  50. #define TOKEN_HLSL_OR 16
  51. #define TOKEN_HLSL_XOR 17
  52. #define TOKEN_HLSL_AND 18
  53. #define TOKEN_HLSL_EQL 19
  54. #define TOKEN_HLSL_NEQ 20
  55. #define TOKEN_HLSL_LT 21
  56. #define TOKEN_HLSL_LEQ 22
  57. #define TOKEN_HLSL_GT 23
  58. #define TOKEN_HLSL_GEQ 24
  59. #define TOKEN_HLSL_LSHIFT 25
  60. #define TOKEN_HLSL_RSHIFT 26
  61. #define TOKEN_HLSL_PLUS 27
  62. #define TOKEN_HLSL_MINUS 28
  63. #define TOKEN_HLSL_STAR 29
  64. #define TOKEN_HLSL_SLASH 30
  65. #define TOKEN_HLSL_PERCENT 31
  66. #define TOKEN_HLSL_TYPECAST 32
  67. #define TOKEN_HLSL_EXCLAMATION 33
  68. #define TOKEN_HLSL_COMPLEMENT 34
  69. #define TOKEN_HLSL_MINUSMINUS 35
  70. #define TOKEN_HLSL_PLUSPLUS 36
  71. #define TOKEN_HLSL_DOT 37
  72. #define TOKEN_HLSL_LBRACKET 38
  73. #define TOKEN_HLSL_RBRACKET 39
  74. #define TOKEN_HLSL_LPAREN 40
  75. #define TOKEN_HLSL_RPAREN 41
  76. #define TOKEN_HLSL_ELSE 42
  77. #define TOKEN_HLSL_SEMICOLON 43
  78. #define TOKEN_HLSL_TYPEDEF 44
  79. #define TOKEN_HLSL_CONST 45
  80. #define TOKEN_HLSL_IDENTIFIER 46
  81. #define TOKEN_HLSL_VOID 47
  82. #define TOKEN_HLSL_INLINE 48
  83. #define TOKEN_HLSL_IN 49
  84. #define TOKEN_HLSL_INOUT 50
  85. #define TOKEN_HLSL_OUT 51
  86. #define TOKEN_HLSL_UNIFORM 52
  87. #define TOKEN_HLSL_COLON 53
  88. #define TOKEN_HLSL_LINEAR 54
  89. #define TOKEN_HLSL_CENTROID 55
  90. #define TOKEN_HLSL_NOINTERPOLATION 56
  91. #define TOKEN_HLSL_NOPERSPECTIVE 57
  92. #define TOKEN_HLSL_SAMPLE 58
  93. #define TOKEN_HLSL_EXTERN 59
  94. #define TOKEN_HLSL_SHARED 60
  95. #define TOKEN_HLSL_STATIC 61
  96. #define TOKEN_HLSL_VOLATILE 62
  97. #define TOKEN_HLSL_ROWMAJOR 63
  98. #define TOKEN_HLSL_COLUMNMAJOR 64
  99. #define TOKEN_HLSL_LBRACE 65
  100. #define TOKEN_HLSL_RBRACE 66
  101. #define TOKEN_HLSL_STRUCT 67
  102. #define TOKEN_HLSL_PACKOFFSET 68
  103. #define TOKEN_HLSL_REGISTER 69
  104. #define TOKEN_HLSL_USERTYPE 70
  105. #define TOKEN_HLSL_SAMPLER 71
  106. #define TOKEN_HLSL_SAMPLER1D 72
  107. #define TOKEN_HLSL_SAMPLER2D 73
  108. #define TOKEN_HLSL_SAMPLER3D 74
  109. #define TOKEN_HLSL_SAMPLERCUBE 75
  110. #define TOKEN_HLSL_SAMPLER_STATE 76
  111. #define TOKEN_HLSL_SAMPLERSTATE 77
  112. #define TOKEN_HLSL_SAMPLERCOMPARISONSTATE 78
  113. #define TOKEN_HLSL_BOOL 79
  114. #define TOKEN_HLSL_INT 80
  115. #define TOKEN_HLSL_UINT 81
  116. #define TOKEN_HLSL_HALF 82
  117. #define TOKEN_HLSL_FLOAT 83
  118. #define TOKEN_HLSL_DOUBLE 84
  119. #define TOKEN_HLSL_STRING 85
  120. #define TOKEN_HLSL_SNORM 86
  121. #define TOKEN_HLSL_UNORM 87
  122. #define TOKEN_HLSL_BUFFER 88
  123. #define TOKEN_HLSL_VECTOR 89
  124. #define TOKEN_HLSL_INT_CONSTANT 90
  125. #define TOKEN_HLSL_MATRIX 91
  126. #define TOKEN_HLSL_ISOLATE 92
  127. #define TOKEN_HLSL_MAXINSTRUCTIONCOUNT 93
  128. #define TOKEN_HLSL_NOEXPRESSIONOPTIMIZATIONS 94
  129. #define TOKEN_HLSL_REMOVEUNUSEDINPUTS 95
  130. #define TOKEN_HLSL_UNUSED 96
  131. #define TOKEN_HLSL_XPS 97
  132. #define TOKEN_HLSL_BREAK 98
  133. #define TOKEN_HLSL_CONTINUE 99
  134. #define TOKEN_HLSL_DISCARD 100
  135. #define TOKEN_HLSL_DO 101
  136. #define TOKEN_HLSL_WHILE 102
  137. #define TOKEN_HLSL_RETURN 103
  138. #define TOKEN_HLSL_UNROLL 104
  139. #define TOKEN_HLSL_LOOP 105
  140. #define TOKEN_HLSL_FOR 106
  141. #define TOKEN_HLSL_BRANCH 107
  142. #define TOKEN_HLSL_IF 108
  143. #define TOKEN_HLSL_FLATTEN 109
  144. #define TOKEN_HLSL_IFALL 110
  145. #define TOKEN_HLSL_IFANY 111
  146. #define TOKEN_HLSL_PREDICATE 112
  147. #define TOKEN_HLSL_PREDICATEBLOCK 113
  148. #define TOKEN_HLSL_SWITCH 114
  149. #define TOKEN_HLSL_FORCECASE 115
  150. #define TOKEN_HLSL_CALL 116
  151. #define TOKEN_HLSL_CASE 117
  152. #define TOKEN_HLSL_DEFAULT 118
  153. #define TOKEN_HLSL_FLOAT_CONSTANT 119
  154. #define TOKEN_HLSL_STRING_LITERAL 120
  155. #define TOKEN_HLSL_TRUE 121
  156. #define TOKEN_HLSL_FALSE 122
  157. /* Make sure the INTERFACE macro is defined.
  158. */
  159. #ifndef INTERFACE
  160. # define INTERFACE 1
  161. #endif
  162. /* The next thing included is series of defines which control
  163. ** various aspects of the generated parser.
  164. ** YYCODETYPE is the data type used for storing terminal
  165. ** and nonterminal numbers. "unsigned char" is
  166. ** used if there are fewer than 250 terminals
  167. ** and nonterminals. "int" is used otherwise.
  168. ** YYNOCODE is a number of type YYCODETYPE which corresponds
  169. ** to no legal terminal or nonterminal number. This
  170. ** number is used to fill in empty slots of the hash
  171. ** table.
  172. ** YYFALLBACK If defined, this indicates that one or more tokens
  173. ** have fall-back values which should be used if the
  174. ** original value of the token will not parse.
  175. ** YYACTIONTYPE is the data type used for storing terminal
  176. ** and nonterminal numbers. "unsigned char" is
  177. ** used if there are fewer than 250 rules and
  178. ** states combined. "int" is used otherwise.
  179. ** ParseHLSLTOKENTYPE is the data type used for minor tokens given
  180. ** directly to the parser from the tokenizer.
  181. ** YYMINORTYPE is the data type used for all minor tokens.
  182. ** This is typically a union of many types, one of
  183. ** which is ParseHLSLTOKENTYPE. The entry in the union
  184. ** for base tokens is called "yy0".
  185. ** YYSTACKDEPTH is the maximum depth of the parser's stack. If
  186. ** zero the stack is dynamically sized using realloc()
  187. ** ParseHLSLARG_SDECL A static variable declaration for the %extra_argument
  188. ** ParseHLSLARG_PDECL A parameter declaration for the %extra_argument
  189. ** ParseHLSLARG_STORE Code to store %extra_argument into yypParser
  190. ** ParseHLSLARG_FETCH Code to extract %extra_argument from yypParser
  191. ** YYNSTATE the combined number of states.
  192. ** YYNRULE the number of rules in the grammar
  193. ** YYERRORSYMBOL is the code number of the error symbol. If not
  194. ** defined, then do no error processing.
  195. */
  196. #define YYCODETYPE unsigned char
  197. #define YYNOCODE 198
  198. #define YYACTIONTYPE unsigned short int
  199. #define ParseHLSLTOKENTYPE TokenData
  200. typedef union {
  201. int yyinit;
  202. ParseHLSLTOKENTYPE yy0;
  203. MOJOSHADER_astPackOffset * yy8;
  204. MOJOSHADER_astVariableDeclaration * yy24;
  205. MOJOSHADER_astArguments * yy26;
  206. const MOJOSHADER_astDataType * yy37;
  207. MOJOSHADER_astTypedef * yy71;
  208. MOJOSHADER_astInputModifier yy75;
  209. MOJOSHADER_astVariableLowLevel * yy82;
  210. MOJOSHADER_astInterpolationModifier yy111;
  211. MOJOSHADER_astCompilationUnit * yy139;
  212. MOJOSHADER_astSwitchCases * yy165;
  213. MOJOSHADER_astFunctionStorageClass yy175;
  214. MOJOSHADER_astStatement * yy233;
  215. MOJOSHADER_astStructDeclaration * yy249;
  216. MOJOSHADER_astAnnotations * yy268;
  217. int yy270;
  218. const char * yy306;
  219. MOJOSHADER_astFunctionParameters * yy307;
  220. MOJOSHADER_astExpression * yy322;
  221. MOJOSHADER_astStructMembers * yy346;
  222. MOJOSHADER_astFunctionSignature * yy364;
  223. MOJOSHADER_astScalarOrArray * yy380;
  224. } YYMINORTYPE;
  225. #ifndef YYSTACKDEPTH
  226. #define YYSTACKDEPTH 100
  227. #endif
  228. #define ParseHLSLARG_SDECL Context *ctx ;
  229. #define ParseHLSLARG_PDECL , Context *ctx
  230. #define ParseHLSLARG_FETCH Context *ctx = yypParser->ctx
  231. #define ParseHLSLARG_STORE yypParser->ctx = ctx
  232. #define YYNSTATE 525
  233. #define YYNRULE 288
  234. #define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
  235. #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
  236. #define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
  237. /* The yyzerominor constant is used to initialize instances of
  238. ** YYMINORTYPE objects to zero. */
  239. static const YYMINORTYPE yyzerominor = { 0 };
  240. /* Define the yytestcase() macro to be a no-op if is not already defined
  241. ** otherwise.
  242. **
  243. ** Applications can choose to define yytestcase() in the %include section
  244. ** to a macro that can assist in verifying code coverage. For production
  245. ** code the yytestcase() macro should be turned off. But it is useful
  246. ** for testing.
  247. */
  248. #ifndef yytestcase
  249. # define yytestcase(X)
  250. #endif
  251. /* Next are the tables used to determine what action to take based on the
  252. ** current state and lookahead token. These tables are used to implement
  253. ** functions that take a state number and lookahead value and return an
  254. ** action integer.
  255. **
  256. ** Suppose the action integer is N. Then the action is determined as
  257. ** follows
  258. **
  259. ** 0 <= N < YYNSTATE Shift N. That is, push the lookahead
  260. ** token onto the stack and goto state N.
  261. **
  262. ** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.
  263. **
  264. ** N == YYNSTATE+YYNRULE A syntax error has occurred.
  265. **
  266. ** N == YYNSTATE+YYNRULE+1 The parser accepts its input.
  267. **
  268. ** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused
  269. ** slots in the yy_action[] table.
  270. **
  271. ** The action table is constructed as a single large table named yy_action[].
  272. ** Given state S and lookahead X, the action is computed as
  273. **
  274. ** yy_action[ yy_shift_ofst[S] + X ]
  275. **
  276. ** If the index value yy_shift_ofst[S]+X is out of range or if the value
  277. ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
  278. ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
  279. ** and that yy_default[S] should be used instead.
  280. **
  281. ** The formula above is for computing the action when the lookahead is
  282. ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
  283. ** a reduce action) then the yy_reduce_ofst[] array is used in place of
  284. ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
  285. ** YY_SHIFT_USE_DFLT.
  286. **
  287. ** The following are the tables generated in this section:
  288. **
  289. ** yy_action[] A single table containing all actions.
  290. ** yy_lookahead[] A table containing the lookahead for each entry in
  291. ** yy_action. Used to detect hash collisions.
  292. ** yy_shift_ofst[] For each state, the offset into yy_action for
  293. ** shifting terminals.
  294. ** yy_reduce_ofst[] For each state, the offset into yy_action for
  295. ** shifting non-terminals after a reduce.
  296. ** yy_default[] Default action for each state.
  297. */
  298. #define YY_ACTTAB_COUNT (5407)
  299. static const YYACTIONTYPE yy_action[] = {
  300. /* 0 */ 86, 85, 446, 447, 264, 46, 83, 84, 90, 91,
  301. /* 10 */ 39, 123, 88, 47, 27, 114, 344, 97, 405, 143,
  302. /* 20 */ 104, 422, 82, 81, 80, 407, 348, 140, 139, 410,
  303. /* 30 */ 78, 77, 411, 409, 408, 406, 404, 403, 1, 383,
  304. /* 40 */ 249, 495, 60, 511, 510, 509, 508, 507, 506, 505,
  305. /* 50 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
  306. /* 60 */ 294, 293, 282, 482, 278, 250, 398, 397, 396, 395,
  307. /* 70 */ 394, 248, 247, 246, 334, 338, 37, 40, 214, 336,
  308. /* 80 */ 518, 333, 74, 72, 73, 71, 39, 332, 494, 100,
  309. /* 90 */ 86, 85, 481, 480, 479, 478, 83, 84, 90, 91,
  310. /* 100 */ 186, 123, 413, 47, 27, 115, 344, 97, 405, 143,
  311. /* 110 */ 362, 429, 70, 69, 432, 407, 361, 140, 139, 410,
  312. /* 120 */ 140, 139, 411, 409, 408, 406, 404, 403, 1, 384,
  313. /* 130 */ 249, 76, 75, 511, 510, 509, 508, 507, 506, 505,
  314. /* 140 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
  315. /* 150 */ 294, 293, 282, 482, 278, 146, 398, 397, 396, 395,
  316. /* 160 */ 394, 248, 247, 246, 334, 338, 37, 369, 371, 336,
  317. /* 170 */ 119, 333, 370, 366, 368, 132, 310, 332, 367, 100,
  318. /* 180 */ 86, 85, 481, 480, 479, 478, 83, 84, 90, 91,
  319. /* 190 */ 180, 123, 413, 47, 113, 423, 344, 97, 405, 143,
  320. /* 200 */ 416, 140, 139, 493, 417, 407, 140, 139, 100, 410,
  321. /* 210 */ 140, 139, 411, 409, 408, 406, 404, 403, 1, 181,
  322. /* 220 */ 249, 413, 60, 511, 510, 509, 508, 507, 506, 505,
  323. /* 230 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
  324. /* 240 */ 294, 293, 282, 482, 278, 63, 436, 117, 418, 138,
  325. /* 250 */ 492, 248, 247, 246, 334, 338, 37, 415, 122, 336,
  326. /* 260 */ 121, 333, 477, 140, 139, 62, 63, 332, 263, 259,
  327. /* 270 */ 86, 85, 481, 480, 479, 478, 83, 84, 90, 91,
  328. /* 280 */ 391, 261, 24, 47, 61, 434, 33, 515, 405, 143,
  329. /* 290 */ 512, 517, 516, 514, 513, 407, 363, 365, 100, 410,
  330. /* 300 */ 438, 364, 411, 409, 408, 406, 404, 403, 48, 181,
  331. /* 310 */ 249, 413, 60, 511, 510, 509, 508, 507, 506, 505,
  332. /* 320 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
  333. /* 330 */ 294, 293, 282, 482, 278, 263, 259, 352, 118, 340,
  334. /* 340 */ 345, 109, 102, 130, 306, 122, 474, 428, 443, 122,
  335. /* 350 */ 475, 152, 241, 94, 360, 399, 491, 421, 400, 252,
  336. /* 360 */ 359, 296, 481, 480, 479, 478, 170, 24, 60, 515,
  337. /* 370 */ 38, 79, 512, 517, 516, 514, 513, 18, 346, 60,
  338. /* 380 */ 223, 219, 218, 216, 251, 339, 135, 402, 60, 476,
  339. /* 390 */ 150, 401, 60, 450, 145, 467, 157, 199, 198, 149,
  340. /* 400 */ 191, 272, 271, 269, 267, 189, 462, 352, 220, 340,
  341. /* 410 */ 345, 109, 102, 502, 501, 500, 499, 498, 497, 496,
  342. /* 420 */ 295, 294, 60, 94, 100, 399, 390, 522, 21, 252,
  343. /* 430 */ 490, 3, 426, 489, 343, 38, 170, 437, 60, 515,
  344. /* 440 */ 60, 296, 512, 517, 516, 514, 513, 5, 346, 1,
  345. /* 450 */ 223, 219, 218, 216, 318, 339, 135, 296, 27, 476,
  346. /* 460 */ 150, 27, 20, 450, 145, 467, 157, 199, 198, 149,
  347. /* 470 */ 191, 272, 271, 269, 267, 189, 462, 105, 215, 285,
  348. /* 480 */ 105, 352, 341, 340, 345, 109, 102, 502, 501, 500,
  349. /* 490 */ 499, 498, 497, 496, 295, 294, 101, 94, 488, 399,
  350. /* 500 */ 126, 487, 112, 252, 320, 40, 214, 103, 414, 184,
  351. /* 510 */ 170, 283, 154, 515, 140, 139, 512, 517, 516, 514,
  352. /* 520 */ 513, 4, 346, 486, 223, 219, 218, 216, 60, 339,
  353. /* 530 */ 135, 60, 213, 476, 150, 134, 125, 450, 145, 467,
  354. /* 540 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  355. /* 550 */ 462, 352, 137, 340, 345, 109, 102, 280, 60, 515,
  356. /* 560 */ 60, 60, 512, 517, 516, 514, 513, 94, 485, 399,
  357. /* 570 */ 36, 17, 179, 252, 292, 291, 290, 289, 288, 287,
  358. /* 580 */ 170, 286, 284, 515, 60, 124, 512, 517, 516, 514,
  359. /* 590 */ 513, 60, 222, 60, 223, 219, 218, 216, 14, 339,
  360. /* 600 */ 135, 12, 31, 476, 150, 144, 60, 450, 145, 467,
  361. /* 610 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  362. /* 620 */ 462, 27, 133, 312, 279, 352, 35, 340, 345, 109,
  363. /* 630 */ 102, 10, 515, 9, 276, 512, 517, 516, 514, 513,
  364. /* 640 */ 60, 94, 275, 399, 131, 308, 274, 252, 29, 420,
  365. /* 650 */ 138, 273, 484, 68, 170, 67, 65, 515, 64, 448,
  366. /* 660 */ 512, 517, 516, 514, 513, 262, 350, 185, 223, 219,
  367. /* 670 */ 218, 216, 184, 339, 135, 209, 260, 476, 150, 259,
  368. /* 680 */ 6, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  369. /* 690 */ 271, 269, 267, 189, 462, 352, 435, 340, 345, 109,
  370. /* 700 */ 102, 258, 515, 257, 433, 512, 517, 516, 514, 513,
  371. /* 710 */ 60, 94, 263, 399, 419, 89, 389, 252, 436, 385,
  372. /* 720 */ 381, 380, 379, 244, 170, 377, 243, 515, 136, 239,
  373. /* 730 */ 512, 517, 516, 514, 513, 153, 217, 240, 223, 219,
  374. /* 740 */ 218, 216, 151, 339, 135, 177, 176, 476, 150, 141,
  375. /* 750 */ 234, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  376. /* 760 */ 271, 269, 267, 189, 462, 232, 358, 357, 230, 352,
  377. /* 770 */ 356, 340, 345, 109, 102, 228, 515, 355, 226, 512,
  378. /* 780 */ 517, 516, 514, 513, 224, 94, 22, 399, 354, 353,
  379. /* 790 */ 44, 252, 221, 43, 351, 42, 19, 41, 170, 120,
  380. /* 800 */ 2, 515, 212, 88, 512, 517, 516, 514, 513, 316,
  381. /* 810 */ 349, 93, 223, 219, 218, 216, 107, 339, 135, 106,
  382. /* 820 */ 305, 476, 150, 303, 204, 450, 145, 467, 157, 199,
  383. /* 830 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 352,
  384. /* 840 */ 87, 340, 345, 109, 102, 300, 520, 296, 483, 38,
  385. /* 850 */ 439, 256, 431, 430, 27, 94, 255, 399, 253, 388,
  386. /* 860 */ 250, 252, 474, 337, 372, 23, 317, 1, 170, 313,
  387. /* 870 */ 311, 515, 521, 309, 512, 517, 516, 514, 513, 307,
  388. /* 880 */ 382, 281, 223, 219, 218, 216, 347, 339, 135, 242,
  389. /* 890 */ 184, 476, 150, 158, 299, 450, 145, 467, 157, 199,
  390. /* 900 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 815,
  391. /* 910 */ 815, 277, 815, 352, 815, 340, 345, 109, 102, 815,
  392. /* 920 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
  393. /* 930 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
  394. /* 940 */ 815, 815, 170, 815, 815, 515, 815, 815, 512, 517,
  395. /* 950 */ 516, 514, 513, 815, 335, 815, 223, 219, 218, 216,
  396. /* 960 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
  397. /* 970 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  398. /* 980 */ 267, 189, 462, 352, 815, 340, 345, 109, 102, 815,
  399. /* 990 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
  400. /* 1000 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
  401. /* 1010 */ 815, 815, 170, 815, 815, 515, 815, 815, 512, 517,
  402. /* 1020 */ 516, 514, 513, 815, 331, 815, 223, 219, 218, 216,
  403. /* 1030 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
  404. /* 1040 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  405. /* 1050 */ 267, 189, 462, 815, 815, 815, 815, 352, 815, 340,
  406. /* 1060 */ 345, 109, 102, 815, 815, 815, 815, 815, 815, 815,
  407. /* 1070 */ 815, 815, 815, 94, 815, 399, 815, 815, 815, 252,
  408. /* 1080 */ 815, 815, 815, 815, 815, 815, 170, 815, 815, 515,
  409. /* 1090 */ 815, 815, 512, 517, 516, 514, 513, 815, 330, 815,
  410. /* 1100 */ 223, 219, 218, 216, 815, 339, 135, 815, 815, 476,
  411. /* 1110 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
  412. /* 1120 */ 191, 272, 271, 269, 267, 189, 462, 352, 815, 340,
  413. /* 1130 */ 345, 109, 102, 815, 815, 815, 815, 815, 815, 815,
  414. /* 1140 */ 815, 815, 815, 94, 815, 399, 815, 815, 815, 252,
  415. /* 1150 */ 815, 815, 815, 815, 815, 815, 170, 815, 815, 515,
  416. /* 1160 */ 815, 815, 512, 517, 516, 514, 513, 815, 329, 815,
  417. /* 1170 */ 223, 219, 218, 216, 815, 339, 135, 815, 815, 476,
  418. /* 1180 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
  419. /* 1190 */ 191, 272, 271, 269, 267, 189, 462, 815, 815, 815,
  420. /* 1200 */ 815, 352, 815, 340, 345, 109, 102, 815, 815, 815,
  421. /* 1210 */ 815, 815, 815, 815, 815, 815, 815, 94, 815, 399,
  422. /* 1220 */ 815, 815, 815, 252, 815, 815, 815, 815, 815, 815,
  423. /* 1230 */ 170, 815, 815, 515, 815, 815, 512, 517, 516, 514,
  424. /* 1240 */ 513, 815, 328, 815, 223, 219, 218, 216, 815, 339,
  425. /* 1250 */ 135, 815, 815, 476, 150, 815, 815, 450, 145, 467,
  426. /* 1260 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  427. /* 1270 */ 462, 352, 815, 340, 345, 109, 102, 815, 815, 815,
  428. /* 1280 */ 815, 815, 815, 815, 815, 815, 815, 94, 815, 399,
  429. /* 1290 */ 815, 815, 815, 252, 815, 815, 815, 815, 815, 815,
  430. /* 1300 */ 170, 815, 815, 515, 815, 815, 512, 517, 516, 514,
  431. /* 1310 */ 513, 815, 327, 815, 223, 219, 218, 216, 815, 339,
  432. /* 1320 */ 135, 815, 815, 476, 150, 815, 815, 450, 145, 467,
  433. /* 1330 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  434. /* 1340 */ 462, 815, 815, 815, 815, 352, 815, 340, 345, 109,
  435. /* 1350 */ 102, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  436. /* 1360 */ 815, 94, 815, 399, 815, 815, 815, 252, 815, 815,
  437. /* 1370 */ 815, 815, 815, 815, 170, 815, 815, 515, 815, 815,
  438. /* 1380 */ 512, 517, 516, 514, 513, 815, 326, 815, 223, 219,
  439. /* 1390 */ 218, 216, 815, 339, 135, 815, 815, 476, 150, 815,
  440. /* 1400 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  441. /* 1410 */ 271, 269, 267, 189, 462, 352, 815, 340, 345, 109,
  442. /* 1420 */ 102, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  443. /* 1430 */ 815, 94, 815, 399, 815, 815, 815, 252, 815, 815,
  444. /* 1440 */ 815, 815, 815, 815, 170, 815, 815, 515, 815, 815,
  445. /* 1450 */ 512, 517, 516, 514, 513, 815, 325, 815, 223, 219,
  446. /* 1460 */ 218, 216, 815, 339, 135, 815, 815, 476, 150, 815,
  447. /* 1470 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  448. /* 1480 */ 271, 269, 267, 189, 462, 815, 815, 815, 815, 352,
  449. /* 1490 */ 815, 340, 345, 109, 102, 815, 815, 815, 815, 815,
  450. /* 1500 */ 815, 815, 815, 815, 815, 94, 815, 399, 815, 815,
  451. /* 1510 */ 815, 252, 815, 815, 815, 815, 815, 815, 170, 815,
  452. /* 1520 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  453. /* 1530 */ 324, 815, 223, 219, 218, 216, 815, 339, 135, 815,
  454. /* 1540 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
  455. /* 1550 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 352,
  456. /* 1560 */ 815, 340, 345, 109, 102, 815, 815, 815, 815, 815,
  457. /* 1570 */ 815, 815, 815, 815, 815, 94, 815, 399, 815, 815,
  458. /* 1580 */ 815, 252, 815, 815, 815, 815, 815, 815, 170, 815,
  459. /* 1590 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  460. /* 1600 */ 323, 815, 223, 219, 218, 216, 815, 339, 135, 815,
  461. /* 1610 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
  462. /* 1620 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 815,
  463. /* 1630 */ 815, 815, 815, 352, 815, 340, 345, 109, 102, 815,
  464. /* 1640 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
  465. /* 1650 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
  466. /* 1660 */ 815, 815, 170, 815, 815, 515, 815, 815, 512, 517,
  467. /* 1670 */ 516, 514, 513, 815, 322, 815, 223, 219, 218, 216,
  468. /* 1680 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
  469. /* 1690 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  470. /* 1700 */ 267, 189, 462, 352, 815, 340, 345, 109, 102, 815,
  471. /* 1710 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
  472. /* 1720 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
  473. /* 1730 */ 815, 815, 170, 525, 815, 515, 815, 815, 512, 517,
  474. /* 1740 */ 516, 514, 513, 815, 321, 815, 223, 219, 218, 216,
  475. /* 1750 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
  476. /* 1760 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  477. /* 1770 */ 267, 189, 462, 815, 815, 815, 815, 97, 405, 815,
  478. /* 1780 */ 205, 298, 815, 815, 815, 407, 815, 815, 815, 410,
  479. /* 1790 */ 815, 815, 411, 409, 408, 406, 404, 403, 815, 815,
  480. /* 1800 */ 249, 815, 815, 511, 510, 509, 508, 507, 506, 505,
  481. /* 1810 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
  482. /* 1820 */ 294, 293, 282, 815, 278, 86, 85, 815, 815, 815,
  483. /* 1830 */ 815, 83, 84, 90, 91, 815, 815, 519, 47, 815,
  484. /* 1840 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 815,
  485. /* 1850 */ 815, 815, 815, 83, 84, 90, 91, 815, 815, 815,
  486. /* 1860 */ 47, 444, 815, 815, 815, 815, 143, 815, 511, 510,
  487. /* 1870 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  488. /* 1880 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
  489. /* 1890 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  490. /* 1900 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  491. /* 1910 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
  492. /* 1920 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 815,
  493. /* 1930 */ 815, 342, 815, 815, 143, 815, 815, 86, 85, 481,
  494. /* 1940 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
  495. /* 1950 */ 47, 815, 815, 34, 815, 815, 143, 815, 511, 510,
  496. /* 1960 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  497. /* 1970 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
  498. /* 1980 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  499. /* 1990 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  500. /* 2000 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
  501. /* 2010 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 16,
  502. /* 2020 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 481,
  503. /* 2030 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
  504. /* 2040 */ 47, 15, 815, 815, 815, 815, 143, 815, 511, 510,
  505. /* 2050 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  506. /* 2060 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
  507. /* 2070 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  508. /* 2080 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  509. /* 2090 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
  510. /* 2100 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 815,
  511. /* 2110 */ 815, 32, 815, 815, 143, 815, 815, 86, 85, 481,
  512. /* 2120 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
  513. /* 2130 */ 47, 13, 815, 815, 815, 815, 143, 815, 511, 510,
  514. /* 2140 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  515. /* 2150 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
  516. /* 2160 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  517. /* 2170 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  518. /* 2180 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
  519. /* 2190 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 11,
  520. /* 2200 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 481,
  521. /* 2210 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
  522. /* 2220 */ 47, 815, 815, 28, 815, 815, 143, 815, 511, 510,
  523. /* 2230 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  524. /* 2240 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
  525. /* 2250 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  526. /* 2260 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  527. /* 2270 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
  528. /* 2280 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 8,
  529. /* 2290 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 481,
  530. /* 2300 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
  531. /* 2310 */ 47, 7, 815, 815, 815, 815, 143, 815, 511, 510,
  532. /* 2320 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  533. /* 2330 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
  534. /* 2340 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  535. /* 2350 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  536. /* 2360 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
  537. /* 2370 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 815,
  538. /* 2380 */ 815, 815, 815, 815, 143, 815, 815, 815, 815, 481,
  539. /* 2390 */ 480, 479, 478, 815, 815, 815, 815, 815, 815, 815,
  540. /* 2400 */ 815, 815, 815, 26, 815, 815, 815, 815, 511, 510,
  541. /* 2410 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  542. /* 2420 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
  543. /* 2430 */ 815, 86, 85, 815, 121, 815, 815, 83, 84, 90,
  544. /* 2440 */ 91, 815, 815, 96, 47, 815, 815, 815, 815, 815,
  545. /* 2450 */ 143, 815, 92, 386, 387, 815, 815, 481, 480, 479,
  546. /* 2460 */ 478, 515, 815, 815, 512, 517, 516, 514, 513, 25,
  547. /* 2470 */ 815, 815, 815, 815, 511, 510, 509, 508, 507, 506,
  548. /* 2480 */ 505, 504, 503, 502, 501, 500, 499, 498, 497, 496,
  549. /* 2490 */ 295, 294, 293, 282, 482, 278, 815, 86, 85, 815,
  550. /* 2500 */ 815, 815, 815, 83, 84, 90, 91, 815, 815, 815,
  551. /* 2510 */ 45, 815, 815, 815, 815, 815, 143, 815, 815, 815,
  552. /* 2520 */ 815, 815, 815, 481, 480, 479, 478, 59, 55, 54,
  553. /* 2530 */ 58, 57, 56, 53, 52, 51, 49, 50, 815, 815,
  554. /* 2540 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  555. /* 2550 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  556. /* 2560 */ 482, 278, 815, 815, 815, 815, 815, 815, 86, 85,
  557. /* 2570 */ 815, 208, 815, 815, 83, 84, 90, 91, 314, 98,
  558. /* 2580 */ 815, 47, 815, 815, 815, 815, 815, 143, 815, 481,
  559. /* 2590 */ 480, 479, 478, 815, 815, 815, 815, 815, 515, 815,
  560. /* 2600 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
  561. /* 2610 */ 815, 511, 510, 509, 508, 507, 506, 505, 504, 503,
  562. /* 2620 */ 502, 501, 500, 499, 498, 497, 496, 295, 294, 293,
  563. /* 2630 */ 282, 482, 278, 815, 378, 245, 376, 375, 374, 373,
  564. /* 2640 */ 815, 815, 815, 815, 815, 815, 178, 238, 815, 237,
  565. /* 2650 */ 815, 236, 235, 233, 231, 229, 815, 227, 225, 815,
  566. /* 2660 */ 481, 480, 479, 478, 97, 405, 815, 205, 298, 815,
  567. /* 2670 */ 815, 815, 407, 815, 815, 815, 410, 815, 815, 411,
  568. /* 2680 */ 409, 408, 406, 404, 403, 815, 815, 249, 815, 815,
  569. /* 2690 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
  570. /* 2700 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
  571. /* 2710 */ 405, 278, 815, 815, 815, 815, 815, 407, 815, 815,
  572. /* 2720 */ 815, 410, 815, 815, 411, 409, 408, 406, 404, 403,
  573. /* 2730 */ 815, 815, 815, 815, 815, 511, 510, 509, 508, 507,
  574. /* 2740 */ 506, 505, 504, 503, 502, 501, 500, 499, 498, 497,
  575. /* 2750 */ 496, 295, 294, 293, 282, 30, 278, 815, 815, 111,
  576. /* 2760 */ 102, 815, 815, 815, 815, 815, 815, 815, 815, 121,
  577. /* 2770 */ 815, 94, 815, 399, 815, 815, 815, 252, 96, 815,
  578. /* 2780 */ 815, 815, 815, 815, 168, 815, 815, 515, 392, 387,
  579. /* 2790 */ 512, 517, 516, 514, 513, 815, 515, 815, 815, 512,
  580. /* 2800 */ 517, 516, 514, 513, 815, 815, 815, 476, 150, 815,
  581. /* 2810 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  582. /* 2820 */ 271, 269, 267, 189, 462, 815, 398, 397, 396, 395,
  583. /* 2830 */ 394, 815, 815, 815, 815, 815, 815, 815, 393, 815,
  584. /* 2840 */ 815, 815, 511, 510, 509, 508, 507, 506, 505, 504,
  585. /* 2850 */ 503, 502, 501, 500, 499, 498, 497, 496, 295, 294,
  586. /* 2860 */ 293, 282, 815, 278, 815, 815, 398, 397, 396, 395,
  587. /* 2870 */ 394, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  588. /* 2880 */ 815, 815, 511, 510, 509, 508, 507, 506, 505, 504,
  589. /* 2890 */ 503, 502, 501, 500, 499, 498, 497, 496, 295, 294,
  590. /* 2900 */ 293, 282, 315, 278, 207, 304, 206, 302, 815, 815,
  591. /* 2910 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  592. /* 2920 */ 815, 815, 815, 815, 815, 511, 510, 509, 508, 507,
  593. /* 2930 */ 506, 505, 504, 503, 502, 501, 500, 499, 498, 497,
  594. /* 2940 */ 496, 295, 294, 293, 282, 815, 278, 207, 304, 206,
  595. /* 2950 */ 302, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  596. /* 2960 */ 815, 815, 815, 815, 815, 815, 815, 815, 511, 510,
  597. /* 2970 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
  598. /* 2980 */ 499, 498, 497, 496, 295, 294, 293, 282, 142, 278,
  599. /* 2990 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  600. /* 3000 */ 208, 815, 815, 815, 815, 211, 210, 301, 98, 815,
  601. /* 3010 */ 815, 815, 424, 815, 815, 515, 815, 425, 512, 517,
  602. /* 3020 */ 516, 514, 513, 815, 815, 815, 815, 515, 815, 142,
  603. /* 3030 */ 512, 517, 516, 514, 513, 476, 150, 815, 815, 450,
  604. /* 3040 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  605. /* 3050 */ 267, 189, 462, 254, 815, 815, 515, 182, 815, 512,
  606. /* 3060 */ 517, 516, 514, 513, 815, 815, 815, 815, 815, 815,
  607. /* 3070 */ 142, 815, 815, 815, 815, 815, 476, 150, 815, 815,
  608. /* 3080 */ 450, 145, 467, 157, 199, 198, 149, 191, 272, 271,
  609. /* 3090 */ 269, 267, 189, 462, 254, 815, 815, 515, 183, 815,
  610. /* 3100 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
  611. /* 3110 */ 815, 142, 815, 815, 815, 815, 815, 476, 150, 815,
  612. /* 3120 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  613. /* 3130 */ 271, 269, 267, 189, 462, 254, 815, 815, 515, 427,
  614. /* 3140 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
  615. /* 3150 */ 815, 815, 127, 815, 815, 815, 815, 815, 476, 150,
  616. /* 3160 */ 815, 815, 450, 145, 467, 157, 199, 198, 149, 191,
  617. /* 3170 */ 272, 271, 269, 267, 189, 462, 201, 815, 815, 515,
  618. /* 3180 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
  619. /* 3190 */ 815, 815, 815, 142, 815, 815, 815, 815, 815, 476,
  620. /* 3200 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
  621. /* 3210 */ 191, 272, 271, 269, 267, 189, 462, 200, 815, 815,
  622. /* 3220 */ 515, 815, 815, 512, 517, 516, 514, 513, 815, 815,
  623. /* 3230 */ 815, 815, 815, 815, 142, 815, 815, 815, 815, 815,
  624. /* 3240 */ 476, 150, 815, 815, 450, 145, 467, 157, 199, 198,
  625. /* 3250 */ 149, 191, 272, 271, 269, 267, 189, 462, 201, 815,
  626. /* 3260 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  627. /* 3270 */ 815, 815, 815, 815, 815, 142, 815, 815, 815, 815,
  628. /* 3280 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
  629. /* 3290 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 175,
  630. /* 3300 */ 815, 815, 515, 815, 815, 512, 517, 516, 514, 513,
  631. /* 3310 */ 815, 815, 815, 815, 815, 815, 142, 815, 815, 815,
  632. /* 3320 */ 815, 815, 476, 150, 815, 815, 450, 145, 467, 157,
  633. /* 3330 */ 199, 198, 149, 191, 272, 271, 269, 267, 189, 462,
  634. /* 3340 */ 174, 815, 815, 515, 815, 815, 512, 517, 516, 514,
  635. /* 3350 */ 513, 815, 815, 815, 815, 815, 815, 142, 815, 815,
  636. /* 3360 */ 815, 815, 815, 476, 150, 815, 815, 450, 145, 467,
  637. /* 3370 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  638. /* 3380 */ 462, 173, 815, 815, 515, 815, 815, 512, 517, 516,
  639. /* 3390 */ 514, 513, 815, 815, 815, 815, 815, 815, 142, 815,
  640. /* 3400 */ 815, 815, 815, 815, 476, 150, 815, 815, 450, 145,
  641. /* 3410 */ 467, 157, 199, 198, 149, 191, 272, 271, 269, 267,
  642. /* 3420 */ 189, 462, 172, 815, 815, 515, 815, 815, 512, 517,
  643. /* 3430 */ 516, 514, 513, 815, 815, 815, 815, 815, 815, 142,
  644. /* 3440 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 450,
  645. /* 3450 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  646. /* 3460 */ 267, 189, 462, 171, 815, 815, 515, 815, 815, 512,
  647. /* 3470 */ 517, 516, 514, 513, 815, 815, 815, 815, 815, 815,
  648. /* 3480 */ 142, 815, 815, 815, 815, 815, 476, 150, 815, 815,
  649. /* 3490 */ 450, 145, 467, 157, 199, 198, 149, 191, 272, 271,
  650. /* 3500 */ 269, 267, 189, 462, 202, 815, 815, 515, 815, 815,
  651. /* 3510 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
  652. /* 3520 */ 142, 815, 815, 815, 815, 815, 815, 476, 150, 815,
  653. /* 3530 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  654. /* 3540 */ 271, 269, 267, 189, 462, 815, 815, 515, 815, 815,
  655. /* 3550 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
  656. /* 3560 */ 815, 142, 815, 815, 815, 815, 815, 476, 150, 815,
  657. /* 3570 */ 187, 441, 145, 467, 157, 199, 198, 149, 191, 272,
  658. /* 3580 */ 271, 269, 267, 189, 462, 169, 815, 815, 515, 815,
  659. /* 3590 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
  660. /* 3600 */ 815, 815, 142, 815, 815, 815, 815, 815, 476, 150,
  661. /* 3610 */ 815, 815, 450, 145, 467, 157, 199, 198, 149, 191,
  662. /* 3620 */ 272, 271, 269, 267, 189, 462, 167, 815, 815, 515,
  663. /* 3630 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
  664. /* 3640 */ 815, 815, 815, 142, 815, 815, 815, 815, 815, 476,
  665. /* 3650 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
  666. /* 3660 */ 191, 272, 271, 269, 267, 189, 462, 166, 815, 815,
  667. /* 3670 */ 515, 815, 815, 512, 517, 516, 514, 513, 815, 815,
  668. /* 3680 */ 815, 815, 815, 815, 142, 815, 815, 815, 815, 815,
  669. /* 3690 */ 476, 150, 815, 815, 450, 145, 467, 157, 199, 198,
  670. /* 3700 */ 149, 191, 272, 271, 269, 267, 189, 462, 165, 815,
  671. /* 3710 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  672. /* 3720 */ 815, 815, 815, 815, 815, 142, 815, 815, 815, 815,
  673. /* 3730 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
  674. /* 3740 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 163,
  675. /* 3750 */ 815, 815, 515, 815, 815, 512, 517, 516, 514, 513,
  676. /* 3760 */ 815, 815, 815, 815, 815, 815, 142, 815, 815, 815,
  677. /* 3770 */ 815, 815, 476, 150, 815, 815, 450, 145, 467, 157,
  678. /* 3780 */ 199, 198, 149, 191, 272, 271, 269, 267, 189, 462,
  679. /* 3790 */ 164, 815, 815, 515, 815, 815, 512, 517, 516, 514,
  680. /* 3800 */ 513, 815, 815, 815, 815, 815, 815, 142, 815, 815,
  681. /* 3810 */ 815, 815, 815, 476, 150, 815, 815, 450, 145, 467,
  682. /* 3820 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  683. /* 3830 */ 462, 162, 815, 815, 515, 815, 815, 512, 517, 516,
  684. /* 3840 */ 514, 513, 815, 815, 815, 815, 815, 815, 142, 815,
  685. /* 3850 */ 815, 815, 815, 815, 476, 150, 815, 815, 450, 145,
  686. /* 3860 */ 467, 157, 199, 198, 149, 191, 272, 271, 269, 267,
  687. /* 3870 */ 189, 462, 161, 815, 815, 515, 815, 815, 512, 517,
  688. /* 3880 */ 516, 514, 513, 815, 815, 815, 815, 815, 815, 142,
  689. /* 3890 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 450,
  690. /* 3900 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  691. /* 3910 */ 267, 189, 462, 160, 815, 815, 515, 815, 815, 512,
  692. /* 3920 */ 517, 516, 514, 513, 815, 815, 815, 815, 815, 815,
  693. /* 3930 */ 142, 815, 815, 815, 815, 815, 476, 150, 815, 815,
  694. /* 3940 */ 450, 145, 467, 157, 199, 198, 149, 191, 272, 271,
  695. /* 3950 */ 269, 267, 189, 462, 159, 815, 815, 515, 815, 815,
  696. /* 3960 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
  697. /* 3970 */ 142, 815, 815, 815, 815, 815, 815, 476, 150, 815,
  698. /* 3980 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
  699. /* 3990 */ 271, 269, 267, 189, 462, 815, 815, 515, 815, 815,
  700. /* 4000 */ 512, 517, 516, 514, 513, 815, 815, 815, 142, 815,
  701. /* 4010 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
  702. /* 4020 */ 815, 440, 145, 467, 157, 199, 198, 149, 191, 272,
  703. /* 4030 */ 271, 269, 267, 189, 462, 515, 815, 815, 512, 517,
  704. /* 4040 */ 516, 514, 513, 815, 815, 815, 142, 815, 815, 815,
  705. /* 4050 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 461,
  706. /* 4060 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  707. /* 4070 */ 267, 189, 462, 515, 815, 815, 512, 517, 516, 514,
  708. /* 4080 */ 513, 815, 815, 815, 142, 815, 815, 815, 815, 815,
  709. /* 4090 */ 815, 815, 815, 476, 150, 815, 815, 460, 145, 467,
  710. /* 4100 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  711. /* 4110 */ 462, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  712. /* 4120 */ 815, 815, 142, 815, 815, 815, 815, 815, 815, 815,
  713. /* 4130 */ 815, 476, 150, 815, 815, 459, 145, 467, 157, 199,
  714. /* 4140 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 515,
  715. /* 4150 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
  716. /* 4160 */ 142, 815, 815, 815, 815, 815, 815, 815, 815, 476,
  717. /* 4170 */ 150, 815, 815, 458, 145, 467, 157, 199, 198, 149,
  718. /* 4180 */ 191, 272, 271, 269, 267, 189, 462, 515, 815, 815,
  719. /* 4190 */ 512, 517, 516, 514, 513, 815, 815, 815, 142, 815,
  720. /* 4200 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
  721. /* 4210 */ 815, 457, 145, 467, 157, 199, 198, 149, 191, 272,
  722. /* 4220 */ 271, 269, 267, 189, 462, 515, 815, 815, 512, 517,
  723. /* 4230 */ 516, 514, 513, 815, 815, 815, 142, 815, 815, 815,
  724. /* 4240 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 456,
  725. /* 4250 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  726. /* 4260 */ 267, 189, 462, 515, 815, 815, 512, 517, 516, 514,
  727. /* 4270 */ 513, 815, 815, 815, 142, 815, 815, 815, 815, 815,
  728. /* 4280 */ 815, 815, 815, 476, 150, 815, 815, 455, 145, 467,
  729. /* 4290 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  730. /* 4300 */ 462, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  731. /* 4310 */ 815, 815, 142, 815, 815, 815, 815, 815, 815, 815,
  732. /* 4320 */ 815, 476, 150, 815, 815, 454, 145, 467, 157, 199,
  733. /* 4330 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 515,
  734. /* 4340 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
  735. /* 4350 */ 142, 815, 815, 815, 815, 815, 815, 815, 815, 476,
  736. /* 4360 */ 150, 815, 815, 453, 145, 467, 157, 199, 198, 149,
  737. /* 4370 */ 191, 272, 271, 269, 267, 189, 462, 515, 815, 815,
  738. /* 4380 */ 512, 517, 516, 514, 513, 815, 815, 815, 142, 815,
  739. /* 4390 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
  740. /* 4400 */ 815, 452, 145, 467, 157, 199, 198, 149, 191, 272,
  741. /* 4410 */ 271, 269, 267, 189, 462, 515, 815, 815, 512, 517,
  742. /* 4420 */ 516, 514, 513, 815, 815, 815, 142, 815, 815, 815,
  743. /* 4430 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 451,
  744. /* 4440 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
  745. /* 4450 */ 267, 189, 462, 515, 815, 815, 512, 517, 516, 514,
  746. /* 4460 */ 513, 815, 815, 815, 815, 815, 99, 815, 815, 815,
  747. /* 4470 */ 815, 815, 815, 476, 150, 815, 815, 442, 145, 467,
  748. /* 4480 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
  749. /* 4490 */ 462, 511, 510, 509, 508, 507, 506, 505, 504, 503,
  750. /* 4500 */ 502, 501, 500, 499, 498, 497, 496, 295, 294, 293,
  751. /* 4510 */ 282, 815, 278, 815, 205, 815, 815, 815, 815, 815,
  752. /* 4520 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  753. /* 4530 */ 142, 815, 815, 815, 815, 815, 815, 511, 510, 509,
  754. /* 4540 */ 508, 507, 506, 505, 504, 503, 502, 501, 500, 499,
  755. /* 4550 */ 498, 497, 496, 295, 294, 293, 282, 515, 278, 815,
  756. /* 4560 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
  757. /* 4570 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
  758. /* 4580 */ 815, 815, 468, 467, 157, 199, 198, 149, 191, 272,
  759. /* 4590 */ 271, 269, 267, 189, 463, 815, 815, 815, 815, 815,
  760. /* 4600 */ 815, 511, 510, 509, 508, 507, 506, 505, 504, 503,
  761. /* 4610 */ 502, 501, 500, 499, 498, 497, 496, 295, 294, 293,
  762. /* 4620 */ 282, 142, 278, 815, 814, 66, 297, 523, 128, 815,
  763. /* 4630 */ 319, 108, 110, 815, 95, 129, 815, 815, 815, 815,
  764. /* 4640 */ 815, 815, 815, 94, 815, 399, 815, 815, 515, 252,
  765. /* 4650 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 515,
  766. /* 4660 */ 815, 815, 512, 517, 516, 514, 513, 815, 476, 150,
  767. /* 4670 */ 142, 815, 815, 468, 467, 157, 199, 198, 149, 191,
  768. /* 4680 */ 272, 271, 269, 267, 188, 815, 815, 815, 815, 815,
  769. /* 4690 */ 815, 815, 815, 815, 815, 815, 815, 515, 815, 815,
  770. /* 4700 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
  771. /* 4710 */ 142, 815, 815, 815, 815, 815, 815, 476, 150, 815,
  772. /* 4720 */ 116, 815, 468, 467, 157, 199, 198, 149, 191, 272,
  773. /* 4730 */ 271, 269, 265, 412, 815, 815, 815, 515, 815, 815,
  774. /* 4740 */ 512, 517, 516, 514, 513, 142, 815, 515, 815, 815,
  775. /* 4750 */ 512, 517, 516, 514, 513, 815, 815, 476, 150, 815,
  776. /* 4760 */ 815, 815, 468, 467, 157, 199, 198, 149, 191, 272,
  777. /* 4770 */ 271, 266, 515, 815, 815, 512, 517, 516, 514, 513,
  778. /* 4780 */ 815, 142, 815, 815, 815, 815, 815, 815, 815, 815,
  779. /* 4790 */ 815, 815, 476, 150, 815, 815, 815, 468, 467, 157,
  780. /* 4800 */ 199, 198, 149, 191, 272, 268, 815, 815, 515, 815,
  781. /* 4810 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
  782. /* 4820 */ 815, 815, 815, 815, 815, 815, 815, 815, 476, 150,
  783. /* 4830 */ 815, 815, 815, 468, 467, 157, 199, 198, 149, 191,
  784. /* 4840 */ 270, 815, 815, 815, 524, 523, 128, 815, 319, 108,
  785. /* 4850 */ 110, 815, 95, 129, 815, 815, 815, 815, 142, 815,
  786. /* 4860 */ 815, 94, 815, 399, 815, 815, 815, 252, 815, 815,
  787. /* 4870 */ 142, 815, 815, 815, 815, 815, 815, 515, 815, 815,
  788. /* 4880 */ 512, 517, 516, 514, 513, 515, 815, 815, 512, 517,
  789. /* 4890 */ 516, 514, 513, 815, 815, 815, 815, 515, 815, 815,
  790. /* 4900 */ 512, 517, 516, 514, 513, 476, 150, 815, 142, 815,
  791. /* 4910 */ 468, 467, 157, 199, 198, 149, 190, 476, 150, 815,
  792. /* 4920 */ 815, 815, 468, 467, 157, 199, 198, 148, 815, 815,
  793. /* 4930 */ 815, 815, 815, 815, 815, 515, 815, 815, 512, 517,
  794. /* 4940 */ 516, 514, 513, 815, 142, 815, 815, 815, 815, 815,
  795. /* 4950 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 815,
  796. /* 4960 */ 468, 467, 157, 199, 198, 147, 815, 815, 815, 815,
  797. /* 4970 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 142,
  798. /* 4980 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  799. /* 4990 */ 815, 476, 150, 815, 815, 815, 468, 467, 157, 199,
  800. /* 5000 */ 195, 815, 815, 815, 815, 815, 515, 815, 815, 512,
  801. /* 5010 */ 517, 516, 514, 513, 142, 815, 815, 815, 815, 815,
  802. /* 5020 */ 815, 815, 815, 815, 142, 815, 476, 150, 815, 815,
  803. /* 5030 */ 815, 468, 467, 157, 199, 194, 815, 815, 815, 815,
  804. /* 5040 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  805. /* 5050 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 142,
  806. /* 5060 */ 815, 476, 150, 815, 815, 815, 468, 467, 157, 199,
  807. /* 5070 */ 193, 476, 150, 815, 815, 815, 468, 467, 157, 199,
  808. /* 5080 */ 192, 815, 815, 815, 815, 815, 515, 815, 142, 512,
  809. /* 5090 */ 517, 516, 514, 513, 815, 815, 815, 142, 815, 815,
  810. /* 5100 */ 815, 815, 815, 815, 815, 815, 476, 150, 815, 815,
  811. /* 5110 */ 815, 468, 467, 157, 197, 515, 815, 815, 512, 517,
  812. /* 5120 */ 516, 514, 513, 815, 515, 142, 815, 512, 517, 516,
  813. /* 5130 */ 514, 513, 815, 815, 815, 476, 150, 815, 815, 815,
  814. /* 5140 */ 468, 467, 157, 196, 476, 150, 815, 815, 815, 468,
  815. /* 5150 */ 467, 156, 515, 815, 815, 512, 517, 516, 514, 513,
  816. /* 5160 */ 208, 815, 815, 815, 815, 203, 210, 301, 98, 815,
  817. /* 5170 */ 815, 815, 476, 150, 142, 815, 815, 468, 467, 155,
  818. /* 5180 */ 815, 815, 815, 815, 142, 815, 815, 515, 815, 815,
  819. /* 5190 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
  820. /* 5200 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  821. /* 5210 */ 815, 515, 142, 815, 512, 517, 516, 514, 513, 815,
  822. /* 5220 */ 815, 476, 150, 142, 815, 815, 468, 472, 815, 815,
  823. /* 5230 */ 815, 476, 150, 815, 815, 815, 468, 471, 815, 515,
  824. /* 5240 */ 815, 815, 512, 517, 516, 514, 513, 142, 815, 815,
  825. /* 5250 */ 515, 815, 815, 512, 517, 516, 514, 513, 142, 476,
  826. /* 5260 */ 150, 815, 815, 815, 468, 470, 815, 815, 815, 815,
  827. /* 5270 */ 476, 150, 815, 815, 515, 468, 469, 512, 517, 516,
  828. /* 5280 */ 514, 513, 142, 815, 815, 515, 815, 815, 512, 517,
  829. /* 5290 */ 516, 514, 513, 142, 476, 150, 815, 815, 815, 468,
  830. /* 5300 */ 466, 815, 815, 815, 815, 476, 150, 815, 815, 515,
  831. /* 5310 */ 468, 465, 512, 517, 516, 514, 513, 142, 815, 815,
  832. /* 5320 */ 515, 815, 815, 512, 517, 516, 514, 513, 815, 476,
  833. /* 5330 */ 150, 815, 815, 815, 468, 464, 815, 815, 815, 815,
  834. /* 5340 */ 476, 150, 815, 815, 515, 468, 445, 512, 517, 516,
  835. /* 5350 */ 514, 513, 815, 815, 142, 815, 815, 815, 815, 815,
  836. /* 5360 */ 815, 815, 815, 815, 476, 150, 815, 815, 815, 449,
  837. /* 5370 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  838. /* 5380 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
  839. /* 5390 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
  840. /* 5400 */ 815, 476, 150, 815, 815, 815, 473,
  841. };
  842. static const YYCODETYPE yy_lookahead[] = {
  843. /* 0 */ 27, 28, 35, 36, 37, 38, 33, 34, 35, 36,
  844. /* 10 */ 38, 38, 40, 40, 2, 142, 43, 44, 45, 46,
  845. /* 20 */ 147, 148, 29, 30, 31, 52, 66, 154, 155, 56,
  846. /* 30 */ 27, 28, 59, 60, 61, 62, 63, 64, 65, 66,
  847. /* 40 */ 67, 83, 1, 70, 71, 72, 73, 74, 75, 76,
  848. /* 50 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
  849. /* 60 */ 87, 88, 89, 90, 91, 53, 54, 55, 56, 57,
  850. /* 70 */ 58, 98, 99, 100, 101, 102, 103, 117, 118, 106,
  851. /* 80 */ 39, 108, 21, 22, 23, 24, 38, 114, 83, 133,
  852. /* 90 */ 27, 28, 119, 120, 121, 122, 33, 34, 35, 36,
  853. /* 100 */ 144, 38, 146, 40, 2, 142, 43, 44, 45, 46,
  854. /* 110 */ 108, 148, 19, 20, 148, 52, 114, 154, 155, 56,
  855. /* 120 */ 154, 155, 59, 60, 61, 62, 63, 64, 65, 66,
  856. /* 130 */ 67, 25, 26, 70, 71, 72, 73, 74, 75, 76,
  857. /* 140 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
  858. /* 150 */ 87, 88, 89, 90, 91, 21, 54, 55, 56, 57,
  859. /* 160 */ 58, 98, 99, 100, 101, 102, 103, 101, 102, 106,
  860. /* 170 */ 136, 108, 106, 101, 102, 141, 142, 114, 106, 133,
  861. /* 180 */ 27, 28, 119, 120, 121, 122, 33, 34, 35, 36,
  862. /* 190 */ 144, 38, 146, 40, 142, 148, 43, 44, 45, 46,
  863. /* 200 */ 148, 154, 155, 23, 148, 52, 154, 155, 133, 56,
  864. /* 210 */ 154, 155, 59, 60, 61, 62, 63, 64, 65, 144,
  865. /* 220 */ 67, 146, 1, 70, 71, 72, 73, 74, 75, 76,
  866. /* 230 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
  867. /* 240 */ 87, 88, 89, 90, 91, 14, 46, 157, 158, 159,
  868. /* 250 */ 23, 98, 99, 100, 101, 102, 103, 148, 1, 106,
  869. /* 260 */ 132, 108, 41, 154, 155, 13, 14, 114, 68, 69,
  870. /* 270 */ 27, 28, 119, 120, 121, 122, 33, 34, 35, 36,
  871. /* 280 */ 152, 37, 1, 40, 53, 41, 43, 159, 45, 46,
  872. /* 290 */ 162, 163, 164, 165, 166, 52, 101, 102, 133, 56,
  873. /* 300 */ 43, 106, 59, 60, 61, 62, 63, 64, 1, 144,
  874. /* 310 */ 67, 146, 1, 70, 71, 72, 73, 74, 75, 76,
  875. /* 320 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
  876. /* 330 */ 87, 88, 89, 90, 91, 68, 69, 127, 136, 129,
  877. /* 340 */ 130, 131, 132, 141, 142, 1, 181, 66, 41, 1,
  878. /* 350 */ 39, 39, 40, 143, 108, 145, 23, 23, 43, 149,
  879. /* 360 */ 114, 46, 119, 120, 121, 122, 156, 1, 1, 159,
  880. /* 370 */ 40, 41, 162, 163, 164, 165, 166, 167, 168, 1,
  881. /* 380 */ 170, 171, 172, 173, 1, 175, 176, 43, 1, 179,
  882. /* 390 */ 180, 43, 1, 183, 184, 185, 186, 187, 188, 189,
  883. /* 400 */ 190, 191, 192, 193, 194, 195, 196, 127, 41, 129,
  884. /* 410 */ 130, 131, 132, 79, 80, 81, 82, 83, 84, 85,
  885. /* 420 */ 86, 87, 1, 143, 133, 145, 43, 43, 41, 149,
  886. /* 430 */ 23, 53, 66, 23, 43, 40, 156, 146, 1, 159,
  887. /* 440 */ 1, 46, 162, 163, 164, 165, 166, 167, 168, 65,
  888. /* 450 */ 170, 171, 172, 173, 43, 175, 176, 46, 2, 179,
  889. /* 460 */ 180, 2, 41, 183, 184, 185, 186, 187, 188, 189,
  890. /* 470 */ 190, 191, 192, 193, 194, 195, 196, 21, 41, 83,
  891. /* 480 */ 21, 127, 43, 129, 130, 131, 132, 79, 80, 81,
  892. /* 490 */ 82, 83, 84, 85, 86, 87, 136, 143, 23, 145,
  893. /* 500 */ 174, 23, 142, 149, 178, 117, 118, 147, 148, 53,
  894. /* 510 */ 156, 83, 53, 159, 154, 155, 162, 163, 164, 165,
  895. /* 520 */ 166, 167, 168, 23, 170, 171, 172, 173, 1, 175,
  896. /* 530 */ 176, 1, 132, 179, 180, 135, 21, 183, 184, 185,
  897. /* 540 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  898. /* 550 */ 196, 127, 133, 129, 130, 131, 132, 1, 1, 159,
  899. /* 560 */ 1, 1, 162, 163, 164, 165, 166, 143, 23, 145,
  900. /* 570 */ 43, 41, 153, 149, 79, 80, 81, 82, 83, 84,
  901. /* 580 */ 156, 86, 87, 159, 1, 21, 162, 163, 164, 165,
  902. /* 590 */ 166, 1, 168, 1, 170, 171, 172, 173, 41, 175,
  903. /* 600 */ 176, 41, 43, 179, 180, 132, 1, 183, 184, 185,
  904. /* 610 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  905. /* 620 */ 196, 2, 141, 142, 90, 127, 43, 129, 130, 131,
  906. /* 630 */ 132, 41, 159, 41, 1, 162, 163, 164, 165, 166,
  907. /* 640 */ 1, 143, 90, 145, 141, 142, 1, 149, 43, 158,
  908. /* 650 */ 159, 90, 23, 18, 156, 17, 16, 159, 15, 46,
  909. /* 660 */ 162, 163, 164, 165, 166, 40, 168, 46, 170, 171,
  910. /* 670 */ 172, 173, 53, 175, 176, 132, 46, 179, 180, 69,
  911. /* 680 */ 41, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  912. /* 690 */ 192, 193, 194, 195, 196, 127, 41, 129, 130, 131,
  913. /* 700 */ 132, 40, 159, 46, 41, 162, 163, 164, 165, 166,
  914. /* 710 */ 1, 143, 68, 145, 43, 65, 46, 149, 46, 46,
  915. /* 720 */ 43, 43, 43, 40, 156, 41, 90, 159, 39, 41,
  916. /* 730 */ 162, 163, 164, 165, 166, 39, 168, 90, 170, 171,
  917. /* 740 */ 172, 173, 39, 175, 176, 39, 39, 179, 180, 132,
  918. /* 750 */ 39, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  919. /* 760 */ 192, 193, 194, 195, 196, 39, 108, 108, 39, 127,
  920. /* 770 */ 108, 129, 130, 131, 132, 39, 159, 108, 39, 162,
  921. /* 780 */ 163, 164, 165, 166, 39, 143, 101, 145, 114, 114,
  922. /* 790 */ 40, 149, 102, 40, 43, 40, 42, 40, 156, 65,
  923. /* 800 */ 53, 159, 46, 40, 162, 163, 164, 165, 166, 41,
  924. /* 810 */ 168, 1, 170, 171, 172, 173, 46, 175, 176, 46,
  925. /* 820 */ 51, 179, 180, 49, 46, 183, 184, 185, 186, 187,
  926. /* 830 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 127,
  927. /* 840 */ 40, 129, 130, 131, 132, 41, 133, 46, 181, 40,
  928. /* 850 */ 133, 53, 155, 154, 2, 143, 53, 145, 142, 136,
  929. /* 860 */ 53, 149, 181, 177, 129, 40, 136, 65, 156, 142,
  930. /* 870 */ 142, 159, 129, 142, 162, 163, 164, 165, 166, 142,
  931. /* 880 */ 168, 159, 170, 171, 172, 173, 178, 175, 176, 169,
  932. /* 890 */ 53, 179, 180, 46, 136, 183, 184, 185, 186, 187,
  933. /* 900 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
  934. /* 910 */ 197, 159, 197, 127, 197, 129, 130, 131, 132, 197,
  935. /* 920 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
  936. /* 930 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
  937. /* 940 */ 197, 197, 156, 197, 197, 159, 197, 197, 162, 163,
  938. /* 950 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
  939. /* 960 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
  940. /* 970 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  941. /* 980 */ 194, 195, 196, 127, 197, 129, 130, 131, 132, 197,
  942. /* 990 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
  943. /* 1000 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
  944. /* 1010 */ 197, 197, 156, 197, 197, 159, 197, 197, 162, 163,
  945. /* 1020 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
  946. /* 1030 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
  947. /* 1040 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  948. /* 1050 */ 194, 195, 196, 197, 197, 197, 197, 127, 197, 129,
  949. /* 1060 */ 130, 131, 132, 197, 197, 197, 197, 197, 197, 197,
  950. /* 1070 */ 197, 197, 197, 143, 197, 145, 197, 197, 197, 149,
  951. /* 1080 */ 197, 197, 197, 197, 197, 197, 156, 197, 197, 159,
  952. /* 1090 */ 197, 197, 162, 163, 164, 165, 166, 197, 168, 197,
  953. /* 1100 */ 170, 171, 172, 173, 197, 175, 176, 197, 197, 179,
  954. /* 1110 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
  955. /* 1120 */ 190, 191, 192, 193, 194, 195, 196, 127, 197, 129,
  956. /* 1130 */ 130, 131, 132, 197, 197, 197, 197, 197, 197, 197,
  957. /* 1140 */ 197, 197, 197, 143, 197, 145, 197, 197, 197, 149,
  958. /* 1150 */ 197, 197, 197, 197, 197, 197, 156, 197, 197, 159,
  959. /* 1160 */ 197, 197, 162, 163, 164, 165, 166, 197, 168, 197,
  960. /* 1170 */ 170, 171, 172, 173, 197, 175, 176, 197, 197, 179,
  961. /* 1180 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
  962. /* 1190 */ 190, 191, 192, 193, 194, 195, 196, 197, 197, 197,
  963. /* 1200 */ 197, 127, 197, 129, 130, 131, 132, 197, 197, 197,
  964. /* 1210 */ 197, 197, 197, 197, 197, 197, 197, 143, 197, 145,
  965. /* 1220 */ 197, 197, 197, 149, 197, 197, 197, 197, 197, 197,
  966. /* 1230 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
  967. /* 1240 */ 166, 197, 168, 197, 170, 171, 172, 173, 197, 175,
  968. /* 1250 */ 176, 197, 197, 179, 180, 197, 197, 183, 184, 185,
  969. /* 1260 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  970. /* 1270 */ 196, 127, 197, 129, 130, 131, 132, 197, 197, 197,
  971. /* 1280 */ 197, 197, 197, 197, 197, 197, 197, 143, 197, 145,
  972. /* 1290 */ 197, 197, 197, 149, 197, 197, 197, 197, 197, 197,
  973. /* 1300 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
  974. /* 1310 */ 166, 197, 168, 197, 170, 171, 172, 173, 197, 175,
  975. /* 1320 */ 176, 197, 197, 179, 180, 197, 197, 183, 184, 185,
  976. /* 1330 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  977. /* 1340 */ 196, 197, 197, 197, 197, 127, 197, 129, 130, 131,
  978. /* 1350 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  979. /* 1360 */ 197, 143, 197, 145, 197, 197, 197, 149, 197, 197,
  980. /* 1370 */ 197, 197, 197, 197, 156, 197, 197, 159, 197, 197,
  981. /* 1380 */ 162, 163, 164, 165, 166, 197, 168, 197, 170, 171,
  982. /* 1390 */ 172, 173, 197, 175, 176, 197, 197, 179, 180, 197,
  983. /* 1400 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  984. /* 1410 */ 192, 193, 194, 195, 196, 127, 197, 129, 130, 131,
  985. /* 1420 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  986. /* 1430 */ 197, 143, 197, 145, 197, 197, 197, 149, 197, 197,
  987. /* 1440 */ 197, 197, 197, 197, 156, 197, 197, 159, 197, 197,
  988. /* 1450 */ 162, 163, 164, 165, 166, 197, 168, 197, 170, 171,
  989. /* 1460 */ 172, 173, 197, 175, 176, 197, 197, 179, 180, 197,
  990. /* 1470 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  991. /* 1480 */ 192, 193, 194, 195, 196, 197, 197, 197, 197, 127,
  992. /* 1490 */ 197, 129, 130, 131, 132, 197, 197, 197, 197, 197,
  993. /* 1500 */ 197, 197, 197, 197, 197, 143, 197, 145, 197, 197,
  994. /* 1510 */ 197, 149, 197, 197, 197, 197, 197, 197, 156, 197,
  995. /* 1520 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  996. /* 1530 */ 168, 197, 170, 171, 172, 173, 197, 175, 176, 197,
  997. /* 1540 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
  998. /* 1550 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 127,
  999. /* 1560 */ 197, 129, 130, 131, 132, 197, 197, 197, 197, 197,
  1000. /* 1570 */ 197, 197, 197, 197, 197, 143, 197, 145, 197, 197,
  1001. /* 1580 */ 197, 149, 197, 197, 197, 197, 197, 197, 156, 197,
  1002. /* 1590 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1003. /* 1600 */ 168, 197, 170, 171, 172, 173, 197, 175, 176, 197,
  1004. /* 1610 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
  1005. /* 1620 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
  1006. /* 1630 */ 197, 197, 197, 127, 197, 129, 130, 131, 132, 197,
  1007. /* 1640 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
  1008. /* 1650 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
  1009. /* 1660 */ 197, 197, 156, 197, 197, 159, 197, 197, 162, 163,
  1010. /* 1670 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
  1011. /* 1680 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
  1012. /* 1690 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1013. /* 1700 */ 194, 195, 196, 127, 197, 129, 130, 131, 132, 197,
  1014. /* 1710 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
  1015. /* 1720 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
  1016. /* 1730 */ 197, 197, 156, 0, 197, 159, 197, 197, 162, 163,
  1017. /* 1740 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
  1018. /* 1750 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
  1019. /* 1760 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1020. /* 1770 */ 194, 195, 196, 197, 197, 197, 197, 44, 45, 197,
  1021. /* 1780 */ 47, 48, 197, 197, 197, 52, 197, 197, 197, 56,
  1022. /* 1790 */ 197, 197, 59, 60, 61, 62, 63, 64, 197, 197,
  1023. /* 1800 */ 67, 197, 197, 70, 71, 72, 73, 74, 75, 76,
  1024. /* 1810 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
  1025. /* 1820 */ 87, 88, 89, 197, 91, 27, 28, 197, 197, 197,
  1026. /* 1830 */ 197, 33, 34, 35, 36, 197, 197, 39, 40, 197,
  1027. /* 1840 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 197,
  1028. /* 1850 */ 197, 197, 197, 33, 34, 35, 36, 197, 197, 197,
  1029. /* 1860 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
  1030. /* 1870 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1031. /* 1880 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1032. /* 1890 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1033. /* 1900 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1034. /* 1910 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
  1035. /* 1920 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 197,
  1036. /* 1930 */ 197, 43, 197, 197, 46, 197, 197, 27, 28, 119,
  1037. /* 1940 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
  1038. /* 1950 */ 40, 197, 197, 43, 197, 197, 46, 197, 70, 71,
  1039. /* 1960 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1040. /* 1970 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1041. /* 1980 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1042. /* 1990 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1043. /* 2000 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
  1044. /* 2010 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 41,
  1045. /* 2020 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 119,
  1046. /* 2030 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
  1047. /* 2040 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
  1048. /* 2050 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1049. /* 2060 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1050. /* 2070 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1051. /* 2080 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1052. /* 2090 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
  1053. /* 2100 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 197,
  1054. /* 2110 */ 197, 43, 197, 197, 46, 197, 197, 27, 28, 119,
  1055. /* 2120 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
  1056. /* 2130 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
  1057. /* 2140 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1058. /* 2150 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1059. /* 2160 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1060. /* 2170 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1061. /* 2180 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
  1062. /* 2190 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 41,
  1063. /* 2200 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 119,
  1064. /* 2210 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
  1065. /* 2220 */ 40, 197, 197, 43, 197, 197, 46, 197, 70, 71,
  1066. /* 2230 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1067. /* 2240 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1068. /* 2250 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1069. /* 2260 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1070. /* 2270 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
  1071. /* 2280 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 41,
  1072. /* 2290 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 119,
  1073. /* 2300 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
  1074. /* 2310 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
  1075. /* 2320 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1076. /* 2330 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1077. /* 2340 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1078. /* 2350 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1079. /* 2360 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
  1080. /* 2370 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 197,
  1081. /* 2380 */ 197, 197, 197, 197, 46, 197, 197, 197, 197, 119,
  1082. /* 2390 */ 120, 121, 122, 197, 197, 197, 197, 197, 197, 197,
  1083. /* 2400 */ 197, 197, 197, 65, 197, 197, 197, 197, 70, 71,
  1084. /* 2410 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1085. /* 2420 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1086. /* 2430 */ 197, 27, 28, 197, 132, 197, 197, 33, 34, 35,
  1087. /* 2440 */ 36, 197, 197, 141, 40, 197, 197, 197, 197, 197,
  1088. /* 2450 */ 46, 197, 150, 151, 152, 197, 197, 119, 120, 121,
  1089. /* 2460 */ 122, 159, 197, 197, 162, 163, 164, 165, 166, 65,
  1090. /* 2470 */ 197, 197, 197, 197, 70, 71, 72, 73, 74, 75,
  1091. /* 2480 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
  1092. /* 2490 */ 86, 87, 88, 89, 90, 91, 197, 27, 28, 197,
  1093. /* 2500 */ 197, 197, 197, 33, 34, 35, 36, 197, 197, 197,
  1094. /* 2510 */ 40, 197, 197, 197, 197, 197, 46, 197, 197, 197,
  1095. /* 2520 */ 197, 197, 197, 119, 120, 121, 122, 2, 3, 4,
  1096. /* 2530 */ 5, 6, 7, 8, 9, 10, 11, 12, 197, 197,
  1097. /* 2540 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1098. /* 2550 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1099. /* 2560 */ 90, 91, 197, 197, 197, 197, 197, 197, 27, 28,
  1100. /* 2570 */ 197, 132, 197, 197, 33, 34, 35, 36, 139, 140,
  1101. /* 2580 */ 197, 40, 197, 197, 197, 197, 197, 46, 197, 119,
  1102. /* 2590 */ 120, 121, 122, 197, 197, 197, 197, 197, 159, 197,
  1103. /* 2600 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
  1104. /* 2610 */ 197, 70, 71, 72, 73, 74, 75, 76, 77, 78,
  1105. /* 2620 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
  1106. /* 2630 */ 89, 90, 91, 197, 92, 93, 94, 95, 96, 97,
  1107. /* 2640 */ 197, 197, 197, 197, 197, 197, 104, 105, 197, 107,
  1108. /* 2650 */ 197, 109, 110, 111, 112, 113, 197, 115, 116, 197,
  1109. /* 2660 */ 119, 120, 121, 122, 44, 45, 197, 47, 48, 197,
  1110. /* 2670 */ 197, 197, 52, 197, 197, 197, 56, 197, 197, 59,
  1111. /* 2680 */ 60, 61, 62, 63, 64, 197, 197, 67, 197, 197,
  1112. /* 2690 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  1113. /* 2700 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  1114. /* 2710 */ 45, 91, 197, 197, 197, 197, 197, 52, 197, 197,
  1115. /* 2720 */ 197, 56, 197, 197, 59, 60, 61, 62, 63, 64,
  1116. /* 2730 */ 197, 197, 197, 197, 197, 70, 71, 72, 73, 74,
  1117. /* 2740 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
  1118. /* 2750 */ 85, 86, 87, 88, 89, 127, 91, 197, 197, 131,
  1119. /* 2760 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 132,
  1120. /* 2770 */ 197, 143, 197, 145, 197, 197, 197, 149, 141, 197,
  1121. /* 2780 */ 197, 197, 197, 197, 156, 197, 197, 159, 151, 152,
  1122. /* 2790 */ 162, 163, 164, 165, 166, 197, 159, 197, 197, 162,
  1123. /* 2800 */ 163, 164, 165, 166, 197, 197, 197, 179, 180, 197,
  1124. /* 2810 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1125. /* 2820 */ 192, 193, 194, 195, 196, 197, 54, 55, 56, 57,
  1126. /* 2830 */ 58, 197, 197, 197, 197, 197, 197, 197, 66, 197,
  1127. /* 2840 */ 197, 197, 70, 71, 72, 73, 74, 75, 76, 77,
  1128. /* 2850 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
  1129. /* 2860 */ 88, 89, 197, 91, 197, 197, 54, 55, 56, 57,
  1130. /* 2870 */ 58, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1131. /* 2880 */ 197, 197, 70, 71, 72, 73, 74, 75, 76, 77,
  1132. /* 2890 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
  1133. /* 2900 */ 88, 89, 47, 91, 49, 50, 51, 52, 197, 197,
  1134. /* 2910 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1135. /* 2920 */ 197, 197, 197, 197, 197, 70, 71, 72, 73, 74,
  1136. /* 2930 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
  1137. /* 2940 */ 85, 86, 87, 88, 89, 197, 91, 49, 50, 51,
  1138. /* 2950 */ 52, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1139. /* 2960 */ 197, 197, 197, 197, 197, 197, 197, 197, 70, 71,
  1140. /* 2970 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1141. /* 2980 */ 82, 83, 84, 85, 86, 87, 88, 89, 132, 91,
  1142. /* 2990 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1143. /* 3000 */ 132, 197, 197, 197, 197, 137, 138, 139, 140, 197,
  1144. /* 3010 */ 197, 197, 156, 197, 197, 159, 197, 161, 162, 163,
  1145. /* 3020 */ 164, 165, 166, 197, 197, 197, 197, 159, 197, 132,
  1146. /* 3030 */ 162, 163, 164, 165, 166, 179, 180, 197, 197, 183,
  1147. /* 3040 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1148. /* 3050 */ 194, 195, 196, 156, 197, 197, 159, 160, 197, 162,
  1149. /* 3060 */ 163, 164, 165, 166, 197, 197, 197, 197, 197, 197,
  1150. /* 3070 */ 132, 197, 197, 197, 197, 197, 179, 180, 197, 197,
  1151. /* 3080 */ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
  1152. /* 3090 */ 193, 194, 195, 196, 156, 197, 197, 159, 160, 197,
  1153. /* 3100 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
  1154. /* 3110 */ 197, 132, 197, 197, 197, 197, 197, 179, 180, 197,
  1155. /* 3120 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1156. /* 3130 */ 192, 193, 194, 195, 196, 156, 197, 197, 159, 160,
  1157. /* 3140 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
  1158. /* 3150 */ 197, 197, 132, 197, 197, 197, 197, 197, 179, 180,
  1159. /* 3160 */ 197, 197, 183, 184, 185, 186, 187, 188, 189, 190,
  1160. /* 3170 */ 191, 192, 193, 194, 195, 196, 156, 197, 197, 159,
  1161. /* 3180 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
  1162. /* 3190 */ 197, 197, 197, 132, 197, 197, 197, 197, 197, 179,
  1163. /* 3200 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
  1164. /* 3210 */ 190, 191, 192, 193, 194, 195, 196, 156, 197, 197,
  1165. /* 3220 */ 159, 197, 197, 162, 163, 164, 165, 166, 197, 197,
  1166. /* 3230 */ 197, 197, 197, 197, 132, 197, 197, 197, 197, 197,
  1167. /* 3240 */ 179, 180, 197, 197, 183, 184, 185, 186, 187, 188,
  1168. /* 3250 */ 189, 190, 191, 192, 193, 194, 195, 196, 156, 197,
  1169. /* 3260 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1170. /* 3270 */ 197, 197, 197, 197, 197, 132, 197, 197, 197, 197,
  1171. /* 3280 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
  1172. /* 3290 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 156,
  1173. /* 3300 */ 197, 197, 159, 197, 197, 162, 163, 164, 165, 166,
  1174. /* 3310 */ 197, 197, 197, 197, 197, 197, 132, 197, 197, 197,
  1175. /* 3320 */ 197, 197, 179, 180, 197, 197, 183, 184, 185, 186,
  1176. /* 3330 */ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
  1177. /* 3340 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
  1178. /* 3350 */ 166, 197, 197, 197, 197, 197, 197, 132, 197, 197,
  1179. /* 3360 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
  1180. /* 3370 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  1181. /* 3380 */ 196, 156, 197, 197, 159, 197, 197, 162, 163, 164,
  1182. /* 3390 */ 165, 166, 197, 197, 197, 197, 197, 197, 132, 197,
  1183. /* 3400 */ 197, 197, 197, 197, 179, 180, 197, 197, 183, 184,
  1184. /* 3410 */ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
  1185. /* 3420 */ 195, 196, 156, 197, 197, 159, 197, 197, 162, 163,
  1186. /* 3430 */ 164, 165, 166, 197, 197, 197, 197, 197, 197, 132,
  1187. /* 3440 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
  1188. /* 3450 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1189. /* 3460 */ 194, 195, 196, 156, 197, 197, 159, 197, 197, 162,
  1190. /* 3470 */ 163, 164, 165, 166, 197, 197, 197, 197, 197, 197,
  1191. /* 3480 */ 132, 197, 197, 197, 197, 197, 179, 180, 197, 197,
  1192. /* 3490 */ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
  1193. /* 3500 */ 193, 194, 195, 196, 156, 197, 197, 159, 197, 197,
  1194. /* 3510 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
  1195. /* 3520 */ 132, 197, 197, 197, 197, 197, 197, 179, 180, 197,
  1196. /* 3530 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1197. /* 3540 */ 192, 193, 194, 195, 196, 197, 197, 159, 197, 197,
  1198. /* 3550 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
  1199. /* 3560 */ 197, 132, 197, 197, 197, 197, 197, 179, 180, 197,
  1200. /* 3570 */ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1201. /* 3580 */ 192, 193, 194, 195, 196, 156, 197, 197, 159, 197,
  1202. /* 3590 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
  1203. /* 3600 */ 197, 197, 132, 197, 197, 197, 197, 197, 179, 180,
  1204. /* 3610 */ 197, 197, 183, 184, 185, 186, 187, 188, 189, 190,
  1205. /* 3620 */ 191, 192, 193, 194, 195, 196, 156, 197, 197, 159,
  1206. /* 3630 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
  1207. /* 3640 */ 197, 197, 197, 132, 197, 197, 197, 197, 197, 179,
  1208. /* 3650 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
  1209. /* 3660 */ 190, 191, 192, 193, 194, 195, 196, 156, 197, 197,
  1210. /* 3670 */ 159, 197, 197, 162, 163, 164, 165, 166, 197, 197,
  1211. /* 3680 */ 197, 197, 197, 197, 132, 197, 197, 197, 197, 197,
  1212. /* 3690 */ 179, 180, 197, 197, 183, 184, 185, 186, 187, 188,
  1213. /* 3700 */ 189, 190, 191, 192, 193, 194, 195, 196, 156, 197,
  1214. /* 3710 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1215. /* 3720 */ 197, 197, 197, 197, 197, 132, 197, 197, 197, 197,
  1216. /* 3730 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
  1217. /* 3740 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 156,
  1218. /* 3750 */ 197, 197, 159, 197, 197, 162, 163, 164, 165, 166,
  1219. /* 3760 */ 197, 197, 197, 197, 197, 197, 132, 197, 197, 197,
  1220. /* 3770 */ 197, 197, 179, 180, 197, 197, 183, 184, 185, 186,
  1221. /* 3780 */ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
  1222. /* 3790 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
  1223. /* 3800 */ 166, 197, 197, 197, 197, 197, 197, 132, 197, 197,
  1224. /* 3810 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
  1225. /* 3820 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  1226. /* 3830 */ 196, 156, 197, 197, 159, 197, 197, 162, 163, 164,
  1227. /* 3840 */ 165, 166, 197, 197, 197, 197, 197, 197, 132, 197,
  1228. /* 3850 */ 197, 197, 197, 197, 179, 180, 197, 197, 183, 184,
  1229. /* 3860 */ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
  1230. /* 3870 */ 195, 196, 156, 197, 197, 159, 197, 197, 162, 163,
  1231. /* 3880 */ 164, 165, 166, 197, 197, 197, 197, 197, 197, 132,
  1232. /* 3890 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
  1233. /* 3900 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1234. /* 3910 */ 194, 195, 196, 156, 197, 197, 159, 197, 197, 162,
  1235. /* 3920 */ 163, 164, 165, 166, 197, 197, 197, 197, 197, 197,
  1236. /* 3930 */ 132, 197, 197, 197, 197, 197, 179, 180, 197, 197,
  1237. /* 3940 */ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
  1238. /* 3950 */ 193, 194, 195, 196, 156, 197, 197, 159, 197, 197,
  1239. /* 3960 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
  1240. /* 3970 */ 132, 197, 197, 197, 197, 197, 197, 179, 180, 197,
  1241. /* 3980 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1242. /* 3990 */ 192, 193, 194, 195, 196, 197, 197, 159, 197, 197,
  1243. /* 4000 */ 162, 163, 164, 165, 166, 197, 197, 197, 132, 197,
  1244. /* 4010 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
  1245. /* 4020 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1246. /* 4030 */ 192, 193, 194, 195, 196, 159, 197, 197, 162, 163,
  1247. /* 4040 */ 164, 165, 166, 197, 197, 197, 132, 197, 197, 197,
  1248. /* 4050 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
  1249. /* 4060 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1250. /* 4070 */ 194, 195, 196, 159, 197, 197, 162, 163, 164, 165,
  1251. /* 4080 */ 166, 197, 197, 197, 132, 197, 197, 197, 197, 197,
  1252. /* 4090 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
  1253. /* 4100 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  1254. /* 4110 */ 196, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1255. /* 4120 */ 197, 197, 132, 197, 197, 197, 197, 197, 197, 197,
  1256. /* 4130 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
  1257. /* 4140 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 159,
  1258. /* 4150 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
  1259. /* 4160 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 179,
  1260. /* 4170 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
  1261. /* 4180 */ 190, 191, 192, 193, 194, 195, 196, 159, 197, 197,
  1262. /* 4190 */ 162, 163, 164, 165, 166, 197, 197, 197, 132, 197,
  1263. /* 4200 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
  1264. /* 4210 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1265. /* 4220 */ 192, 193, 194, 195, 196, 159, 197, 197, 162, 163,
  1266. /* 4230 */ 164, 165, 166, 197, 197, 197, 132, 197, 197, 197,
  1267. /* 4240 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
  1268. /* 4250 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1269. /* 4260 */ 194, 195, 196, 159, 197, 197, 162, 163, 164, 165,
  1270. /* 4270 */ 166, 197, 197, 197, 132, 197, 197, 197, 197, 197,
  1271. /* 4280 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
  1272. /* 4290 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  1273. /* 4300 */ 196, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1274. /* 4310 */ 197, 197, 132, 197, 197, 197, 197, 197, 197, 197,
  1275. /* 4320 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
  1276. /* 4330 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 159,
  1277. /* 4340 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
  1278. /* 4350 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 179,
  1279. /* 4360 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
  1280. /* 4370 */ 190, 191, 192, 193, 194, 195, 196, 159, 197, 197,
  1281. /* 4380 */ 162, 163, 164, 165, 166, 197, 197, 197, 132, 197,
  1282. /* 4390 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
  1283. /* 4400 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  1284. /* 4410 */ 192, 193, 194, 195, 196, 159, 197, 197, 162, 163,
  1285. /* 4420 */ 164, 165, 166, 197, 197, 197, 132, 197, 197, 197,
  1286. /* 4430 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
  1287. /* 4440 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  1288. /* 4450 */ 194, 195, 196, 159, 197, 197, 162, 163, 164, 165,
  1289. /* 4460 */ 166, 197, 197, 197, 197, 197, 45, 197, 197, 197,
  1290. /* 4470 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
  1291. /* 4480 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
  1292. /* 4490 */ 196, 70, 71, 72, 73, 74, 75, 76, 77, 78,
  1293. /* 4500 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
  1294. /* 4510 */ 89, 197, 91, 197, 47, 197, 197, 197, 197, 197,
  1295. /* 4520 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1296. /* 4530 */ 132, 197, 197, 197, 197, 197, 197, 70, 71, 72,
  1297. /* 4540 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
  1298. /* 4550 */ 83, 84, 85, 86, 87, 88, 89, 159, 91, 197,
  1299. /* 4560 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
  1300. /* 4570 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
  1301. /* 4580 */ 197, 197, 184, 185, 186, 187, 188, 189, 190, 191,
  1302. /* 4590 */ 192, 193, 194, 195, 196, 197, 197, 197, 197, 197,
  1303. /* 4600 */ 197, 70, 71, 72, 73, 74, 75, 76, 77, 78,
  1304. /* 4610 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
  1305. /* 4620 */ 89, 132, 91, 197, 124, 125, 126, 127, 128, 197,
  1306. /* 4630 */ 130, 131, 132, 197, 134, 135, 197, 197, 197, 197,
  1307. /* 4640 */ 197, 197, 197, 143, 197, 145, 197, 197, 159, 149,
  1308. /* 4650 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 159,
  1309. /* 4660 */ 197, 197, 162, 163, 164, 165, 166, 197, 179, 180,
  1310. /* 4670 */ 132, 197, 197, 184, 185, 186, 187, 188, 189, 190,
  1311. /* 4680 */ 191, 192, 193, 194, 195, 197, 197, 197, 197, 197,
  1312. /* 4690 */ 197, 197, 197, 197, 197, 197, 197, 159, 197, 197,
  1313. /* 4700 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
  1314. /* 4710 */ 132, 197, 197, 197, 197, 197, 197, 179, 180, 197,
  1315. /* 4720 */ 132, 197, 184, 185, 186, 187, 188, 189, 190, 191,
  1316. /* 4730 */ 192, 193, 194, 145, 197, 197, 197, 159, 197, 197,
  1317. /* 4740 */ 162, 163, 164, 165, 166, 132, 197, 159, 197, 197,
  1318. /* 4750 */ 162, 163, 164, 165, 166, 197, 197, 179, 180, 197,
  1319. /* 4760 */ 197, 197, 184, 185, 186, 187, 188, 189, 190, 191,
  1320. /* 4770 */ 192, 193, 159, 197, 197, 162, 163, 164, 165, 166,
  1321. /* 4780 */ 197, 132, 197, 197, 197, 197, 197, 197, 197, 197,
  1322. /* 4790 */ 197, 197, 179, 180, 197, 197, 197, 184, 185, 186,
  1323. /* 4800 */ 187, 188, 189, 190, 191, 192, 197, 197, 159, 197,
  1324. /* 4810 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
  1325. /* 4820 */ 197, 197, 197, 197, 197, 197, 197, 197, 179, 180,
  1326. /* 4830 */ 197, 197, 197, 184, 185, 186, 187, 188, 189, 190,
  1327. /* 4840 */ 191, 197, 197, 197, 126, 127, 128, 197, 130, 131,
  1328. /* 4850 */ 132, 197, 134, 135, 197, 197, 197, 197, 132, 197,
  1329. /* 4860 */ 197, 143, 197, 145, 197, 197, 197, 149, 197, 197,
  1330. /* 4870 */ 132, 197, 197, 197, 197, 197, 197, 159, 197, 197,
  1331. /* 4880 */ 162, 163, 164, 165, 166, 159, 197, 197, 162, 163,
  1332. /* 4890 */ 164, 165, 166, 197, 197, 197, 197, 159, 197, 197,
  1333. /* 4900 */ 162, 163, 164, 165, 166, 179, 180, 197, 132, 197,
  1334. /* 4910 */ 184, 185, 186, 187, 188, 189, 190, 179, 180, 197,
  1335. /* 4920 */ 197, 197, 184, 185, 186, 187, 188, 189, 197, 197,
  1336. /* 4930 */ 197, 197, 197, 197, 197, 159, 197, 197, 162, 163,
  1337. /* 4940 */ 164, 165, 166, 197, 132, 197, 197, 197, 197, 197,
  1338. /* 4950 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 197,
  1339. /* 4960 */ 184, 185, 186, 187, 188, 189, 197, 197, 197, 197,
  1340. /* 4970 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 132,
  1341. /* 4980 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1342. /* 4990 */ 197, 179, 180, 197, 197, 197, 184, 185, 186, 187,
  1343. /* 5000 */ 188, 197, 197, 197, 197, 197, 159, 197, 197, 162,
  1344. /* 5010 */ 163, 164, 165, 166, 132, 197, 197, 197, 197, 197,
  1345. /* 5020 */ 197, 197, 197, 197, 132, 197, 179, 180, 197, 197,
  1346. /* 5030 */ 197, 184, 185, 186, 187, 188, 197, 197, 197, 197,
  1347. /* 5040 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1348. /* 5050 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 132,
  1349. /* 5060 */ 197, 179, 180, 197, 197, 197, 184, 185, 186, 187,
  1350. /* 5070 */ 188, 179, 180, 197, 197, 197, 184, 185, 186, 187,
  1351. /* 5080 */ 188, 197, 197, 197, 197, 197, 159, 197, 132, 162,
  1352. /* 5090 */ 163, 164, 165, 166, 197, 197, 197, 132, 197, 197,
  1353. /* 5100 */ 197, 197, 197, 197, 197, 197, 179, 180, 197, 197,
  1354. /* 5110 */ 197, 184, 185, 186, 187, 159, 197, 197, 162, 163,
  1355. /* 5120 */ 164, 165, 166, 197, 159, 132, 197, 162, 163, 164,
  1356. /* 5130 */ 165, 166, 197, 197, 197, 179, 180, 197, 197, 197,
  1357. /* 5140 */ 184, 185, 186, 187, 179, 180, 197, 197, 197, 184,
  1358. /* 5150 */ 185, 186, 159, 197, 197, 162, 163, 164, 165, 166,
  1359. /* 5160 */ 132, 197, 197, 197, 197, 137, 138, 139, 140, 197,
  1360. /* 5170 */ 197, 197, 179, 180, 132, 197, 197, 184, 185, 186,
  1361. /* 5180 */ 197, 197, 197, 197, 132, 197, 197, 159, 197, 197,
  1362. /* 5190 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
  1363. /* 5200 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1364. /* 5210 */ 197, 159, 132, 197, 162, 163, 164, 165, 166, 197,
  1365. /* 5220 */ 197, 179, 180, 132, 197, 197, 184, 185, 197, 197,
  1366. /* 5230 */ 197, 179, 180, 197, 197, 197, 184, 185, 197, 159,
  1367. /* 5240 */ 197, 197, 162, 163, 164, 165, 166, 132, 197, 197,
  1368. /* 5250 */ 159, 197, 197, 162, 163, 164, 165, 166, 132, 179,
  1369. /* 5260 */ 180, 197, 197, 197, 184, 185, 197, 197, 197, 197,
  1370. /* 5270 */ 179, 180, 197, 197, 159, 184, 185, 162, 163, 164,
  1371. /* 5280 */ 165, 166, 132, 197, 197, 159, 197, 197, 162, 163,
  1372. /* 5290 */ 164, 165, 166, 132, 179, 180, 197, 197, 197, 184,
  1373. /* 5300 */ 185, 197, 197, 197, 197, 179, 180, 197, 197, 159,
  1374. /* 5310 */ 184, 185, 162, 163, 164, 165, 166, 132, 197, 197,
  1375. /* 5320 */ 159, 197, 197, 162, 163, 164, 165, 166, 197, 179,
  1376. /* 5330 */ 180, 197, 197, 197, 184, 185, 197, 197, 197, 197,
  1377. /* 5340 */ 179, 180, 197, 197, 159, 184, 185, 162, 163, 164,
  1378. /* 5350 */ 165, 166, 197, 197, 132, 197, 197, 197, 197, 197,
  1379. /* 5360 */ 197, 197, 197, 197, 179, 180, 197, 197, 197, 184,
  1380. /* 5370 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1381. /* 5380 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
  1382. /* 5390 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
  1383. /* 5400 */ 197, 179, 180, 197, 197, 197, 184,
  1384. };
  1385. #define YY_SHIFT_USE_DFLT (-43)
  1386. #define YY_SHIFT_COUNT (296)
  1387. #define YY_SHIFT_MIN (-42)
  1388. #define YY_SHIFT_MAX (4531)
  1389. static const short yy_shift_ofst[] = {
  1390. /* 0 */ 2620, 63, 153, 153, -27, 153, 153, 153, 153, 153,
  1391. /* 10 */ 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
  1392. /* 20 */ 153, 153, 153, 243, 2404, 2404, 2404, 2338, 2270, 2248,
  1393. /* 30 */ 2180, 2158, 2090, 2068, 2000, 1978, 1910, 1888, 1820, 1798,
  1394. /* 40 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541,
  1395. /* 50 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541,
  1396. /* 60 */ 2541, 2541, 2541, 2541, 2541, 2541, 1733, 2541, 2541, 2541,
  1397. /* 70 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541,
  1398. /* 80 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2855, 2855, 2812,
  1399. /* 90 */ 2470, 2470, 2772, 2898, 2665, 4467, 4531, 4421, 4531, 4531,
  1400. /* 100 */ 459, 456, 395, 619, 619, 408, 12, 12, 411, 315,
  1401. /* 110 */ 847, 801, 837, 837, 837, 837, 801, 334, 102, 102,
  1402. /* 120 */ 388, 801, 801, 2542, 408, 408, -40, 330, 384, 807,
  1403. /* 130 */ 852, 852, 852, 852, 807, 825, 802, 807, 852, 803,
  1404. /* 140 */ 798, 801, 809, 809, 801, 2525, 495, 61, 61, 61,
  1405. /* 150 */ -33, 195, 72, 66, 200, -7, -7, -7, -28, 639,
  1406. /* 160 */ 592, 605, 590, 559, 560, 557, 530, 583, 527, 439,
  1407. /* 170 */ 391, 378, 437, 421, 387, 367, 246, 2, 312, 383,
  1408. /* 180 */ 348, 344, 366, 281, 267, 244, 257, 307, 231, 252,
  1409. /* 190 */ 93, 93, 106, 106, 106, 106, 3, 3, 106, 3,
  1410. /* 200 */ 311, 221, 41, 804, 800, 778, 774, 769, 773, 770,
  1411. /* 210 */ 810, 768, 763, 756, 747, 734, 757, 754, 755, 753,
  1412. /* 220 */ 751, 750, 690, 685, 675, 745, 674, 739, 669, 736,
  1413. /* 230 */ 662, 729, 659, 726, 658, 711, 707, 706, 703, 696,
  1414. /* 240 */ 688, 647, 689, 684, 636, 683, 679, 678, 677, 673,
  1415. /* 250 */ 672, 670, 650, 671, 709, 644, 610, 663, 657, 661,
  1416. /* 260 */ 655, 630, 621, 625, 613, 643, 640, 643, 638, 640,
  1417. /* 270 */ 635, 638, 635, 629, 561, 645, 552, 633, 564, 545,
  1418. /* 280 */ 534, 556, 515, 500, 428, 478, 396, 475, 410, 407,
  1419. /* 290 */ 333, 227, 180, 134, 5, -42, 48,
  1420. };
  1421. #define YY_REDUCE_USE_DFLT (-128)
  1422. #define YY_REDUCE_COUNT (144)
  1423. #define YY_REDUCE_MIN (-127)
  1424. #define YY_REDUCE_MAX (5222)
  1425. static const short yy_reduce_ofst[] = {
  1426. /* 0 */ 4500, 354, 280, 210, 712, 712, 1576, 1506, 1432, 1362,
  1427. /* 10 */ 1288, 1218, 1144, 1074, 1000, 930, 856, 786, 712, 642,
  1428. /* 20 */ 568, 498, 424, 2628, 2979, 2938, 2897, 2856, 3798, 3757,
  1429. /* 30 */ 3716, 3675, 3634, 3593, 3552, 3511, 3470, 3429, 3388, 3348,
  1430. /* 40 */ 3307, 3266, 3225, 3184, 3143, 3102, 3061, 3020, 4294, 4256,
  1431. /* 50 */ 4218, 4180, 4142, 4104, 4066, 4028, 3990, 3952, 3914, 3876,
  1432. /* 60 */ 3838, 4398, 4489, 4538, 4578, 4613, 4718, 4649, 4726, 4776,
  1433. /* 70 */ 4738, 4892, 4882, 4847, 4812, 4956, 4927, 4993, 4965, 5161,
  1434. /* 80 */ 5150, 5126, 5115, 5091, 5080, 5052, 5042, 5028, 2868, 2302,
  1435. /* 90 */ 5222, 5185, 2637, 2439, 4588, 400, 128, 617, 543, 473,
  1436. /* 100 */ 360, -127, 165, 52, -37, 90, 202, 34, 46, 46,
  1437. /* 110 */ 75, 46, 109, 56, 47, -34, -44, 491, 503, 481,
  1438. /* 120 */ 326, 419, 291, 720, 752, 722, 708, 681, 743, 758,
  1439. /* 130 */ 737, 731, 728, 727, 730, 686, 735, 723, 716, 699,
  1440. /* 140 */ 697, 717, 681, 667, 713,
  1441. };
  1442. static const YYACTIONTYPE yy_default[] = {
  1443. /* 0 */ 813, 813, 741, 739, 813, 740, 813, 813, 813, 813,
  1444. /* 10 */ 813, 813, 813, 813, 813, 813, 813, 813, 738, 813,
  1445. /* 20 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1446. /* 30 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1447. /* 40 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1448. /* 50 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1449. /* 60 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1450. /* 70 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1451. /* 80 */ 813, 813, 813, 813, 813, 813, 813, 544, 544, 813,
  1452. /* 90 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1453. /* 100 */ 606, 598, 813, 602, 594, 813, 562, 554, 813, 813,
  1454. /* 110 */ 813, 813, 604, 600, 596, 592, 813, 813, 558, 550,
  1455. /* 120 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 538,
  1456. /* 130 */ 560, 556, 552, 548, 536, 813, 813, 614, 813, 620,
  1457. /* 140 */ 619, 813, 813, 742, 813, 767, 813, 786, 785, 784,
  1458. /* 150 */ 760, 813, 813, 813, 813, 775, 774, 773, 623, 813,
  1459. /* 160 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1460. /* 170 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1461. /* 180 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 797,
  1462. /* 190 */ 788, 787, 783, 782, 781, 780, 778, 777, 779, 776,
  1463. /* 200 */ 813, 813, 813, 813, 813, 813, 565, 563, 813, 813,
  1464. /* 210 */ 543, 813, 813, 813, 813, 813, 813, 689, 813, 813,
  1465. /* 220 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1466. /* 230 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1467. /* 240 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1468. /* 250 */ 813, 813, 813, 813, 631, 813, 813, 813, 813, 813,
  1469. /* 260 */ 813, 813, 813, 813, 813, 796, 794, 795, 792, 793,
  1470. /* 270 */ 790, 791, 789, 813, 813, 813, 813, 813, 813, 813,
  1471. /* 280 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
  1472. /* 290 */ 813, 813, 813, 813, 813, 813, 623, 526, 541, 537,
  1473. /* 300 */ 540, 545, 568, 567, 564, 566, 561, 559, 557, 555,
  1474. /* 310 */ 553, 551, 549, 547, 546, 542, 539, 535, 532, 531,
  1475. /* 320 */ 736, 718, 717, 719, 716, 712, 711, 710, 709, 714,
  1476. /* 330 */ 713, 715, 735, 730, 723, 708, 707, 703, 702, 698,
  1477. /* 340 */ 697, 696, 695, 694, 693, 692, 673, 737, 691, 690,
  1478. /* 350 */ 688, 687, 685, 734, 733, 729, 728, 727, 726, 731,
  1479. /* 360 */ 725, 732, 724, 722, 706, 701, 721, 705, 700, 720,
  1480. /* 370 */ 704, 699, 684, 680, 679, 678, 677, 676, 675, 683,
  1481. /* 380 */ 682, 681, 674, 672, 671, 608, 609, 612, 615, 616,
  1482. /* 390 */ 613, 611, 610, 607, 574, 573, 572, 571, 570, 578,
  1483. /* 400 */ 686, 577, 576, 588, 587, 586, 585, 584, 583, 582,
  1484. /* 410 */ 581, 580, 579, 589, 605, 603, 601, 599, 628, 630,
  1485. /* 420 */ 629, 627, 597, 595, 636, 635, 634, 633, 632, 593,
  1486. /* 430 */ 618, 617, 591, 626, 625, 624, 569, 590, 575, 534,
  1487. /* 440 */ 812, 758, 759, 757, 756, 768, 755, 754, 753, 761,
  1488. /* 450 */ 811, 810, 809, 808, 807, 806, 805, 804, 803, 802,
  1489. /* 460 */ 801, 800, 799, 798, 772, 771, 770, 769, 767, 766,
  1490. /* 470 */ 765, 764, 763, 762, 752, 750, 749, 748, 747, 746,
  1491. /* 480 */ 745, 744, 743, 751, 670, 669, 668, 667, 666, 665,
  1492. /* 490 */ 664, 663, 662, 661, 660, 659, 658, 657, 656, 655,
  1493. /* 500 */ 654, 653, 652, 651, 650, 649, 648, 647, 646, 645,
  1494. /* 510 */ 644, 643, 642, 641, 640, 639, 638, 637, 622, 621,
  1495. /* 520 */ 533, 530, 529, 528, 527,
  1496. };
  1497. /* The next table maps tokens into fallback tokens. If a construct
  1498. ** like the following:
  1499. **
  1500. ** %fallback ID X Y Z.
  1501. **
  1502. ** appears in the grammar, then ID becomes a fallback token for X, Y,
  1503. ** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
  1504. ** but it does not parse, the type of the token is changed to ID and
  1505. ** the parse is retried before an error is thrown.
  1506. */
  1507. #ifdef YYFALLBACK
  1508. static const YYCODETYPE yyFallback[] = {
  1509. };
  1510. #endif /* YYFALLBACK */
  1511. /* The following structure represents a single element of the
  1512. ** parser's stack. Information stored includes:
  1513. **
  1514. ** + The state number for the parser at this level of the stack.
  1515. **
  1516. ** + The value of the token stored at this level of the stack.
  1517. ** (In other words, the "major" token.)
  1518. **
  1519. ** + The semantic value stored at this level of the stack. This is
  1520. ** the information used by the action routines in the grammar.
  1521. ** It is sometimes called the "minor" token.
  1522. */
  1523. struct yyStackEntry {
  1524. YYACTIONTYPE stateno; /* The state-number */
  1525. YYCODETYPE major; /* The major token value. This is the code
  1526. ** number for the token at this stack level */
  1527. YYMINORTYPE minor; /* The user-supplied minor token value. This
  1528. ** is the value of the token */
  1529. };
  1530. typedef struct yyStackEntry yyStackEntry;
  1531. /* The state of the parser is completely contained in an instance of
  1532. ** the following structure */
  1533. struct yyParser {
  1534. int yyidx; /* Index of top element in stack */
  1535. #ifdef YYTRACKMAXSTACKDEPTH
  1536. int yyidxMax; /* Maximum value of yyidx */
  1537. #endif
  1538. int yyerrcnt; /* Shifts left before out of the error */
  1539. ParseHLSLARG_SDECL /* A place to hold %extra_argument */
  1540. #if YYSTACKDEPTH<=0
  1541. int yystksz; /* Current side of the stack */
  1542. yyStackEntry *yystack; /* The parser's stack */
  1543. #else
  1544. yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
  1545. #endif
  1546. };
  1547. typedef struct yyParser yyParser;
  1548. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  1549. #include <stdio.h>
  1550. static FILE *yyTraceFILE = 0;
  1551. static char *yyTracePrompt = 0;
  1552. #endif /* NDEBUG */
  1553. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  1554. /*
  1555. ** Turn parser tracing on by giving a stream to which to write the trace
  1556. ** and a prompt to preface each trace message. Tracing is turned off
  1557. ** by making either argument NULL
  1558. **
  1559. ** Inputs:
  1560. ** <ul>
  1561. ** <li> A FILE* to which trace output should be written.
  1562. ** If NULL, then tracing is turned off.
  1563. ** <li> A prefix string written at the beginning of every
  1564. ** line of trace output. If NULL, then tracing is
  1565. ** turned off.
  1566. ** </ul>
  1567. **
  1568. ** Outputs:
  1569. ** None.
  1570. */
  1571. #if __MOJOSHADER__
  1572. static
  1573. #endif
  1574. void ParseHLSLTrace(FILE *TraceFILE, char *zTracePrompt){
  1575. yyTraceFILE = TraceFILE;
  1576. yyTracePrompt = zTracePrompt;
  1577. if( yyTraceFILE==0 ) yyTracePrompt = 0;
  1578. else if( yyTracePrompt==0 ) yyTraceFILE = 0;
  1579. }
  1580. #endif /* NDEBUG */
  1581. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  1582. /* For tracing shifts, the names of all terminals and nonterminals
  1583. ** are required. The following table supplies these names */
  1584. static const char *const yyTokenName[] = {
  1585. "$", "COMMA", "ASSIGN", "ADDASSIGN",
  1586. "SUBASSIGN", "MULASSIGN", "DIVASSIGN", "MODASSIGN",
  1587. "LSHIFTASSIGN", "RSHIFTASSIGN", "ANDASSIGN", "ORASSIGN",
  1588. "XORASSIGN", "QUESTION", "OROR", "ANDAND",
  1589. "OR", "XOR", "AND", "EQL",
  1590. "NEQ", "LT", "LEQ", "GT",
  1591. "GEQ", "LSHIFT", "RSHIFT", "PLUS",
  1592. "MINUS", "STAR", "SLASH", "PERCENT",
  1593. "TYPECAST", "EXCLAMATION", "COMPLEMENT", "MINUSMINUS",
  1594. "PLUSPLUS", "DOT", "LBRACKET", "RBRACKET",
  1595. "LPAREN", "RPAREN", "ELSE", "SEMICOLON",
  1596. "TYPEDEF", "CONST", "IDENTIFIER", "VOID",
  1597. "INLINE", "IN", "INOUT", "OUT",
  1598. "UNIFORM", "COLON", "LINEAR", "CENTROID",
  1599. "NOINTERPOLATION", "NOPERSPECTIVE", "SAMPLE", "EXTERN",
  1600. "SHARED", "STATIC", "VOLATILE", "ROWMAJOR",
  1601. "COLUMNMAJOR", "LBRACE", "RBRACE", "STRUCT",
  1602. "PACKOFFSET", "REGISTER", "USERTYPE", "SAMPLER",
  1603. "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
  1604. "SAMPLER_STATE", "SAMPLERSTATE", "SAMPLERCOMPARISONSTATE", "BOOL",
  1605. "INT", "UINT", "HALF", "FLOAT",
  1606. "DOUBLE", "STRING", "SNORM", "UNORM",
  1607. "BUFFER", "VECTOR", "INT_CONSTANT", "MATRIX",
  1608. "ISOLATE", "MAXINSTRUCTIONCOUNT", "NOEXPRESSIONOPTIMIZATIONS", "REMOVEUNUSEDINPUTS",
  1609. "UNUSED", "XPS", "BREAK", "CONTINUE",
  1610. "DISCARD", "DO", "WHILE", "RETURN",
  1611. "UNROLL", "LOOP", "FOR", "BRANCH",
  1612. "IF", "FLATTEN", "IFALL", "IFANY",
  1613. "PREDICATE", "PREDICATEBLOCK", "SWITCH", "FORCECASE",
  1614. "CALL", "CASE", "DEFAULT", "FLOAT_CONSTANT",
  1615. "STRING_LITERAL", "TRUE", "FALSE", "error",
  1616. "shader", "compilation_units", "compilation_unit", "variable_declaration",
  1617. "function_signature", "statement_block", "typedef", "struct_declaration",
  1618. "datatype", "scalar_or_array", "function_storageclass", "function_details",
  1619. "semantic", "function_parameters", "function_parameter_list", "function_parameter",
  1620. "input_modifier", "interpolation_mod", "initializer", "variable_attribute_list",
  1621. "variable_declaration_details_list", "variable_attribute", "variable_declaration_details", "annotations",
  1622. "variable_lowlevel", "struct_intro", "struct_member_list", "struct_member",
  1623. "struct_member_details", "struct_member_item_list", "packoffset", "register",
  1624. "expression", "annotation_list", "annotation", "datatype_scalar",
  1625. "initializer_block_list", "initializer_block", "intrinsic_datatype", "datatype_vector",
  1626. "datatype_matrix", "datatype_sampler", "datatype_buffer", "statement_list",
  1627. "statement", "statement_attribute", "do_intro", "while_intro",
  1628. "if_intro", "switch_intro", "switch_case_list", "for_statement",
  1629. "for_intro", "for_details", "switch_case", "primary_expr",
  1630. "postfix_expr", "arguments", "argument_list", "assignment_expr",
  1631. "unary_expr", "cast_expr", "multiplicative_expr", "additive_expr",
  1632. "shift_expr", "relational_expr", "equality_expr", "and_expr",
  1633. "exclusive_or_expr", "inclusive_or_expr", "logical_and_expr", "logical_or_expr",
  1634. "conditional_expr",
  1635. };
  1636. #endif /* NDEBUG */
  1637. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  1638. /* For tracing reduce actions, the names of all rules are required.
  1639. */
  1640. static const char *const yyRuleName[] = {
  1641. /* 0 */ "shader ::= compilation_units",
  1642. /* 1 */ "compilation_units ::= compilation_unit",
  1643. /* 2 */ "compilation_units ::= compilation_units compilation_unit",
  1644. /* 3 */ "compilation_unit ::= variable_declaration",
  1645. /* 4 */ "compilation_unit ::= function_signature SEMICOLON",
  1646. /* 5 */ "compilation_unit ::= function_signature statement_block",
  1647. /* 6 */ "compilation_unit ::= typedef",
  1648. /* 7 */ "compilation_unit ::= struct_declaration SEMICOLON",
  1649. /* 8 */ "typedef ::= TYPEDEF CONST datatype scalar_or_array",
  1650. /* 9 */ "typedef ::= TYPEDEF datatype scalar_or_array",
  1651. /* 10 */ "function_signature ::= function_storageclass function_details semantic",
  1652. /* 11 */ "function_signature ::= function_storageclass function_details",
  1653. /* 12 */ "function_signature ::= function_details semantic",
  1654. /* 13 */ "function_signature ::= function_details",
  1655. /* 14 */ "function_details ::= datatype IDENTIFIER LPAREN function_parameters RPAREN",
  1656. /* 15 */ "function_details ::= VOID IDENTIFIER LPAREN function_parameters RPAREN",
  1657. /* 16 */ "function_storageclass ::= INLINE",
  1658. /* 17 */ "function_parameters ::= VOID",
  1659. /* 18 */ "function_parameters ::= function_parameter_list",
  1660. /* 19 */ "function_parameters ::=",
  1661. /* 20 */ "function_parameter_list ::= function_parameter",
  1662. /* 21 */ "function_parameter_list ::= function_parameter_list COMMA function_parameter",
  1663. /* 22 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod initializer",
  1664. /* 23 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod",
  1665. /* 24 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic initializer",
  1666. /* 25 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic",
  1667. /* 26 */ "function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod initializer",
  1668. /* 27 */ "function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod",
  1669. /* 28 */ "function_parameter ::= input_modifier datatype IDENTIFIER initializer",
  1670. /* 29 */ "function_parameter ::= input_modifier datatype IDENTIFIER",
  1671. /* 30 */ "function_parameter ::= datatype IDENTIFIER semantic interpolation_mod initializer",
  1672. /* 31 */ "function_parameter ::= datatype IDENTIFIER semantic interpolation_mod",
  1673. /* 32 */ "function_parameter ::= datatype IDENTIFIER semantic initializer",
  1674. /* 33 */ "function_parameter ::= datatype IDENTIFIER semantic",
  1675. /* 34 */ "function_parameter ::= datatype IDENTIFIER interpolation_mod initializer",
  1676. /* 35 */ "function_parameter ::= datatype IDENTIFIER interpolation_mod",
  1677. /* 36 */ "function_parameter ::= datatype IDENTIFIER initializer",
  1678. /* 37 */ "function_parameter ::= datatype IDENTIFIER",
  1679. /* 38 */ "input_modifier ::= IN",
  1680. /* 39 */ "input_modifier ::= INOUT",
  1681. /* 40 */ "input_modifier ::= OUT",
  1682. /* 41 */ "input_modifier ::= IN OUT",
  1683. /* 42 */ "input_modifier ::= OUT IN",
  1684. /* 43 */ "input_modifier ::= UNIFORM",
  1685. /* 44 */ "semantic ::= COLON IDENTIFIER",
  1686. /* 45 */ "interpolation_mod ::= LINEAR",
  1687. /* 46 */ "interpolation_mod ::= CENTROID",
  1688. /* 47 */ "interpolation_mod ::= NOINTERPOLATION",
  1689. /* 48 */ "interpolation_mod ::= NOPERSPECTIVE",
  1690. /* 49 */ "interpolation_mod ::= SAMPLE",
  1691. /* 50 */ "variable_declaration ::= variable_attribute_list datatype variable_declaration_details_list SEMICOLON",
  1692. /* 51 */ "variable_declaration ::= datatype variable_declaration_details_list SEMICOLON",
  1693. /* 52 */ "variable_declaration ::= struct_declaration variable_declaration_details_list SEMICOLON",
  1694. /* 53 */ "variable_attribute_list ::= variable_attribute",
  1695. /* 54 */ "variable_attribute_list ::= variable_attribute_list variable_attribute",
  1696. /* 55 */ "variable_attribute ::= EXTERN",
  1697. /* 56 */ "variable_attribute ::= NOINTERPOLATION",
  1698. /* 57 */ "variable_attribute ::= SHARED",
  1699. /* 58 */ "variable_attribute ::= STATIC",
  1700. /* 59 */ "variable_attribute ::= UNIFORM",
  1701. /* 60 */ "variable_attribute ::= VOLATILE",
  1702. /* 61 */ "variable_attribute ::= CONST",
  1703. /* 62 */ "variable_attribute ::= ROWMAJOR",
  1704. /* 63 */ "variable_attribute ::= COLUMNMAJOR",
  1705. /* 64 */ "variable_declaration_details_list ::= variable_declaration_details",
  1706. /* 65 */ "variable_declaration_details_list ::= variable_declaration_details_list COMMA variable_declaration_details",
  1707. /* 66 */ "variable_declaration_details ::= scalar_or_array semantic annotations initializer variable_lowlevel",
  1708. /* 67 */ "variable_declaration_details ::= scalar_or_array semantic annotations initializer",
  1709. /* 68 */ "variable_declaration_details ::= scalar_or_array semantic annotations variable_lowlevel",
  1710. /* 69 */ "variable_declaration_details ::= scalar_or_array semantic annotations",
  1711. /* 70 */ "variable_declaration_details ::= scalar_or_array semantic initializer variable_lowlevel",
  1712. /* 71 */ "variable_declaration_details ::= scalar_or_array semantic initializer",
  1713. /* 72 */ "variable_declaration_details ::= scalar_or_array semantic variable_lowlevel",
  1714. /* 73 */ "variable_declaration_details ::= scalar_or_array semantic",
  1715. /* 74 */ "variable_declaration_details ::= scalar_or_array annotations initializer variable_lowlevel",
  1716. /* 75 */ "variable_declaration_details ::= scalar_or_array annotations initializer",
  1717. /* 76 */ "variable_declaration_details ::= scalar_or_array annotations variable_lowlevel",
  1718. /* 77 */ "variable_declaration_details ::= scalar_or_array annotations",
  1719. /* 78 */ "variable_declaration_details ::= scalar_or_array initializer variable_lowlevel",
  1720. /* 79 */ "variable_declaration_details ::= scalar_or_array initializer",
  1721. /* 80 */ "variable_declaration_details ::= scalar_or_array variable_lowlevel",
  1722. /* 81 */ "variable_declaration_details ::= scalar_or_array",
  1723. /* 82 */ "struct_declaration ::= struct_intro LBRACE struct_member_list RBRACE",
  1724. /* 83 */ "struct_intro ::= STRUCT IDENTIFIER",
  1725. /* 84 */ "struct_member_list ::= struct_member",
  1726. /* 85 */ "struct_member_list ::= struct_member_list struct_member",
  1727. /* 86 */ "struct_member ::= interpolation_mod struct_member_details",
  1728. /* 87 */ "struct_member ::= struct_member_details",
  1729. /* 88 */ "struct_member_details ::= datatype struct_member_item_list SEMICOLON",
  1730. /* 89 */ "struct_member_item_list ::= scalar_or_array",
  1731. /* 90 */ "struct_member_item_list ::= scalar_or_array semantic",
  1732. /* 91 */ "struct_member_item_list ::= struct_member_item_list COMMA IDENTIFIER",
  1733. /* 92 */ "variable_lowlevel ::= packoffset register",
  1734. /* 93 */ "variable_lowlevel ::= register packoffset",
  1735. /* 94 */ "variable_lowlevel ::= packoffset",
  1736. /* 95 */ "variable_lowlevel ::= register",
  1737. /* 96 */ "scalar_or_array ::= IDENTIFIER LBRACKET RBRACKET",
  1738. /* 97 */ "scalar_or_array ::= IDENTIFIER LBRACKET expression RBRACKET",
  1739. /* 98 */ "scalar_or_array ::= IDENTIFIER",
  1740. /* 99 */ "packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER DOT IDENTIFIER RPAREN",
  1741. /* 100 */ "packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER RPAREN",
  1742. /* 101 */ "register ::= COLON REGISTER LPAREN IDENTIFIER RPAREN",
  1743. /* 102 */ "annotations ::= LT annotation_list GT",
  1744. /* 103 */ "annotation_list ::= annotation",
  1745. /* 104 */ "annotation_list ::= annotation_list annotation",
  1746. /* 105 */ "annotation ::= datatype_scalar initializer SEMICOLON",
  1747. /* 106 */ "initializer_block_list ::= expression",
  1748. /* 107 */ "initializer_block_list ::= LBRACE initializer_block_list RBRACE",
  1749. /* 108 */ "initializer_block_list ::= initializer_block_list COMMA initializer_block_list",
  1750. /* 109 */ "initializer_block ::= LBRACE initializer_block_list RBRACE",
  1751. /* 110 */ "initializer ::= ASSIGN initializer_block",
  1752. /* 111 */ "initializer ::= ASSIGN expression",
  1753. /* 112 */ "intrinsic_datatype ::= datatype_vector",
  1754. /* 113 */ "intrinsic_datatype ::= datatype_matrix",
  1755. /* 114 */ "intrinsic_datatype ::= datatype_scalar",
  1756. /* 115 */ "intrinsic_datatype ::= datatype_sampler",
  1757. /* 116 */ "intrinsic_datatype ::= datatype_buffer",
  1758. /* 117 */ "datatype ::= intrinsic_datatype",
  1759. /* 118 */ "datatype ::= USERTYPE",
  1760. /* 119 */ "datatype_sampler ::= SAMPLER",
  1761. /* 120 */ "datatype_sampler ::= SAMPLER1D",
  1762. /* 121 */ "datatype_sampler ::= SAMPLER2D",
  1763. /* 122 */ "datatype_sampler ::= SAMPLER3D",
  1764. /* 123 */ "datatype_sampler ::= SAMPLERCUBE",
  1765. /* 124 */ "datatype_sampler ::= SAMPLER_STATE",
  1766. /* 125 */ "datatype_sampler ::= SAMPLERSTATE",
  1767. /* 126 */ "datatype_sampler ::= SAMPLERCOMPARISONSTATE",
  1768. /* 127 */ "datatype_scalar ::= BOOL",
  1769. /* 128 */ "datatype_scalar ::= INT",
  1770. /* 129 */ "datatype_scalar ::= UINT",
  1771. /* 130 */ "datatype_scalar ::= HALF",
  1772. /* 131 */ "datatype_scalar ::= FLOAT",
  1773. /* 132 */ "datatype_scalar ::= DOUBLE",
  1774. /* 133 */ "datatype_scalar ::= STRING",
  1775. /* 134 */ "datatype_scalar ::= SNORM FLOAT",
  1776. /* 135 */ "datatype_scalar ::= UNORM FLOAT",
  1777. /* 136 */ "datatype_buffer ::= BUFFER LT BOOL GT",
  1778. /* 137 */ "datatype_buffer ::= BUFFER LT INT GT",
  1779. /* 138 */ "datatype_buffer ::= BUFFER LT UINT GT",
  1780. /* 139 */ "datatype_buffer ::= BUFFER LT HALF GT",
  1781. /* 140 */ "datatype_buffer ::= BUFFER LT FLOAT GT",
  1782. /* 141 */ "datatype_buffer ::= BUFFER LT DOUBLE GT",
  1783. /* 142 */ "datatype_buffer ::= BUFFER LT SNORM FLOAT GT",
  1784. /* 143 */ "datatype_buffer ::= BUFFER LT UNORM FLOAT GT",
  1785. /* 144 */ "datatype_vector ::= VECTOR LT datatype_scalar COMMA INT_CONSTANT GT",
  1786. /* 145 */ "datatype_matrix ::= MATRIX LT datatype_scalar COMMA INT_CONSTANT COMMA INT_CONSTANT GT",
  1787. /* 146 */ "statement_block ::= LBRACE RBRACE",
  1788. /* 147 */ "statement_block ::= LBRACE statement_list RBRACE",
  1789. /* 148 */ "statement_list ::= statement",
  1790. /* 149 */ "statement_list ::= statement_list statement",
  1791. /* 150 */ "statement_attribute ::= ISOLATE",
  1792. /* 151 */ "statement_attribute ::= MAXINSTRUCTIONCOUNT LPAREN INT_CONSTANT RPAREN",
  1793. /* 152 */ "statement_attribute ::= NOEXPRESSIONOPTIMIZATIONS",
  1794. /* 153 */ "statement_attribute ::= REMOVEUNUSEDINPUTS",
  1795. /* 154 */ "statement_attribute ::= UNUSED",
  1796. /* 155 */ "statement_attribute ::= XPS",
  1797. /* 156 */ "statement ::= BREAK SEMICOLON",
  1798. /* 157 */ "statement ::= CONTINUE SEMICOLON",
  1799. /* 158 */ "statement ::= DISCARD SEMICOLON",
  1800. /* 159 */ "statement ::= LBRACKET statement_attribute RBRACKET statement_block",
  1801. /* 160 */ "statement ::= variable_declaration",
  1802. /* 161 */ "statement ::= struct_declaration SEMICOLON",
  1803. /* 162 */ "statement ::= do_intro DO statement WHILE LPAREN expression RPAREN SEMICOLON",
  1804. /* 163 */ "statement ::= while_intro LPAREN expression RPAREN statement",
  1805. /* 164 */ "statement ::= if_intro LPAREN expression RPAREN statement",
  1806. /* 165 */ "statement ::= if_intro LPAREN expression RPAREN statement ELSE statement",
  1807. /* 166 */ "statement ::= switch_intro LPAREN expression RPAREN LBRACE switch_case_list RBRACE",
  1808. /* 167 */ "statement ::= typedef",
  1809. /* 168 */ "statement ::= SEMICOLON",
  1810. /* 169 */ "statement ::= expression SEMICOLON",
  1811. /* 170 */ "statement ::= RETURN SEMICOLON",
  1812. /* 171 */ "statement ::= RETURN expression SEMICOLON",
  1813. /* 172 */ "statement ::= statement_block",
  1814. /* 173 */ "statement ::= for_statement",
  1815. /* 174 */ "while_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET WHILE",
  1816. /* 175 */ "while_intro ::= LBRACKET UNROLL RBRACKET WHILE",
  1817. /* 176 */ "while_intro ::= LBRACKET LOOP RBRACKET WHILE",
  1818. /* 177 */ "while_intro ::= WHILE",
  1819. /* 178 */ "for_statement ::= for_intro for_details",
  1820. /* 179 */ "for_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET FOR",
  1821. /* 180 */ "for_intro ::= LBRACKET UNROLL RBRACKET FOR",
  1822. /* 181 */ "for_intro ::= LBRACKET LOOP RBRACKET FOR",
  1823. /* 182 */ "for_intro ::= FOR",
  1824. /* 183 */ "for_details ::= LPAREN expression SEMICOLON expression SEMICOLON expression RPAREN statement",
  1825. /* 184 */ "for_details ::= LPAREN SEMICOLON SEMICOLON RPAREN statement",
  1826. /* 185 */ "for_details ::= LPAREN SEMICOLON SEMICOLON expression RPAREN statement",
  1827. /* 186 */ "for_details ::= LPAREN SEMICOLON expression SEMICOLON RPAREN statement",
  1828. /* 187 */ "for_details ::= LPAREN SEMICOLON expression SEMICOLON expression RPAREN statement",
  1829. /* 188 */ "for_details ::= LPAREN expression SEMICOLON SEMICOLON RPAREN statement",
  1830. /* 189 */ "for_details ::= LPAREN expression SEMICOLON SEMICOLON expression RPAREN statement",
  1831. /* 190 */ "for_details ::= LPAREN expression SEMICOLON expression SEMICOLON RPAREN statement",
  1832. /* 191 */ "for_details ::= LPAREN variable_declaration expression SEMICOLON expression RPAREN statement",
  1833. /* 192 */ "for_details ::= LPAREN variable_declaration SEMICOLON RPAREN statement",
  1834. /* 193 */ "for_details ::= LPAREN variable_declaration SEMICOLON expression RPAREN statement",
  1835. /* 194 */ "for_details ::= LPAREN variable_declaration expression SEMICOLON RPAREN statement",
  1836. /* 195 */ "do_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET DO",
  1837. /* 196 */ "do_intro ::= LBRACKET UNROLL RBRACKET DO",
  1838. /* 197 */ "do_intro ::= LBRACKET LOOP RBRACKET DO",
  1839. /* 198 */ "do_intro ::= DO",
  1840. /* 199 */ "if_intro ::= LBRACKET BRANCH RBRACKET IF",
  1841. /* 200 */ "if_intro ::= LBRACKET FLATTEN RBRACKET IF",
  1842. /* 201 */ "if_intro ::= LBRACKET IFALL RBRACKET IF",
  1843. /* 202 */ "if_intro ::= LBRACKET IFANY RBRACKET IF",
  1844. /* 203 */ "if_intro ::= LBRACKET PREDICATE RBRACKET IF",
  1845. /* 204 */ "if_intro ::= LBRACKET PREDICATEBLOCK RBRACKET IF",
  1846. /* 205 */ "if_intro ::= IF",
  1847. /* 206 */ "switch_intro ::= LBRACKET FLATTEN RBRACKET SWITCH",
  1848. /* 207 */ "switch_intro ::= LBRACKET BRANCH RBRACKET SWITCH",
  1849. /* 208 */ "switch_intro ::= LBRACKET FORCECASE RBRACKET SWITCH",
  1850. /* 209 */ "switch_intro ::= LBRACKET CALL RBRACKET SWITCH",
  1851. /* 210 */ "switch_intro ::= SWITCH",
  1852. /* 211 */ "switch_case_list ::= switch_case",
  1853. /* 212 */ "switch_case_list ::= switch_case_list switch_case",
  1854. /* 213 */ "switch_case ::= CASE expression COLON statement_list",
  1855. /* 214 */ "switch_case ::= CASE expression COLON",
  1856. /* 215 */ "switch_case ::= DEFAULT COLON statement_list",
  1857. /* 216 */ "switch_case ::= DEFAULT COLON",
  1858. /* 217 */ "primary_expr ::= IDENTIFIER",
  1859. /* 218 */ "primary_expr ::= INT_CONSTANT",
  1860. /* 219 */ "primary_expr ::= FLOAT_CONSTANT",
  1861. /* 220 */ "primary_expr ::= STRING_LITERAL",
  1862. /* 221 */ "primary_expr ::= TRUE",
  1863. /* 222 */ "primary_expr ::= FALSE",
  1864. /* 223 */ "primary_expr ::= LPAREN expression RPAREN",
  1865. /* 224 */ "postfix_expr ::= primary_expr",
  1866. /* 225 */ "postfix_expr ::= postfix_expr LBRACKET expression RBRACKET",
  1867. /* 226 */ "postfix_expr ::= IDENTIFIER arguments",
  1868. /* 227 */ "postfix_expr ::= datatype arguments",
  1869. /* 228 */ "postfix_expr ::= postfix_expr DOT IDENTIFIER",
  1870. /* 229 */ "postfix_expr ::= postfix_expr PLUSPLUS",
  1871. /* 230 */ "postfix_expr ::= postfix_expr MINUSMINUS",
  1872. /* 231 */ "arguments ::= LPAREN RPAREN",
  1873. /* 232 */ "arguments ::= LPAREN argument_list RPAREN",
  1874. /* 233 */ "argument_list ::= assignment_expr",
  1875. /* 234 */ "argument_list ::= argument_list COMMA assignment_expr",
  1876. /* 235 */ "unary_expr ::= postfix_expr",
  1877. /* 236 */ "unary_expr ::= PLUSPLUS unary_expr",
  1878. /* 237 */ "unary_expr ::= MINUSMINUS unary_expr",
  1879. /* 238 */ "unary_expr ::= PLUS cast_expr",
  1880. /* 239 */ "unary_expr ::= MINUS cast_expr",
  1881. /* 240 */ "unary_expr ::= COMPLEMENT cast_expr",
  1882. /* 241 */ "unary_expr ::= EXCLAMATION cast_expr",
  1883. /* 242 */ "cast_expr ::= unary_expr",
  1884. /* 243 */ "cast_expr ::= LPAREN datatype RPAREN cast_expr",
  1885. /* 244 */ "multiplicative_expr ::= cast_expr",
  1886. /* 245 */ "multiplicative_expr ::= multiplicative_expr STAR cast_expr",
  1887. /* 246 */ "multiplicative_expr ::= multiplicative_expr SLASH cast_expr",
  1888. /* 247 */ "multiplicative_expr ::= multiplicative_expr PERCENT cast_expr",
  1889. /* 248 */ "additive_expr ::= multiplicative_expr",
  1890. /* 249 */ "additive_expr ::= additive_expr PLUS multiplicative_expr",
  1891. /* 250 */ "additive_expr ::= additive_expr MINUS multiplicative_expr",
  1892. /* 251 */ "shift_expr ::= additive_expr",
  1893. /* 252 */ "shift_expr ::= shift_expr LSHIFT additive_expr",
  1894. /* 253 */ "shift_expr ::= shift_expr RSHIFT additive_expr",
  1895. /* 254 */ "relational_expr ::= shift_expr",
  1896. /* 255 */ "relational_expr ::= relational_expr LT shift_expr",
  1897. /* 256 */ "relational_expr ::= relational_expr GT shift_expr",
  1898. /* 257 */ "relational_expr ::= relational_expr LEQ shift_expr",
  1899. /* 258 */ "relational_expr ::= relational_expr GEQ shift_expr",
  1900. /* 259 */ "equality_expr ::= relational_expr",
  1901. /* 260 */ "equality_expr ::= equality_expr EQL relational_expr",
  1902. /* 261 */ "equality_expr ::= equality_expr NEQ relational_expr",
  1903. /* 262 */ "and_expr ::= equality_expr",
  1904. /* 263 */ "and_expr ::= and_expr AND equality_expr",
  1905. /* 264 */ "exclusive_or_expr ::= and_expr",
  1906. /* 265 */ "exclusive_or_expr ::= exclusive_or_expr XOR and_expr",
  1907. /* 266 */ "inclusive_or_expr ::= exclusive_or_expr",
  1908. /* 267 */ "inclusive_or_expr ::= inclusive_or_expr OR exclusive_or_expr",
  1909. /* 268 */ "logical_and_expr ::= inclusive_or_expr",
  1910. /* 269 */ "logical_and_expr ::= logical_and_expr ANDAND inclusive_or_expr",
  1911. /* 270 */ "logical_or_expr ::= logical_and_expr",
  1912. /* 271 */ "logical_or_expr ::= logical_or_expr OROR logical_and_expr",
  1913. /* 272 */ "conditional_expr ::= logical_or_expr",
  1914. /* 273 */ "conditional_expr ::= logical_or_expr QUESTION logical_or_expr COLON conditional_expr",
  1915. /* 274 */ "assignment_expr ::= conditional_expr",
  1916. /* 275 */ "assignment_expr ::= unary_expr ASSIGN assignment_expr",
  1917. /* 276 */ "assignment_expr ::= unary_expr MULASSIGN assignment_expr",
  1918. /* 277 */ "assignment_expr ::= unary_expr DIVASSIGN assignment_expr",
  1919. /* 278 */ "assignment_expr ::= unary_expr MODASSIGN assignment_expr",
  1920. /* 279 */ "assignment_expr ::= unary_expr ADDASSIGN assignment_expr",
  1921. /* 280 */ "assignment_expr ::= unary_expr SUBASSIGN assignment_expr",
  1922. /* 281 */ "assignment_expr ::= unary_expr LSHIFTASSIGN assignment_expr",
  1923. /* 282 */ "assignment_expr ::= unary_expr RSHIFTASSIGN assignment_expr",
  1924. /* 283 */ "assignment_expr ::= unary_expr ANDASSIGN assignment_expr",
  1925. /* 284 */ "assignment_expr ::= unary_expr XORASSIGN assignment_expr",
  1926. /* 285 */ "assignment_expr ::= unary_expr ORASSIGN assignment_expr",
  1927. /* 286 */ "expression ::= assignment_expr",
  1928. /* 287 */ "expression ::= expression COMMA assignment_expr",
  1929. };
  1930. #endif /* NDEBUG */
  1931. #if YYSTACKDEPTH<=0
  1932. /*
  1933. ** Try to increase the size of the parser stack.
  1934. */
  1935. static void yyGrowStack(yyParser *p){
  1936. int newSize;
  1937. yyStackEntry *pNew;
  1938. newSize = p->yystksz*2 + 100;
  1939. pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
  1940. if( pNew ){
  1941. p->yystack = pNew;
  1942. p->yystksz = newSize;
  1943. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  1944. if( yyTraceFILE ){
  1945. fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
  1946. yyTracePrompt, p->yystksz);
  1947. }
  1948. #endif
  1949. }
  1950. }
  1951. #endif
  1952. /*
  1953. ** This function allocates a new parser.
  1954. ** The only argument is a pointer to a function which works like
  1955. ** malloc.
  1956. **
  1957. ** Inputs:
  1958. ** A pointer to the function used to allocate memory.
  1959. **
  1960. ** Outputs:
  1961. ** A pointer to a parser. This pointer is used in subsequent calls
  1962. ** to ParseHLSL and ParseHLSLFree.
  1963. */
  1964. #if __MOJOSHADER__
  1965. static void *ParseHLSLAlloc(void *(*mallocProc)(int,void *), void *malloc_data){
  1966. yyParser *pParser;
  1967. pParser = (yyParser*)(*mallocProc)( (int)sizeof(yyParser), malloc_data );
  1968. #else
  1969. void *ParseHLSLAlloc(void *(*mallocProc)(size_t)){
  1970. yyParser *pParser;
  1971. pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
  1972. #endif
  1973. if( pParser ){
  1974. pParser->yyidx = -1;
  1975. #ifdef YYTRACKMAXSTACKDEPTH
  1976. pParser->yyidxMax = 0;
  1977. #endif
  1978. #if YYSTACKDEPTH<=0
  1979. pParser->yystack = NULL;
  1980. pParser->yystksz = 0;
  1981. yyGrowStack(pParser);
  1982. #endif
  1983. }
  1984. return pParser;
  1985. }
  1986. /* The following function deletes the value associated with a
  1987. ** symbol. The symbol can be either a terminal or nonterminal.
  1988. ** "yymajor" is the symbol code, and "yypminor" is a pointer to
  1989. ** the value.
  1990. */
  1991. static void yy_destructor(
  1992. yyParser *yypParser, /* The parser */
  1993. YYCODETYPE yymajor, /* Type code for object to destroy */
  1994. YYMINORTYPE *yypminor /* The object to be destroyed */
  1995. ){
  1996. ParseHLSLARG_FETCH;
  1997. switch( yymajor ){
  1998. /* Here is inserted the actions which take place when a
  1999. ** terminal or non-terminal is destroyed. This can happen
  2000. ** when the symbol is popped from the stack during a
  2001. ** reduce or during error processing or when a parser is
  2002. ** being destroyed before it is finished parsing.
  2003. **
  2004. ** Note: during a reduce, the only symbols destroyed are those
  2005. ** which appear on the RHS of the rule, but which are not used
  2006. ** inside the C code.
  2007. */
  2008. case 125: /* compilation_units */
  2009. case 126: /* compilation_unit */
  2010. {
  2011. #line 81 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2012. delete_compilation_unit(ctx, (yypminor->yy139));
  2013. #line 2033 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2014. }
  2015. break;
  2016. case 127: /* variable_declaration */
  2017. case 144: /* variable_declaration_details_list */
  2018. case 146: /* variable_declaration_details */
  2019. {
  2020. #line 175 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2021. delete_variable_declaration(ctx, (yypminor->yy24));
  2022. #line 2042 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2023. }
  2024. break;
  2025. case 128: /* function_signature */
  2026. case 135: /* function_details */
  2027. {
  2028. #line 102 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2029. delete_function_signature(ctx, (yypminor->yy364));
  2030. #line 2050 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2031. }
  2032. break;
  2033. case 129: /* statement_block */
  2034. case 167: /* statement_list */
  2035. case 168: /* statement */
  2036. case 175: /* for_statement */
  2037. case 177: /* for_details */
  2038. {
  2039. #line 354 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2040. delete_statement(ctx, (yypminor->yy233));
  2041. #line 2061 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2042. }
  2043. break;
  2044. case 130: /* typedef */
  2045. {
  2046. #line 96 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2047. delete_typedef(ctx, (yypminor->yy71));
  2048. #line 2068 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2049. }
  2050. break;
  2051. case 131: /* struct_declaration */
  2052. {
  2053. #line 224 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2054. delete_struct_declaration(ctx, (yypminor->yy249));
  2055. #line 2075 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2056. }
  2057. break;
  2058. case 133: /* scalar_or_array */
  2059. {
  2060. #line 260 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2061. delete_scalar_or_array(ctx, (yypminor->yy380));
  2062. #line 2082 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2063. }
  2064. break;
  2065. case 137: /* function_parameters */
  2066. case 138: /* function_parameter_list */
  2067. case 139: /* function_parameter */
  2068. {
  2069. #line 124 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2070. delete_function_params(ctx, (yypminor->yy307));
  2071. #line 2091 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2072. }
  2073. break;
  2074. case 142: /* initializer */
  2075. case 156: /* expression */
  2076. case 160: /* initializer_block_list */
  2077. case 161: /* initializer_block */
  2078. case 179: /* primary_expr */
  2079. case 180: /* postfix_expr */
  2080. case 183: /* assignment_expr */
  2081. case 184: /* unary_expr */
  2082. case 185: /* cast_expr */
  2083. case 186: /* multiplicative_expr */
  2084. case 187: /* additive_expr */
  2085. case 188: /* shift_expr */
  2086. case 189: /* relational_expr */
  2087. case 190: /* equality_expr */
  2088. case 191: /* and_expr */
  2089. case 192: /* exclusive_or_expr */
  2090. case 193: /* inclusive_or_expr */
  2091. case 194: /* logical_and_expr */
  2092. case 195: /* logical_or_expr */
  2093. case 196: /* conditional_expr */
  2094. {
  2095. #line 301 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2096. delete_expr(ctx, (yypminor->yy322));
  2097. #line 2117 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2098. }
  2099. break;
  2100. case 147: /* annotations */
  2101. case 157: /* annotation_list */
  2102. case 158: /* annotation */
  2103. {
  2104. #line 277 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2105. delete_annotation(ctx, (yypminor->yy268));
  2106. #line 2126 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2107. }
  2108. break;
  2109. case 148: /* variable_lowlevel */
  2110. {
  2111. #line 252 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2112. delete_variable_lowlevel(ctx, (yypminor->yy82));
  2113. #line 2133 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2114. }
  2115. break;
  2116. case 150: /* struct_member_list */
  2117. case 151: /* struct_member */
  2118. case 152: /* struct_member_details */
  2119. case 153: /* struct_member_item_list */
  2120. {
  2121. #line 232 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2122. delete_struct_member(ctx, (yypminor->yy346));
  2123. #line 2143 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2124. }
  2125. break;
  2126. case 154: /* packoffset */
  2127. {
  2128. #line 266 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2129. delete_pack_offset(ctx, (yypminor->yy8));
  2130. #line 2150 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2131. }
  2132. break;
  2133. case 174: /* switch_case_list */
  2134. case 178: /* switch_case */
  2135. {
  2136. #line 450 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2137. delete_switch_case(ctx, (yypminor->yy165));
  2138. #line 2158 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2139. }
  2140. break;
  2141. case 181: /* arguments */
  2142. case 182: /* argument_list */
  2143. {
  2144. #line 485 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2145. delete_arguments(ctx, (yypminor->yy26));
  2146. #line 2166 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2147. }
  2148. break;
  2149. default: break; /* If no destructor action specified: do nothing */
  2150. }
  2151. }
  2152. /*
  2153. ** Pop the parser's stack once.
  2154. **
  2155. ** If there is a destructor routine associated with the token which
  2156. ** is popped from the stack, then call it.
  2157. **
  2158. ** Return the major token number for the symbol popped.
  2159. */
  2160. static int yy_pop_parser_stack(yyParser *pParser){
  2161. YYCODETYPE yymajor;
  2162. yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
  2163. if( pParser->yyidx<0 ) return 0;
  2164. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  2165. if( yyTraceFILE && pParser->yyidx>=0 ){
  2166. fprintf(yyTraceFILE,"%sPopping %s\n",
  2167. yyTracePrompt,
  2168. yyTokenName[yytos->major]);
  2169. }
  2170. #endif
  2171. yymajor = yytos->major;
  2172. yy_destructor(pParser, yymajor, &yytos->minor);
  2173. pParser->yyidx--;
  2174. return yymajor;
  2175. }
  2176. /*
  2177. ** Deallocate and destroy a parser. Destructors are all called for
  2178. ** all stack elements before shutting the parser down.
  2179. **
  2180. ** Inputs:
  2181. ** <ul>
  2182. ** <li> A pointer to the parser. This should be a pointer
  2183. ** obtained from ParseHLSLAlloc.
  2184. ** <li> A pointer to a function used to reclaim memory obtained
  2185. ** from malloc.
  2186. ** </ul>
  2187. */
  2188. #if __MOJOSHADER__
  2189. static
  2190. #endif
  2191. void ParseHLSLFree(
  2192. void *p, /* The parser to be deleted */
  2193. #if __MOJOSHADER__
  2194. void (*freeProc)(void*,void*), /* Function used to reclaim memory */
  2195. void *malloc_data
  2196. #else
  2197. void (*freeProc)(void*) /* Function used to reclaim memory */
  2198. #endif
  2199. ){
  2200. yyParser *pParser = (yyParser*)p;
  2201. if( pParser==0 ) return;
  2202. while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
  2203. #if YYSTACKDEPTH<=0
  2204. free(pParser->yystack);
  2205. #endif
  2206. #if __MOJOSHADER__
  2207. (*freeProc)((void*)pParser, malloc_data);
  2208. #else
  2209. (*freeProc)((void*)pParser);
  2210. #endif
  2211. }
  2212. /*
  2213. ** Return the peak depth of the stack for a parser.
  2214. */
  2215. #ifdef YYTRACKMAXSTACKDEPTH
  2216. static int ParseHLSLStackPeak(void *p){
  2217. yyParser *pParser = (yyParser*)p;
  2218. return pParser->yyidxMax;
  2219. }
  2220. #endif
  2221. /*
  2222. ** Find the appropriate action for a parser given the terminal
  2223. ** look-ahead token iLookAhead.
  2224. **
  2225. ** If the look-ahead token is YYNOCODE, then check to see if the action is
  2226. ** independent of the look-ahead. If it is, return the action, otherwise
  2227. ** return YY_NO_ACTION.
  2228. */
  2229. static int yy_find_shift_action(
  2230. yyParser *pParser, /* The parser */
  2231. YYCODETYPE iLookAhead /* The look-ahead token */
  2232. ){
  2233. int i;
  2234. int stateno = pParser->yystack[pParser->yyidx].stateno;
  2235. if( stateno>YY_SHIFT_COUNT
  2236. || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
  2237. return yy_default[stateno];
  2238. }
  2239. assert( iLookAhead!=YYNOCODE );
  2240. i += iLookAhead;
  2241. if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
  2242. if( iLookAhead>0 ){
  2243. #ifdef YYFALLBACK
  2244. YYCODETYPE iFallback; /* Fallback token */
  2245. if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
  2246. && (iFallback = yyFallback[iLookAhead])!=0 ){
  2247. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  2248. if( yyTraceFILE ){
  2249. fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
  2250. yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
  2251. }
  2252. #endif
  2253. return yy_find_shift_action(pParser, iFallback);
  2254. }
  2255. #endif
  2256. #ifdef YYWILDCARD
  2257. {
  2258. int j = i - iLookAhead + YYWILDCARD;
  2259. if(
  2260. #if YY_SHIFT_MIN+YYWILDCARD<0
  2261. j>=0 &&
  2262. #endif
  2263. #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
  2264. j<YY_ACTTAB_COUNT &&
  2265. #endif
  2266. yy_lookahead[j]==YYWILDCARD
  2267. ){
  2268. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  2269. if( yyTraceFILE ){
  2270. fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
  2271. yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
  2272. }
  2273. #endif /* NDEBUG */
  2274. return yy_action[j];
  2275. }
  2276. }
  2277. #endif /* YYWILDCARD */
  2278. }
  2279. return yy_default[stateno];
  2280. }else{
  2281. return yy_action[i];
  2282. }
  2283. }
  2284. /*
  2285. ** Find the appropriate action for a parser given the non-terminal
  2286. ** look-ahead token iLookAhead.
  2287. **
  2288. ** If the look-ahead token is YYNOCODE, then check to see if the action is
  2289. ** independent of the look-ahead. If it is, return the action, otherwise
  2290. ** return YY_NO_ACTION.
  2291. */
  2292. static int yy_find_reduce_action(
  2293. int stateno, /* Current state number */
  2294. YYCODETYPE iLookAhead /* The look-ahead token */
  2295. ){
  2296. int i;
  2297. #ifdef YYERRORSYMBOL
  2298. if( stateno>YY_REDUCE_COUNT ){
  2299. return yy_default[stateno];
  2300. }
  2301. #else
  2302. assert( stateno<=YY_REDUCE_COUNT );
  2303. #endif
  2304. i = yy_reduce_ofst[stateno];
  2305. assert( i!=YY_REDUCE_USE_DFLT );
  2306. assert( iLookAhead!=YYNOCODE );
  2307. i += iLookAhead;
  2308. #ifdef YYERRORSYMBOL
  2309. if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
  2310. return yy_default[stateno];
  2311. }
  2312. #else
  2313. assert( i>=0 && i<YY_ACTTAB_COUNT );
  2314. assert( yy_lookahead[i]==iLookAhead );
  2315. #endif
  2316. return yy_action[i];
  2317. }
  2318. /*
  2319. ** The following routine is called if the stack overflows.
  2320. */
  2321. static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
  2322. ParseHLSLARG_FETCH;
  2323. yypParser->yyidx--;
  2324. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  2325. if( yyTraceFILE ){
  2326. fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
  2327. }
  2328. #endif
  2329. while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  2330. /* Here code is inserted which will execute if the parser
  2331. ** stack every overflows */
  2332. #line 47 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2333. // !!! FIXME: make this a proper fail() function.
  2334. fail(ctx, "Giving up. Parser stack overflow");
  2335. #line 2364 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2336. ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument var */
  2337. }
  2338. /*
  2339. ** Perform a shift action.
  2340. */
  2341. static void yy_shift(
  2342. yyParser *yypParser, /* The parser to be shifted */
  2343. int yyNewState, /* The new state to shift in */
  2344. int yyMajor, /* The major token to shift in */
  2345. YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */
  2346. ){
  2347. yyStackEntry *yytos;
  2348. yypParser->yyidx++;
  2349. #ifdef YYTRACKMAXSTACKDEPTH
  2350. if( yypParser->yyidx>yypParser->yyidxMax ){
  2351. yypParser->yyidxMax = yypParser->yyidx;
  2352. }
  2353. #endif
  2354. #if YYSTACKDEPTH>0
  2355. if( yypParser->yyidx>=YYSTACKDEPTH ){
  2356. yyStackOverflow(yypParser, yypMinor);
  2357. return;
  2358. }
  2359. #else
  2360. if( yypParser->yyidx>=yypParser->yystksz ){
  2361. yyGrowStack(yypParser);
  2362. if( yypParser->yyidx>=yypParser->yystksz ){
  2363. yyStackOverflow(yypParser, yypMinor);
  2364. return;
  2365. }
  2366. }
  2367. #endif
  2368. yytos = &yypParser->yystack[yypParser->yyidx];
  2369. yytos->stateno = (YYACTIONTYPE)yyNewState;
  2370. yytos->major = (YYCODETYPE)yyMajor;
  2371. yytos->minor = *yypMinor;
  2372. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  2373. if( yyTraceFILE && yypParser->yyidx>0 ){
  2374. int i;
  2375. fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
  2376. fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
  2377. for(i=1; i<=yypParser->yyidx; i++)
  2378. fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
  2379. fprintf(yyTraceFILE,"\n");
  2380. }
  2381. #endif
  2382. }
  2383. /* The following table contains information about every rule that
  2384. ** is used during the reduce.
  2385. */
  2386. static const struct {
  2387. YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
  2388. unsigned char nrhs; /* Number of right-hand side symbols in the rule */
  2389. } yyRuleInfo[] = {
  2390. { 124, 1 },
  2391. { 125, 1 },
  2392. { 125, 2 },
  2393. { 126, 1 },
  2394. { 126, 2 },
  2395. { 126, 2 },
  2396. { 126, 1 },
  2397. { 126, 2 },
  2398. { 130, 4 },
  2399. { 130, 3 },
  2400. { 128, 3 },
  2401. { 128, 2 },
  2402. { 128, 2 },
  2403. { 128, 1 },
  2404. { 135, 5 },
  2405. { 135, 5 },
  2406. { 134, 1 },
  2407. { 137, 1 },
  2408. { 137, 1 },
  2409. { 137, 0 },
  2410. { 138, 1 },
  2411. { 138, 3 },
  2412. { 139, 6 },
  2413. { 139, 5 },
  2414. { 139, 5 },
  2415. { 139, 4 },
  2416. { 139, 5 },
  2417. { 139, 4 },
  2418. { 139, 4 },
  2419. { 139, 3 },
  2420. { 139, 5 },
  2421. { 139, 4 },
  2422. { 139, 4 },
  2423. { 139, 3 },
  2424. { 139, 4 },
  2425. { 139, 3 },
  2426. { 139, 3 },
  2427. { 139, 2 },
  2428. { 140, 1 },
  2429. { 140, 1 },
  2430. { 140, 1 },
  2431. { 140, 2 },
  2432. { 140, 2 },
  2433. { 140, 1 },
  2434. { 136, 2 },
  2435. { 141, 1 },
  2436. { 141, 1 },
  2437. { 141, 1 },
  2438. { 141, 1 },
  2439. { 141, 1 },
  2440. { 127, 4 },
  2441. { 127, 3 },
  2442. { 127, 3 },
  2443. { 143, 1 },
  2444. { 143, 2 },
  2445. { 145, 1 },
  2446. { 145, 1 },
  2447. { 145, 1 },
  2448. { 145, 1 },
  2449. { 145, 1 },
  2450. { 145, 1 },
  2451. { 145, 1 },
  2452. { 145, 1 },
  2453. { 145, 1 },
  2454. { 144, 1 },
  2455. { 144, 3 },
  2456. { 146, 5 },
  2457. { 146, 4 },
  2458. { 146, 4 },
  2459. { 146, 3 },
  2460. { 146, 4 },
  2461. { 146, 3 },
  2462. { 146, 3 },
  2463. { 146, 2 },
  2464. { 146, 4 },
  2465. { 146, 3 },
  2466. { 146, 3 },
  2467. { 146, 2 },
  2468. { 146, 3 },
  2469. { 146, 2 },
  2470. { 146, 2 },
  2471. { 146, 1 },
  2472. { 131, 4 },
  2473. { 149, 2 },
  2474. { 150, 1 },
  2475. { 150, 2 },
  2476. { 151, 2 },
  2477. { 151, 1 },
  2478. { 152, 3 },
  2479. { 153, 1 },
  2480. { 153, 2 },
  2481. { 153, 3 },
  2482. { 148, 2 },
  2483. { 148, 2 },
  2484. { 148, 1 },
  2485. { 148, 1 },
  2486. { 133, 3 },
  2487. { 133, 4 },
  2488. { 133, 1 },
  2489. { 154, 7 },
  2490. { 154, 5 },
  2491. { 155, 5 },
  2492. { 147, 3 },
  2493. { 157, 1 },
  2494. { 157, 2 },
  2495. { 158, 3 },
  2496. { 160, 1 },
  2497. { 160, 3 },
  2498. { 160, 3 },
  2499. { 161, 3 },
  2500. { 142, 2 },
  2501. { 142, 2 },
  2502. { 162, 1 },
  2503. { 162, 1 },
  2504. { 162, 1 },
  2505. { 162, 1 },
  2506. { 162, 1 },
  2507. { 132, 1 },
  2508. { 132, 1 },
  2509. { 165, 1 },
  2510. { 165, 1 },
  2511. { 165, 1 },
  2512. { 165, 1 },
  2513. { 165, 1 },
  2514. { 165, 1 },
  2515. { 165, 1 },
  2516. { 165, 1 },
  2517. { 159, 1 },
  2518. { 159, 1 },
  2519. { 159, 1 },
  2520. { 159, 1 },
  2521. { 159, 1 },
  2522. { 159, 1 },
  2523. { 159, 1 },
  2524. { 159, 2 },
  2525. { 159, 2 },
  2526. { 166, 4 },
  2527. { 166, 4 },
  2528. { 166, 4 },
  2529. { 166, 4 },
  2530. { 166, 4 },
  2531. { 166, 4 },
  2532. { 166, 5 },
  2533. { 166, 5 },
  2534. { 163, 6 },
  2535. { 164, 8 },
  2536. { 129, 2 },
  2537. { 129, 3 },
  2538. { 167, 1 },
  2539. { 167, 2 },
  2540. { 169, 1 },
  2541. { 169, 4 },
  2542. { 169, 1 },
  2543. { 169, 1 },
  2544. { 169, 1 },
  2545. { 169, 1 },
  2546. { 168, 2 },
  2547. { 168, 2 },
  2548. { 168, 2 },
  2549. { 168, 4 },
  2550. { 168, 1 },
  2551. { 168, 2 },
  2552. { 168, 8 },
  2553. { 168, 5 },
  2554. { 168, 5 },
  2555. { 168, 7 },
  2556. { 168, 7 },
  2557. { 168, 1 },
  2558. { 168, 1 },
  2559. { 168, 2 },
  2560. { 168, 2 },
  2561. { 168, 3 },
  2562. { 168, 1 },
  2563. { 168, 1 },
  2564. { 171, 7 },
  2565. { 171, 4 },
  2566. { 171, 4 },
  2567. { 171, 1 },
  2568. { 175, 2 },
  2569. { 176, 7 },
  2570. { 176, 4 },
  2571. { 176, 4 },
  2572. { 176, 1 },
  2573. { 177, 8 },
  2574. { 177, 5 },
  2575. { 177, 6 },
  2576. { 177, 6 },
  2577. { 177, 7 },
  2578. { 177, 6 },
  2579. { 177, 7 },
  2580. { 177, 7 },
  2581. { 177, 7 },
  2582. { 177, 5 },
  2583. { 177, 6 },
  2584. { 177, 6 },
  2585. { 170, 7 },
  2586. { 170, 4 },
  2587. { 170, 4 },
  2588. { 170, 1 },
  2589. { 172, 4 },
  2590. { 172, 4 },
  2591. { 172, 4 },
  2592. { 172, 4 },
  2593. { 172, 4 },
  2594. { 172, 4 },
  2595. { 172, 1 },
  2596. { 173, 4 },
  2597. { 173, 4 },
  2598. { 173, 4 },
  2599. { 173, 4 },
  2600. { 173, 1 },
  2601. { 174, 1 },
  2602. { 174, 2 },
  2603. { 178, 4 },
  2604. { 178, 3 },
  2605. { 178, 3 },
  2606. { 178, 2 },
  2607. { 179, 1 },
  2608. { 179, 1 },
  2609. { 179, 1 },
  2610. { 179, 1 },
  2611. { 179, 1 },
  2612. { 179, 1 },
  2613. { 179, 3 },
  2614. { 180, 1 },
  2615. { 180, 4 },
  2616. { 180, 2 },
  2617. { 180, 2 },
  2618. { 180, 3 },
  2619. { 180, 2 },
  2620. { 180, 2 },
  2621. { 181, 2 },
  2622. { 181, 3 },
  2623. { 182, 1 },
  2624. { 182, 3 },
  2625. { 184, 1 },
  2626. { 184, 2 },
  2627. { 184, 2 },
  2628. { 184, 2 },
  2629. { 184, 2 },
  2630. { 184, 2 },
  2631. { 184, 2 },
  2632. { 185, 1 },
  2633. { 185, 4 },
  2634. { 186, 1 },
  2635. { 186, 3 },
  2636. { 186, 3 },
  2637. { 186, 3 },
  2638. { 187, 1 },
  2639. { 187, 3 },
  2640. { 187, 3 },
  2641. { 188, 1 },
  2642. { 188, 3 },
  2643. { 188, 3 },
  2644. { 189, 1 },
  2645. { 189, 3 },
  2646. { 189, 3 },
  2647. { 189, 3 },
  2648. { 189, 3 },
  2649. { 190, 1 },
  2650. { 190, 3 },
  2651. { 190, 3 },
  2652. { 191, 1 },
  2653. { 191, 3 },
  2654. { 192, 1 },
  2655. { 192, 3 },
  2656. { 193, 1 },
  2657. { 193, 3 },
  2658. { 194, 1 },
  2659. { 194, 3 },
  2660. { 195, 1 },
  2661. { 195, 3 },
  2662. { 196, 1 },
  2663. { 196, 5 },
  2664. { 183, 1 },
  2665. { 183, 3 },
  2666. { 183, 3 },
  2667. { 183, 3 },
  2668. { 183, 3 },
  2669. { 183, 3 },
  2670. { 183, 3 },
  2671. { 183, 3 },
  2672. { 183, 3 },
  2673. { 183, 3 },
  2674. { 183, 3 },
  2675. { 183, 3 },
  2676. { 156, 1 },
  2677. { 156, 3 },
  2678. };
  2679. static void yy_accept(yyParser*); /* Forward Declaration */
  2680. /*
  2681. ** Perform a reduce action and the shift that must immediately
  2682. ** follow the reduce.
  2683. */
  2684. static void yy_reduce(
  2685. yyParser *yypParser, /* The parser */
  2686. int yyruleno /* Number of the rule by which to reduce */
  2687. ){
  2688. int yygoto; /* The next state */
  2689. int yyact; /* The next action */
  2690. YYMINORTYPE yygotominor; /* The LHS of the rule reduced */
  2691. yyStackEntry *yymsp; /* The top of the parser's stack */
  2692. int yysize; /* Amount to pop the stack */
  2693. ParseHLSLARG_FETCH;
  2694. yymsp = &yypParser->yystack[yypParser->yyidx];
  2695. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  2696. if( yyTraceFILE && yyruleno>=0
  2697. && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
  2698. fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
  2699. yyRuleName[yyruleno]);
  2700. }
  2701. #endif /* NDEBUG */
  2702. /* Silence complaints from purify about yygotominor being uninitialized
  2703. ** in some cases when it is copied into the stack after the following
  2704. ** switch. yygotominor is uninitialized when a rule reduces that does
  2705. ** not set the value of its left-hand side nonterminal. Leaving the
  2706. ** value of the nonterminal uninitialized is utterly harmless as long
  2707. ** as the value is never used. So really the only thing this code
  2708. ** accomplishes is to quieten purify.
  2709. **
  2710. ** 2007-01-16: The wireshark project (www.wireshark.org) reports that
  2711. ** without this code, their parser segfaults. I'm not sure what there
  2712. ** parser is doing to make this happen. This is the second bug report
  2713. ** from wireshark this week. Clearly they are stressing Lemon in ways
  2714. ** that it has not been previously stressed... (SQLite ticket #2172)
  2715. */
  2716. /*memset(&yygotominor, 0, sizeof(yygotominor));*/
  2717. yygotominor = yyzerominor;
  2718. switch( yyruleno ){
  2719. /* Beginning here are the reduction cases. A typical example
  2720. ** follows:
  2721. ** case 0:
  2722. ** #line <lineno> <grammarfile>
  2723. ** { ... } // User supplied code
  2724. ** #line <lineno> <thisfile>
  2725. ** break;
  2726. */
  2727. case 0: /* shader ::= compilation_units */
  2728. #line 78 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2729. { assert(ctx->ast == NULL); REVERSE_LINKED_LIST(MOJOSHADER_astCompilationUnit, yymsp[0].minor.yy139); ctx->ast = (MOJOSHADER_astNode *) yymsp[0].minor.yy139; }
  2730. #line 2766 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2731. break;
  2732. case 1: /* compilation_units ::= compilation_unit */
  2733. #line 82 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2734. { yygotominor.yy139 = yymsp[0].minor.yy139; }
  2735. #line 2771 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2736. break;
  2737. case 2: /* compilation_units ::= compilation_units compilation_unit */
  2738. #line 83 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2739. { if (yymsp[0].minor.yy139) { yymsp[0].minor.yy139->next = yymsp[-1].minor.yy139; yygotominor.yy139 = yymsp[0].minor.yy139; } }
  2740. #line 2776 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2741. break;
  2742. case 3: /* compilation_unit ::= variable_declaration */
  2743. #line 88 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2744. { yygotominor.yy139 = new_global_variable(ctx, yymsp[0].minor.yy24); }
  2745. #line 2781 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2746. break;
  2747. case 4: /* compilation_unit ::= function_signature SEMICOLON */
  2748. #line 89 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2749. { yygotominor.yy139 = new_function(ctx, yymsp[-1].minor.yy364, NULL); }
  2750. #line 2786 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2751. break;
  2752. case 5: /* compilation_unit ::= function_signature statement_block */
  2753. #line 90 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2754. { yygotominor.yy139 = new_function(ctx, yymsp[-1].minor.yy364, yymsp[0].minor.yy233); }
  2755. #line 2791 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2756. break;
  2757. case 6: /* compilation_unit ::= typedef */
  2758. #line 91 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2759. { yygotominor.yy139 = new_global_typedef(ctx, yymsp[0].minor.yy71); }
  2760. #line 2796 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2761. break;
  2762. case 7: /* compilation_unit ::= struct_declaration SEMICOLON */
  2763. #line 92 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2764. { yygotominor.yy139 = new_global_struct(ctx, yymsp[-1].minor.yy249); }
  2765. #line 2801 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2766. break;
  2767. case 8: /* typedef ::= TYPEDEF CONST datatype scalar_or_array */
  2768. #line 98 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2769. { yygotominor.yy71 = new_typedef(ctx, 1, yymsp[-1].minor.yy37, yymsp[0].minor.yy380); push_usertype(ctx, yymsp[0].minor.yy380->identifier, yygotominor.yy71->datatype); }
  2770. #line 2806 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2771. break;
  2772. case 9: /* typedef ::= TYPEDEF datatype scalar_or_array */
  2773. #line 99 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2774. { yygotominor.yy71 = new_typedef(ctx, 0, yymsp[-1].minor.yy37, yymsp[0].minor.yy380); push_usertype(ctx, yymsp[0].minor.yy380->identifier, yygotominor.yy71->datatype); }
  2775. #line 2811 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2776. break;
  2777. case 10: /* function_signature ::= function_storageclass function_details semantic */
  2778. #line 103 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2779. { yygotominor.yy364 = yymsp[-1].minor.yy364; yygotominor.yy364->storage_class = yymsp[-2].minor.yy175; yygotominor.yy364->semantic = yymsp[0].minor.yy306; }
  2780. #line 2816 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2781. break;
  2782. case 11: /* function_signature ::= function_storageclass function_details */
  2783. #line 104 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2784. { yygotominor.yy364 = yymsp[0].minor.yy364; yygotominor.yy364->storage_class = yymsp[-1].minor.yy175; }
  2785. #line 2821 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2786. break;
  2787. case 12: /* function_signature ::= function_details semantic */
  2788. #line 105 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2789. { yygotominor.yy364 = yymsp[-1].minor.yy364; yygotominor.yy364->semantic = yymsp[0].minor.yy306; }
  2790. #line 2826 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2791. break;
  2792. case 13: /* function_signature ::= function_details */
  2793. #line 106 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2794. { yygotominor.yy364 = yymsp[0].minor.yy364; }
  2795. #line 2831 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2796. break;
  2797. case 14: /* function_details ::= datatype IDENTIFIER LPAREN function_parameters RPAREN */
  2798. #line 110 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2799. { yygotominor.yy364 = new_function_signature(ctx, yymsp[-4].minor.yy37, yymsp[-3].minor.yy0.string, yymsp[-1].minor.yy307); }
  2800. #line 2836 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2801. break;
  2802. case 15: /* function_details ::= VOID IDENTIFIER LPAREN function_parameters RPAREN */
  2803. #line 111 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2804. { yygotominor.yy364 = new_function_signature(ctx, NULL, yymsp[-3].minor.yy0.string, yymsp[-1].minor.yy307); }
  2805. #line 2841 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2806. break;
  2807. case 16: /* function_storageclass ::= INLINE */
  2808. #line 121 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2809. { yygotominor.yy175 = MOJOSHADER_AST_FNSTORECLS_INLINE; }
  2810. #line 2846 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2811. break;
  2812. case 17: /* function_parameters ::= VOID */
  2813. case 19: /* function_parameters ::= */ yytestcase(yyruleno==19);
  2814. #line 125 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2815. { yygotominor.yy307 = NULL; }
  2816. #line 2852 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2817. break;
  2818. case 18: /* function_parameters ::= function_parameter_list */
  2819. #line 126 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2820. { REVERSE_LINKED_LIST(MOJOSHADER_astFunctionParameters, yymsp[0].minor.yy307); yygotominor.yy307 = yymsp[0].minor.yy307; }
  2821. #line 2857 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2822. break;
  2823. case 20: /* function_parameter_list ::= function_parameter */
  2824. #line 131 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2825. { yygotominor.yy307 = yymsp[0].minor.yy307; }
  2826. #line 2862 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2827. break;
  2828. case 21: /* function_parameter_list ::= function_parameter_list COMMA function_parameter */
  2829. #line 132 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2830. { yymsp[0].minor.yy307->next = yymsp[-2].minor.yy307; yygotominor.yy307 = yymsp[0].minor.yy307; }
  2831. #line 2867 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2832. break;
  2833. case 22: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod initializer */
  2834. #line 138 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2835. { yygotominor.yy307 = new_function_param(ctx, yymsp[-5].minor.yy75, yymsp[-4].minor.yy37, yymsp[-3].minor.yy0.string, yymsp[-2].minor.yy306, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
  2836. #line 2872 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2837. break;
  2838. case 23: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod */
  2839. #line 139 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2840. { yygotominor.yy307 = new_function_param(ctx, yymsp[-4].minor.yy75, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, yymsp[0].minor.yy111, NULL); }
  2841. #line 2877 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2842. break;
  2843. case 24: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic initializer */
  2844. #line 140 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2845. { yygotominor.yy307 = new_function_param(ctx, yymsp[-4].minor.yy75, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
  2846. #line 2882 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2847. break;
  2848. case 25: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic */
  2849. #line 141 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2850. { yygotominor.yy307 = new_function_param(ctx, yymsp[-3].minor.yy75, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, yymsp[0].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
  2851. #line 2887 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2852. break;
  2853. case 26: /* function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod initializer */
  2854. #line 142 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2855. { yygotominor.yy307 = new_function_param(ctx, yymsp[-4].minor.yy75, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, NULL, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
  2856. #line 2892 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2857. break;
  2858. case 27: /* function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod */
  2859. #line 143 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2860. { yygotominor.yy307 = new_function_param(ctx, yymsp[-3].minor.yy75, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, yymsp[0].minor.yy111, NULL); }
  2861. #line 2897 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2862. break;
  2863. case 28: /* function_parameter ::= input_modifier datatype IDENTIFIER initializer */
  2864. #line 144 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2865. { yygotominor.yy307 = new_function_param(ctx, yymsp[-3].minor.yy75, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
  2866. #line 2902 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2867. break;
  2868. case 29: /* function_parameter ::= input_modifier datatype IDENTIFIER */
  2869. #line 145 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2870. { yygotominor.yy307 = new_function_param(ctx, yymsp[-2].minor.yy75, yymsp[-1].minor.yy37, yymsp[0].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
  2871. #line 2907 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2872. break;
  2873. case 30: /* function_parameter ::= datatype IDENTIFIER semantic interpolation_mod initializer */
  2874. #line 146 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2875. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-4].minor.yy37, yymsp[-3].minor.yy0.string, yymsp[-2].minor.yy306, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
  2876. #line 2912 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2877. break;
  2878. case 31: /* function_parameter ::= datatype IDENTIFIER semantic interpolation_mod */
  2879. #line 147 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2880. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, yymsp[0].minor.yy111, NULL); }
  2881. #line 2917 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2882. break;
  2883. case 32: /* function_parameter ::= datatype IDENTIFIER semantic initializer */
  2884. #line 148 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2885. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
  2886. #line 2922 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2887. break;
  2888. case 33: /* function_parameter ::= datatype IDENTIFIER semantic */
  2889. #line 149 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2890. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, yymsp[0].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
  2891. #line 2927 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2892. break;
  2893. case 34: /* function_parameter ::= datatype IDENTIFIER interpolation_mod initializer */
  2894. #line 150 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2895. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, NULL, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
  2896. #line 2932 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2897. break;
  2898. case 35: /* function_parameter ::= datatype IDENTIFIER interpolation_mod */
  2899. #line 151 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2900. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, yymsp[0].minor.yy111, NULL); }
  2901. #line 2937 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2902. break;
  2903. case 36: /* function_parameter ::= datatype IDENTIFIER initializer */
  2904. #line 152 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2905. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
  2906. #line 2942 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2907. break;
  2908. case 37: /* function_parameter ::= datatype IDENTIFIER */
  2909. #line 153 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2910. { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-1].minor.yy37, yymsp[0].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
  2911. #line 2947 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2912. break;
  2913. case 38: /* input_modifier ::= IN */
  2914. #line 156 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2915. { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_IN; }
  2916. #line 2952 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2917. break;
  2918. case 39: /* input_modifier ::= INOUT */
  2919. case 41: /* input_modifier ::= IN OUT */ yytestcase(yyruleno==41);
  2920. case 42: /* input_modifier ::= OUT IN */ yytestcase(yyruleno==42);
  2921. #line 157 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2922. { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_INOUT; }
  2923. #line 2959 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2924. break;
  2925. case 40: /* input_modifier ::= OUT */
  2926. #line 158 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2927. { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_OUT; }
  2928. #line 2964 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2929. break;
  2930. case 43: /* input_modifier ::= UNIFORM */
  2931. #line 161 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2932. { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_UNIFORM; }
  2933. #line 2969 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2934. break;
  2935. case 44: /* semantic ::= COLON IDENTIFIER */
  2936. #line 164 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2937. { yygotominor.yy306 = yymsp[0].minor.yy0.string; }
  2938. #line 2974 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2939. break;
  2940. case 45: /* interpolation_mod ::= LINEAR */
  2941. #line 168 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2942. { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_LINEAR; }
  2943. #line 2979 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2944. break;
  2945. case 46: /* interpolation_mod ::= CENTROID */
  2946. #line 169 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2947. { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_CENTROID; }
  2948. #line 2984 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2949. break;
  2950. case 47: /* interpolation_mod ::= NOINTERPOLATION */
  2951. #line 170 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2952. { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_NOINTERPOLATION; }
  2953. #line 2989 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2954. break;
  2955. case 48: /* interpolation_mod ::= NOPERSPECTIVE */
  2956. #line 171 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2957. { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_NOPERSPECTIVE; }
  2958. #line 2994 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2959. break;
  2960. case 49: /* interpolation_mod ::= SAMPLE */
  2961. #line 172 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2962. { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_SAMPLE; }
  2963. #line 2999 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2964. break;
  2965. case 50: /* variable_declaration ::= variable_attribute_list datatype variable_declaration_details_list SEMICOLON */
  2966. #line 176 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2967. { REVERSE_LINKED_LIST(MOJOSHADER_astVariableDeclaration, yymsp[-1].minor.yy24); yygotominor.yy24 = yymsp[-1].minor.yy24; yygotominor.yy24->attributes = yymsp[-3].minor.yy270; yygotominor.yy24->datatype = yymsp[-2].minor.yy37; }
  2968. #line 3004 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2969. break;
  2970. case 51: /* variable_declaration ::= datatype variable_declaration_details_list SEMICOLON */
  2971. #line 177 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2972. { REVERSE_LINKED_LIST(MOJOSHADER_astVariableDeclaration, yymsp[-1].minor.yy24); yygotominor.yy24 = yymsp[-1].minor.yy24; yygotominor.yy24->datatype = yymsp[-2].minor.yy37; }
  2973. #line 3009 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2974. break;
  2975. case 52: /* variable_declaration ::= struct_declaration variable_declaration_details_list SEMICOLON */
  2976. #line 179 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2977. { REVERSE_LINKED_LIST(MOJOSHADER_astVariableDeclaration, yymsp[-1].minor.yy24); yygotominor.yy24 = yymsp[-1].minor.yy24; yygotominor.yy24->anonymous_datatype = yymsp[-2].minor.yy249; }
  2978. #line 3014 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2979. break;
  2980. case 53: /* variable_attribute_list ::= variable_attribute */
  2981. #line 182 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2982. { yygotominor.yy270 = yymsp[0].minor.yy270; }
  2983. #line 3019 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2984. break;
  2985. case 54: /* variable_attribute_list ::= variable_attribute_list variable_attribute */
  2986. #line 183 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2987. { yygotominor.yy270 = yymsp[-1].minor.yy270 | yymsp[0].minor.yy270; }
  2988. #line 3024 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2989. break;
  2990. case 55: /* variable_attribute ::= EXTERN */
  2991. #line 186 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2992. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_EXTERN; }
  2993. #line 3029 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2994. break;
  2995. case 56: /* variable_attribute ::= NOINTERPOLATION */
  2996. #line 187 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  2997. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_NOINTERPOLATION; }
  2998. #line 3034 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  2999. break;
  3000. case 57: /* variable_attribute ::= SHARED */
  3001. #line 188 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3002. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_SHARED; }
  3003. #line 3039 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3004. break;
  3005. case 58: /* variable_attribute ::= STATIC */
  3006. #line 189 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3007. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_STATIC; }
  3008. #line 3044 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3009. break;
  3010. case 59: /* variable_attribute ::= UNIFORM */
  3011. #line 190 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3012. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_UNIFORM; }
  3013. #line 3049 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3014. break;
  3015. case 60: /* variable_attribute ::= VOLATILE */
  3016. #line 191 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3017. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_VOLATILE; }
  3018. #line 3054 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3019. break;
  3020. case 61: /* variable_attribute ::= CONST */
  3021. #line 192 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3022. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_CONST; }
  3023. #line 3059 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3024. break;
  3025. case 62: /* variable_attribute ::= ROWMAJOR */
  3026. #line 193 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3027. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_ROWMAJOR; }
  3028. #line 3064 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3029. break;
  3030. case 63: /* variable_attribute ::= COLUMNMAJOR */
  3031. #line 194 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3032. { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_COLUMNMAJOR; }
  3033. #line 3069 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3034. break;
  3035. case 64: /* variable_declaration_details_list ::= variable_declaration_details */
  3036. #line 198 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3037. { yygotominor.yy24 = yymsp[0].minor.yy24; }
  3038. #line 3074 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3039. break;
  3040. case 65: /* variable_declaration_details_list ::= variable_declaration_details_list COMMA variable_declaration_details */
  3041. #line 199 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3042. { yygotominor.yy24 = yymsp[0].minor.yy24; yygotominor.yy24->next = yymsp[-2].minor.yy24; }
  3043. #line 3079 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3044. break;
  3045. case 66: /* variable_declaration_details ::= scalar_or_array semantic annotations initializer variable_lowlevel */
  3046. #line 203 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3047. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-4].minor.yy380, yymsp[-3].minor.yy306, yymsp[-2].minor.yy268, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
  3048. #line 3084 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3049. break;
  3050. case 67: /* variable_declaration_details ::= scalar_or_array semantic annotations initializer */
  3051. #line 204 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3052. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, yymsp[-2].minor.yy306, yymsp[-1].minor.yy268, yymsp[0].minor.yy322, NULL); }
  3053. #line 3089 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3054. break;
  3055. case 68: /* variable_declaration_details ::= scalar_or_array semantic annotations variable_lowlevel */
  3056. #line 205 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3057. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, yymsp[-2].minor.yy306, yymsp[-1].minor.yy268, NULL, yymsp[0].minor.yy82); }
  3058. #line 3094 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3059. break;
  3060. case 69: /* variable_declaration_details ::= scalar_or_array semantic annotations */
  3061. #line 206 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3062. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, yymsp[-1].minor.yy306, yymsp[0].minor.yy268, NULL, NULL); }
  3063. #line 3099 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3064. break;
  3065. case 70: /* variable_declaration_details ::= scalar_or_array semantic initializer variable_lowlevel */
  3066. #line 207 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3067. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, yymsp[-2].minor.yy306, NULL, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
  3068. #line 3104 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3069. break;
  3070. case 71: /* variable_declaration_details ::= scalar_or_array semantic initializer */
  3071. #line 208 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3072. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, yymsp[-1].minor.yy306, NULL, yymsp[0].minor.yy322, NULL); }
  3073. #line 3109 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3074. break;
  3075. case 72: /* variable_declaration_details ::= scalar_or_array semantic variable_lowlevel */
  3076. #line 209 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3077. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, yymsp[-1].minor.yy306, NULL, NULL, yymsp[0].minor.yy82); }
  3078. #line 3114 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3079. break;
  3080. case 73: /* variable_declaration_details ::= scalar_or_array semantic */
  3081. #line 210 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3082. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, yymsp[0].minor.yy306, NULL, NULL, NULL); }
  3083. #line 3119 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3084. break;
  3085. case 74: /* variable_declaration_details ::= scalar_or_array annotations initializer variable_lowlevel */
  3086. #line 211 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3087. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, NULL, yymsp[-2].minor.yy268, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
  3088. #line 3124 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3089. break;
  3090. case 75: /* variable_declaration_details ::= scalar_or_array annotations initializer */
  3091. #line 212 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3092. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, NULL, yymsp[-1].minor.yy268, yymsp[0].minor.yy322, NULL); }
  3093. #line 3129 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3094. break;
  3095. case 76: /* variable_declaration_details ::= scalar_or_array annotations variable_lowlevel */
  3096. #line 213 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3097. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, NULL, yymsp[-1].minor.yy268, NULL, yymsp[0].minor.yy82); }
  3098. #line 3134 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3099. break;
  3100. case 77: /* variable_declaration_details ::= scalar_or_array annotations */
  3101. #line 214 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3102. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, NULL, yymsp[0].minor.yy268, NULL, NULL); }
  3103. #line 3139 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3104. break;
  3105. case 78: /* variable_declaration_details ::= scalar_or_array initializer variable_lowlevel */
  3106. #line 215 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3107. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, NULL, NULL, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
  3108. #line 3144 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3109. break;
  3110. case 79: /* variable_declaration_details ::= scalar_or_array initializer */
  3111. #line 216 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3112. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, NULL, NULL, yymsp[0].minor.yy322, NULL); }
  3113. #line 3149 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3114. break;
  3115. case 80: /* variable_declaration_details ::= scalar_or_array variable_lowlevel */
  3116. #line 217 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3117. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, NULL, NULL, NULL, yymsp[0].minor.yy82); }
  3118. #line 3154 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3119. break;
  3120. case 81: /* variable_declaration_details ::= scalar_or_array */
  3121. #line 218 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3122. { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[0].minor.yy380, NULL, NULL, NULL, NULL); }
  3123. #line 3159 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3124. break;
  3125. case 82: /* struct_declaration ::= struct_intro LBRACE struct_member_list RBRACE */
  3126. #line 225 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3127. { REVERSE_LINKED_LIST(MOJOSHADER_astStructMembers, yymsp[-1].minor.yy346); yygotominor.yy249 = new_struct_declaration(ctx, yymsp[-3].minor.yy306, yymsp[-1].minor.yy346); }
  3128. #line 3164 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3129. break;
  3130. case 83: /* struct_intro ::= STRUCT IDENTIFIER */
  3131. #line 229 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3132. { yygotominor.yy306 = yymsp[0].minor.yy0.string; push_usertype(ctx, yygotominor.yy306, &ctx->dt_none); }
  3133. #line 3169 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3134. break;
  3135. case 84: /* struct_member_list ::= struct_member */
  3136. case 87: /* struct_member ::= struct_member_details */ yytestcase(yyruleno==87);
  3137. #line 233 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3138. { yygotominor.yy346 = yymsp[0].minor.yy346; }
  3139. #line 3175 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3140. break;
  3141. case 85: /* struct_member_list ::= struct_member_list struct_member */
  3142. #line 234 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3143. { yygotominor.yy346 = yymsp[0].minor.yy346; MOJOSHADER_astStructMembers *i = yygotominor.yy346; while (i->next) { i = i->next; } i->next = yymsp[-1].minor.yy346; }
  3144. #line 3180 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3145. break;
  3146. case 86: /* struct_member ::= interpolation_mod struct_member_details */
  3147. #line 238 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3148. { MOJOSHADER_astStructMembers *i = yymsp[0].minor.yy346; yygotominor.yy346 = yymsp[0].minor.yy346; while (i) { i->interpolation_mod = yymsp[-1].minor.yy111; i = i->next; } }
  3149. #line 3185 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3150. break;
  3151. case 88: /* struct_member_details ::= datatype struct_member_item_list SEMICOLON */
  3152. #line 243 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3153. { MOJOSHADER_astStructMembers *i = yymsp[-1].minor.yy346; yygotominor.yy346 = yymsp[-1].minor.yy346; while (i) { i->datatype = yymsp[-2].minor.yy37; i = i->next; } }
  3154. #line 3190 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3155. break;
  3156. case 89: /* struct_member_item_list ::= scalar_or_array */
  3157. #line 247 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3158. { yygotominor.yy346 = new_struct_member(ctx, yymsp[0].minor.yy380, NULL); }
  3159. #line 3195 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3160. break;
  3161. case 90: /* struct_member_item_list ::= scalar_or_array semantic */
  3162. #line 248 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3163. { yygotominor.yy346 = new_struct_member(ctx, yymsp[-1].minor.yy380, yymsp[0].minor.yy306); }
  3164. #line 3200 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3165. break;
  3166. case 91: /* struct_member_item_list ::= struct_member_item_list COMMA IDENTIFIER */
  3167. #line 249 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3168. { yygotominor.yy346 = new_struct_member(ctx, new_scalar_or_array(ctx, yymsp[0].minor.yy0.string, 0, NULL), NULL); yygotominor.yy346->next = yymsp[-2].minor.yy346; yygotominor.yy346->semantic = yymsp[-2].minor.yy346->semantic; }
  3169. #line 3205 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3170. break;
  3171. case 92: /* variable_lowlevel ::= packoffset register */
  3172. #line 253 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3173. { yygotominor.yy82 = new_variable_lowlevel(ctx, yymsp[-1].minor.yy8, yymsp[0].minor.yy306); }
  3174. #line 3210 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3175. break;
  3176. case 93: /* variable_lowlevel ::= register packoffset */
  3177. #line 254 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3178. { yygotominor.yy82 = new_variable_lowlevel(ctx, yymsp[0].minor.yy8, yymsp[-1].minor.yy306); }
  3179. #line 3215 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3180. break;
  3181. case 94: /* variable_lowlevel ::= packoffset */
  3182. #line 255 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3183. { yygotominor.yy82 = new_variable_lowlevel(ctx, yymsp[0].minor.yy8, NULL); }
  3184. #line 3220 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3185. break;
  3186. case 95: /* variable_lowlevel ::= register */
  3187. #line 256 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3188. { yygotominor.yy82 = new_variable_lowlevel(ctx, NULL, yymsp[0].minor.yy306); }
  3189. #line 3225 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3190. break;
  3191. case 96: /* scalar_or_array ::= IDENTIFIER LBRACKET RBRACKET */
  3192. #line 261 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3193. { yygotominor.yy380 = new_scalar_or_array(ctx, yymsp[-2].minor.yy0.string, 1, NULL); }
  3194. #line 3230 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3195. break;
  3196. case 97: /* scalar_or_array ::= IDENTIFIER LBRACKET expression RBRACKET */
  3197. #line 262 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3198. { yygotominor.yy380 = new_scalar_or_array(ctx, yymsp[-3].minor.yy0.string, 1, yymsp[-1].minor.yy322); }
  3199. #line 3235 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3200. break;
  3201. case 98: /* scalar_or_array ::= IDENTIFIER */
  3202. #line 263 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3203. { yygotominor.yy380 = new_scalar_or_array(ctx, yymsp[0].minor.yy0.string, 0, NULL); }
  3204. #line 3240 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3205. break;
  3206. case 99: /* packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER DOT IDENTIFIER RPAREN */
  3207. #line 267 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3208. { yygotominor.yy8 = new_pack_offset(ctx, yymsp[-3].minor.yy0.string, yymsp[-1].minor.yy0.string); }
  3209. #line 3245 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3210. break;
  3211. case 100: /* packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER RPAREN */
  3212. #line 268 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3213. { yygotominor.yy8 = new_pack_offset(ctx, yymsp[-1].minor.yy0.string, NULL); }
  3214. #line 3250 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3215. break;
  3216. case 101: /* register ::= COLON REGISTER LPAREN IDENTIFIER RPAREN */
  3217. #line 274 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3218. { yygotominor.yy306 = yymsp[-1].minor.yy0.string; }
  3219. #line 3255 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3220. break;
  3221. case 102: /* annotations ::= LT annotation_list GT */
  3222. #line 278 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3223. { REVERSE_LINKED_LIST(MOJOSHADER_astAnnotations, yymsp[-1].minor.yy268); yygotominor.yy268 = yymsp[-1].minor.yy268; }
  3224. #line 3260 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3225. break;
  3226. case 103: /* annotation_list ::= annotation */
  3227. #line 282 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3228. { yygotominor.yy268 = yymsp[0].minor.yy268; }
  3229. #line 3265 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3230. break;
  3231. case 104: /* annotation_list ::= annotation_list annotation */
  3232. #line 283 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3233. { yygotominor.yy268 = yymsp[0].minor.yy268; yygotominor.yy268->next = yymsp[-1].minor.yy268; }
  3234. #line 3270 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3235. break;
  3236. case 105: /* annotation ::= datatype_scalar initializer SEMICOLON */
  3237. #line 288 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3238. { yygotominor.yy268 = new_annotation(ctx, yymsp[-2].minor.yy37, yymsp[-1].minor.yy322); }
  3239. #line 3275 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3240. break;
  3241. case 106: /* initializer_block_list ::= expression */
  3242. case 110: /* initializer ::= ASSIGN initializer_block */ yytestcase(yyruleno==110);
  3243. case 111: /* initializer ::= ASSIGN expression */ yytestcase(yyruleno==111);
  3244. case 224: /* postfix_expr ::= primary_expr */ yytestcase(yyruleno==224);
  3245. case 235: /* unary_expr ::= postfix_expr */ yytestcase(yyruleno==235);
  3246. case 238: /* unary_expr ::= PLUS cast_expr */ yytestcase(yyruleno==238);
  3247. case 242: /* cast_expr ::= unary_expr */ yytestcase(yyruleno==242);
  3248. case 244: /* multiplicative_expr ::= cast_expr */ yytestcase(yyruleno==244);
  3249. case 248: /* additive_expr ::= multiplicative_expr */ yytestcase(yyruleno==248);
  3250. case 251: /* shift_expr ::= additive_expr */ yytestcase(yyruleno==251);
  3251. case 254: /* relational_expr ::= shift_expr */ yytestcase(yyruleno==254);
  3252. case 259: /* equality_expr ::= relational_expr */ yytestcase(yyruleno==259);
  3253. case 262: /* and_expr ::= equality_expr */ yytestcase(yyruleno==262);
  3254. case 264: /* exclusive_or_expr ::= and_expr */ yytestcase(yyruleno==264);
  3255. case 266: /* inclusive_or_expr ::= exclusive_or_expr */ yytestcase(yyruleno==266);
  3256. case 268: /* logical_and_expr ::= inclusive_or_expr */ yytestcase(yyruleno==268);
  3257. case 270: /* logical_or_expr ::= logical_and_expr */ yytestcase(yyruleno==270);
  3258. case 272: /* conditional_expr ::= logical_or_expr */ yytestcase(yyruleno==272);
  3259. case 274: /* assignment_expr ::= conditional_expr */ yytestcase(yyruleno==274);
  3260. case 286: /* expression ::= assignment_expr */ yytestcase(yyruleno==286);
  3261. #line 292 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3262. { yygotominor.yy322 = yymsp[0].minor.yy322; }
  3263. #line 3299 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3264. break;
  3265. case 107: /* initializer_block_list ::= LBRACE initializer_block_list RBRACE */
  3266. case 109: /* initializer_block ::= LBRACE initializer_block_list RBRACE */ yytestcase(yyruleno==109);
  3267. case 223: /* primary_expr ::= LPAREN expression RPAREN */ yytestcase(yyruleno==223);
  3268. #line 293 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3269. { yygotominor.yy322 = yymsp[-1].minor.yy322; }
  3270. #line 3306 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3271. break;
  3272. case 108: /* initializer_block_list ::= initializer_block_list COMMA initializer_block_list */
  3273. case 287: /* expression ::= expression COMMA assignment_expr */ yytestcase(yyruleno==287);
  3274. #line 294 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3275. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_COMMA, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3276. #line 3312 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3277. break;
  3278. case 112: /* intrinsic_datatype ::= datatype_vector */
  3279. case 113: /* intrinsic_datatype ::= datatype_matrix */ yytestcase(yyruleno==113);
  3280. case 114: /* intrinsic_datatype ::= datatype_scalar */ yytestcase(yyruleno==114);
  3281. case 115: /* intrinsic_datatype ::= datatype_sampler */ yytestcase(yyruleno==115);
  3282. case 116: /* intrinsic_datatype ::= datatype_buffer */ yytestcase(yyruleno==116);
  3283. case 117: /* datatype ::= intrinsic_datatype */ yytestcase(yyruleno==117);
  3284. #line 306 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3285. { yygotominor.yy37 = yymsp[0].minor.yy37; }
  3286. #line 3322 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3287. break;
  3288. case 118: /* datatype ::= USERTYPE */
  3289. #line 314 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3290. { yygotominor.yy37 = yymsp[0].minor.yy0.datatype; }
  3291. #line 3327 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3292. break;
  3293. case 119: /* datatype_sampler ::= SAMPLER */
  3294. case 121: /* datatype_sampler ::= SAMPLER2D */ yytestcase(yyruleno==121);
  3295. #line 317 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3296. { yygotominor.yy37 = &ctx->dt_sampler2d; }
  3297. #line 3333 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3298. break;
  3299. case 120: /* datatype_sampler ::= SAMPLER1D */
  3300. #line 318 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3301. { yygotominor.yy37 = &ctx->dt_sampler1d; }
  3302. #line 3338 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3303. break;
  3304. case 122: /* datatype_sampler ::= SAMPLER3D */
  3305. #line 320 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3306. { yygotominor.yy37 = &ctx->dt_sampler3d; }
  3307. #line 3343 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3308. break;
  3309. case 123: /* datatype_sampler ::= SAMPLERCUBE */
  3310. #line 321 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3311. { yygotominor.yy37 = &ctx->dt_samplercube; }
  3312. #line 3348 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3313. break;
  3314. case 124: /* datatype_sampler ::= SAMPLER_STATE */
  3315. case 125: /* datatype_sampler ::= SAMPLERSTATE */ yytestcase(yyruleno==125);
  3316. #line 322 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3317. { yygotominor.yy37 = &ctx->dt_samplerstate; }
  3318. #line 3354 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3319. break;
  3320. case 126: /* datatype_sampler ::= SAMPLERCOMPARISONSTATE */
  3321. #line 324 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3322. { yygotominor.yy37 = &ctx->dt_samplercompstate; }
  3323. #line 3359 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3324. break;
  3325. case 127: /* datatype_scalar ::= BOOL */
  3326. #line 327 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3327. { yygotominor.yy37 = &ctx->dt_bool; }
  3328. #line 3364 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3329. break;
  3330. case 128: /* datatype_scalar ::= INT */
  3331. #line 328 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3332. { yygotominor.yy37 = &ctx->dt_int; }
  3333. #line 3369 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3334. break;
  3335. case 129: /* datatype_scalar ::= UINT */
  3336. #line 329 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3337. { yygotominor.yy37 = &ctx->dt_uint; }
  3338. #line 3374 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3339. break;
  3340. case 130: /* datatype_scalar ::= HALF */
  3341. #line 330 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3342. { yygotominor.yy37 = &ctx->dt_half; }
  3343. #line 3379 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3344. break;
  3345. case 131: /* datatype_scalar ::= FLOAT */
  3346. #line 331 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3347. { yygotominor.yy37 = &ctx->dt_float; }
  3348. #line 3384 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3349. break;
  3350. case 132: /* datatype_scalar ::= DOUBLE */
  3351. #line 332 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3352. { yygotominor.yy37 = &ctx->dt_double; }
  3353. #line 3389 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3354. break;
  3355. case 133: /* datatype_scalar ::= STRING */
  3356. #line 333 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3357. { yygotominor.yy37 = &ctx->dt_string; }
  3358. #line 3394 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3359. break;
  3360. case 134: /* datatype_scalar ::= SNORM FLOAT */
  3361. #line 334 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3362. { yygotominor.yy37 = &ctx->dt_float_snorm; }
  3363. #line 3399 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3364. break;
  3365. case 135: /* datatype_scalar ::= UNORM FLOAT */
  3366. #line 335 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3367. { yygotominor.yy37 = &ctx->dt_float_unorm; }
  3368. #line 3404 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3369. break;
  3370. case 136: /* datatype_buffer ::= BUFFER LT BOOL GT */
  3371. #line 338 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3372. { yygotominor.yy37 = &ctx->dt_buf_bool; }
  3373. #line 3409 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3374. break;
  3375. case 137: /* datatype_buffer ::= BUFFER LT INT GT */
  3376. #line 339 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3377. { yygotominor.yy37 = &ctx->dt_buf_int; }
  3378. #line 3414 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3379. break;
  3380. case 138: /* datatype_buffer ::= BUFFER LT UINT GT */
  3381. #line 340 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3382. { yygotominor.yy37 = &ctx->dt_buf_uint; }
  3383. #line 3419 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3384. break;
  3385. case 139: /* datatype_buffer ::= BUFFER LT HALF GT */
  3386. #line 341 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3387. { yygotominor.yy37 = &ctx->dt_buf_half; }
  3388. #line 3424 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3389. break;
  3390. case 140: /* datatype_buffer ::= BUFFER LT FLOAT GT */
  3391. #line 342 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3392. { yygotominor.yy37 = &ctx->dt_buf_float; }
  3393. #line 3429 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3394. break;
  3395. case 141: /* datatype_buffer ::= BUFFER LT DOUBLE GT */
  3396. #line 343 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3397. { yygotominor.yy37 = &ctx->dt_buf_double; }
  3398. #line 3434 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3399. break;
  3400. case 142: /* datatype_buffer ::= BUFFER LT SNORM FLOAT GT */
  3401. #line 344 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3402. { yygotominor.yy37 = &ctx->dt_buf_float_snorm; }
  3403. #line 3439 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3404. break;
  3405. case 143: /* datatype_buffer ::= BUFFER LT UNORM FLOAT GT */
  3406. #line 345 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3407. { yygotominor.yy37 = &ctx->dt_buf_float_unorm; }
  3408. #line 3444 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3409. break;
  3410. case 144: /* datatype_vector ::= VECTOR LT datatype_scalar COMMA INT_CONSTANT GT */
  3411. #line 348 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3412. { yygotominor.yy37 = new_datatype_vector(ctx, yymsp[-3].minor.yy37, (int) yymsp[-1].minor.yy0.i64); }
  3413. #line 3449 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3414. break;
  3415. case 145: /* datatype_matrix ::= MATRIX LT datatype_scalar COMMA INT_CONSTANT COMMA INT_CONSTANT GT */
  3416. #line 351 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3417. { yygotominor.yy37 = new_datatype_matrix(ctx, yymsp[-5].minor.yy37, (int) yymsp[-3].minor.yy0.i64, (int) yymsp[-1].minor.yy0.i64); }
  3418. #line 3454 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3419. break;
  3420. case 146: /* statement_block ::= LBRACE RBRACE */
  3421. #line 355 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3422. { yygotominor.yy233 = new_block_statement(ctx, NULL); }
  3423. #line 3459 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3424. break;
  3425. case 147: /* statement_block ::= LBRACE statement_list RBRACE */
  3426. #line 356 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3427. { REVERSE_LINKED_LIST(MOJOSHADER_astStatement, yymsp[-1].minor.yy233); yygotominor.yy233 = new_block_statement(ctx, yymsp[-1].minor.yy233); }
  3428. #line 3464 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3429. break;
  3430. case 148: /* statement_list ::= statement */
  3431. case 172: /* statement ::= statement_block */ yytestcase(yyruleno==172);
  3432. case 173: /* statement ::= for_statement */ yytestcase(yyruleno==173);
  3433. #line 360 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3434. { yygotominor.yy233 = yymsp[0].minor.yy233; }
  3435. #line 3471 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3436. break;
  3437. case 149: /* statement_list ::= statement_list statement */
  3438. #line 361 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3439. { yygotominor.yy233 = yymsp[0].minor.yy233; yygotominor.yy233->next = yymsp[-1].minor.yy233; }
  3440. #line 3476 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3441. break;
  3442. case 150: /* statement_attribute ::= ISOLATE */
  3443. case 151: /* statement_attribute ::= MAXINSTRUCTIONCOUNT LPAREN INT_CONSTANT RPAREN */ yytestcase(yyruleno==151);
  3444. case 152: /* statement_attribute ::= NOEXPRESSIONOPTIMIZATIONS */ yytestcase(yyruleno==152);
  3445. case 153: /* statement_attribute ::= REMOVEUNUSEDINPUTS */ yytestcase(yyruleno==153);
  3446. case 154: /* statement_attribute ::= UNUSED */ yytestcase(yyruleno==154);
  3447. case 155: /* statement_attribute ::= XPS */ yytestcase(yyruleno==155);
  3448. case 176: /* while_intro ::= LBRACKET LOOP RBRACKET WHILE */ yytestcase(yyruleno==176);
  3449. case 181: /* for_intro ::= LBRACKET LOOP RBRACKET FOR */ yytestcase(yyruleno==181);
  3450. case 197: /* do_intro ::= LBRACKET LOOP RBRACKET DO */ yytestcase(yyruleno==197);
  3451. #line 367 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3452. { yygotominor.yy270 = 0; }
  3453. #line 3489 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3454. break;
  3455. case 156: /* statement ::= BREAK SEMICOLON */
  3456. #line 376 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3457. { yygotominor.yy233 = new_break_statement(ctx); }
  3458. #line 3494 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3459. break;
  3460. case 157: /* statement ::= CONTINUE SEMICOLON */
  3461. #line 377 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3462. { yygotominor.yy233 = new_continue_statement(ctx); }
  3463. #line 3499 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3464. break;
  3465. case 158: /* statement ::= DISCARD SEMICOLON */
  3466. #line 378 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3467. { yygotominor.yy233 = new_discard_statement(ctx); }
  3468. #line 3504 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3469. break;
  3470. case 159: /* statement ::= LBRACKET statement_attribute RBRACKET statement_block */
  3471. #line 379 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3472. { yygotominor.yy233 = yymsp[0].minor.yy233; /* !!! FIXME: yygotominor.yy233->attributes = yymsp[-2].minor.yy270;*/ yymsp[-2].minor.yy270 = 0; }
  3473. #line 3509 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3474. break;
  3475. case 160: /* statement ::= variable_declaration */
  3476. #line 380 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3477. { yygotominor.yy233 = new_vardecl_statement(ctx, yymsp[0].minor.yy24); }
  3478. #line 3514 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3479. break;
  3480. case 161: /* statement ::= struct_declaration SEMICOLON */
  3481. #line 381 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3482. { yygotominor.yy233 = new_struct_statement(ctx, yymsp[-1].minor.yy249); }
  3483. #line 3519 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3484. break;
  3485. case 162: /* statement ::= do_intro DO statement WHILE LPAREN expression RPAREN SEMICOLON */
  3486. #line 382 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3487. { yygotominor.yy233 = new_do_statement(ctx, yymsp[-7].minor.yy270, yymsp[-5].minor.yy233, yymsp[-2].minor.yy322); }
  3488. #line 3524 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3489. break;
  3490. case 163: /* statement ::= while_intro LPAREN expression RPAREN statement */
  3491. #line 383 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3492. { yygotominor.yy233 = new_while_statement(ctx, yymsp[-4].minor.yy270, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
  3493. #line 3529 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3494. break;
  3495. case 164: /* statement ::= if_intro LPAREN expression RPAREN statement */
  3496. #line 384 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3497. { yygotominor.yy233 = new_if_statement(ctx, yymsp[-4].minor.yy270, yymsp[-2].minor.yy322, yymsp[0].minor.yy233, NULL); }
  3498. #line 3534 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3499. break;
  3500. case 165: /* statement ::= if_intro LPAREN expression RPAREN statement ELSE statement */
  3501. #line 385 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3502. { yygotominor.yy233 = new_if_statement(ctx, yymsp[-6].minor.yy270, yymsp[-4].minor.yy322, yymsp[-2].minor.yy233, yymsp[0].minor.yy233); }
  3503. #line 3539 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3504. break;
  3505. case 166: /* statement ::= switch_intro LPAREN expression RPAREN LBRACE switch_case_list RBRACE */
  3506. #line 386 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3507. { REVERSE_LINKED_LIST(MOJOSHADER_astSwitchCases, yymsp[-1].minor.yy165); yygotominor.yy233 = new_switch_statement(ctx, yymsp[-6].minor.yy270, yymsp[-4].minor.yy322, yymsp[-1].minor.yy165); }
  3508. #line 3544 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3509. break;
  3510. case 167: /* statement ::= typedef */
  3511. #line 387 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3512. { yygotominor.yy233 = new_typedef_statement(ctx, yymsp[0].minor.yy71); }
  3513. #line 3549 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3514. break;
  3515. case 168: /* statement ::= SEMICOLON */
  3516. #line 388 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3517. { yygotominor.yy233 = new_empty_statement(ctx); }
  3518. #line 3554 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3519. break;
  3520. case 169: /* statement ::= expression SEMICOLON */
  3521. #line 389 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3522. { yygotominor.yy233 = new_expr_statement(ctx, yymsp[-1].minor.yy322); }
  3523. #line 3559 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3524. break;
  3525. case 170: /* statement ::= RETURN SEMICOLON */
  3526. #line 390 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3527. { yygotominor.yy233 = new_return_statement(ctx, NULL); }
  3528. #line 3564 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3529. break;
  3530. case 171: /* statement ::= RETURN expression SEMICOLON */
  3531. #line 391 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3532. { yygotominor.yy233 = new_return_statement(ctx, yymsp[-1].minor.yy322); }
  3533. #line 3569 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3534. break;
  3535. case 174: /* while_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET WHILE */
  3536. case 179: /* for_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET FOR */ yytestcase(yyruleno==179);
  3537. #line 397 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3538. { yygotominor.yy270 = (yymsp[-3].minor.yy0.i64 < 0) ? 0 : yymsp[-3].minor.yy0.i64; }
  3539. #line 3575 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3540. break;
  3541. case 175: /* while_intro ::= LBRACKET UNROLL RBRACKET WHILE */
  3542. case 180: /* for_intro ::= LBRACKET UNROLL RBRACKET FOR */ yytestcase(yyruleno==180);
  3543. case 196: /* do_intro ::= LBRACKET UNROLL RBRACKET DO */ yytestcase(yyruleno==196);
  3544. #line 398 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3545. { yygotominor.yy270 = -1; }
  3546. #line 3582 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3547. break;
  3548. case 177: /* while_intro ::= WHILE */
  3549. case 182: /* for_intro ::= FOR */ yytestcase(yyruleno==182);
  3550. case 198: /* do_intro ::= DO */ yytestcase(yyruleno==198);
  3551. #line 400 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3552. { yygotominor.yy270 = -2; }
  3553. #line 3589 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3554. break;
  3555. case 178: /* for_statement ::= for_intro for_details */
  3556. #line 404 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3557. { yygotominor.yy233 = yymsp[0].minor.yy233; ((MOJOSHADER_astForStatement *) yygotominor.yy233)->unroll = yymsp[-1].minor.yy270; }
  3558. #line 3594 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3559. break;
  3560. case 183: /* for_details ::= LPAREN expression SEMICOLON expression SEMICOLON expression RPAREN statement */
  3561. #line 414 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3562. { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-6].minor.yy322, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
  3563. #line 3599 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3564. break;
  3565. case 184: /* for_details ::= LPAREN SEMICOLON SEMICOLON RPAREN statement */
  3566. #line 415 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3567. { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, NULL, NULL, yymsp[0].minor.yy233); }
  3568. #line 3604 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3569. break;
  3570. case 185: /* for_details ::= LPAREN SEMICOLON SEMICOLON expression RPAREN statement */
  3571. #line 416 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3572. { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, NULL, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
  3573. #line 3609 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3574. break;
  3575. case 186: /* for_details ::= LPAREN SEMICOLON expression SEMICOLON RPAREN statement */
  3576. #line 417 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3577. { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, yymsp[-3].minor.yy322, NULL, yymsp[0].minor.yy233); }
  3578. #line 3614 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3579. break;
  3580. case 187: /* for_details ::= LPAREN SEMICOLON expression SEMICOLON expression RPAREN statement */
  3581. #line 418 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3582. { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
  3583. #line 3619 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3584. break;
  3585. case 188: /* for_details ::= LPAREN expression SEMICOLON SEMICOLON RPAREN statement */
  3586. #line 419 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3587. { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-4].minor.yy322, NULL, NULL, yymsp[0].minor.yy233); }
  3588. #line 3624 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3589. break;
  3590. case 189: /* for_details ::= LPAREN expression SEMICOLON SEMICOLON expression RPAREN statement */
  3591. #line 420 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3592. { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-5].minor.yy322, NULL, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
  3593. #line 3629 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3594. break;
  3595. case 190: /* for_details ::= LPAREN expression SEMICOLON expression SEMICOLON RPAREN statement */
  3596. #line 421 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3597. { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-5].minor.yy322, yymsp[-3].minor.yy322, NULL, yymsp[0].minor.yy233); }
  3598. #line 3634 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3599. break;
  3600. case 191: /* for_details ::= LPAREN variable_declaration expression SEMICOLON expression RPAREN statement */
  3601. #line 422 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3602. { yygotominor.yy233 = new_for_statement(ctx, yymsp[-5].minor.yy24, NULL, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
  3603. #line 3639 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3604. break;
  3605. case 192: /* for_details ::= LPAREN variable_declaration SEMICOLON RPAREN statement */
  3606. #line 423 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3607. { yygotominor.yy233 = new_for_statement(ctx, yymsp[-3].minor.yy24, NULL, NULL, NULL, yymsp[0].minor.yy233); }
  3608. #line 3644 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3609. break;
  3610. case 193: /* for_details ::= LPAREN variable_declaration SEMICOLON expression RPAREN statement */
  3611. #line 424 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3612. { yygotominor.yy233 = new_for_statement(ctx, yymsp[-4].minor.yy24, NULL, yymsp[-2].minor.yy322, NULL, yymsp[0].minor.yy233); }
  3613. #line 3649 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3614. break;
  3615. case 194: /* for_details ::= LPAREN variable_declaration expression SEMICOLON RPAREN statement */
  3616. #line 425 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3617. { yygotominor.yy233 = new_for_statement(ctx, yymsp[-4].minor.yy24, NULL, yymsp[-3].minor.yy322, NULL, yymsp[0].minor.yy233); }
  3618. #line 3654 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3619. break;
  3620. case 195: /* do_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET DO */
  3621. #line 428 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3622. { yygotominor.yy270 = (yymsp[-3].minor.yy0.i64 < 0) ? 0 : (int) yymsp[-3].minor.yy0.i64; }
  3623. #line 3659 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3624. break;
  3625. case 199: /* if_intro ::= LBRACKET BRANCH RBRACKET IF */
  3626. #line 434 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3627. { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_BRANCH; }
  3628. #line 3664 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3629. break;
  3630. case 200: /* if_intro ::= LBRACKET FLATTEN RBRACKET IF */
  3631. #line 435 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3632. { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_FLATTEN; }
  3633. #line 3669 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3634. break;
  3635. case 201: /* if_intro ::= LBRACKET IFALL RBRACKET IF */
  3636. #line 436 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3637. { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_IFALL; }
  3638. #line 3674 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3639. break;
  3640. case 202: /* if_intro ::= LBRACKET IFANY RBRACKET IF */
  3641. #line 437 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3642. { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_IFANY; }
  3643. #line 3679 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3644. break;
  3645. case 203: /* if_intro ::= LBRACKET PREDICATE RBRACKET IF */
  3646. #line 438 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3647. { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_PREDICATE; }
  3648. #line 3684 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3649. break;
  3650. case 204: /* if_intro ::= LBRACKET PREDICATEBLOCK RBRACKET IF */
  3651. #line 439 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3652. { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_PREDICATEBLOCK; }
  3653. #line 3689 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3654. break;
  3655. case 205: /* if_intro ::= IF */
  3656. #line 440 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3657. { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_NONE; }
  3658. #line 3694 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3659. break;
  3660. case 206: /* switch_intro ::= LBRACKET FLATTEN RBRACKET SWITCH */
  3661. #line 443 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3662. { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_FLATTEN; }
  3663. #line 3699 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3664. break;
  3665. case 207: /* switch_intro ::= LBRACKET BRANCH RBRACKET SWITCH */
  3666. #line 444 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3667. { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_BRANCH; }
  3668. #line 3704 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3669. break;
  3670. case 208: /* switch_intro ::= LBRACKET FORCECASE RBRACKET SWITCH */
  3671. #line 445 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3672. { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_FORCECASE; }
  3673. #line 3709 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3674. break;
  3675. case 209: /* switch_intro ::= LBRACKET CALL RBRACKET SWITCH */
  3676. #line 446 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3677. { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_CALL; }
  3678. #line 3714 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3679. break;
  3680. case 210: /* switch_intro ::= SWITCH */
  3681. #line 447 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3682. { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_NONE; }
  3683. #line 3719 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3684. break;
  3685. case 211: /* switch_case_list ::= switch_case */
  3686. #line 451 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3687. { yygotominor.yy165 = yymsp[0].minor.yy165; }
  3688. #line 3724 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3689. break;
  3690. case 212: /* switch_case_list ::= switch_case_list switch_case */
  3691. #line 452 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3692. { yygotominor.yy165 = yymsp[0].minor.yy165; yygotominor.yy165->next = yymsp[-1].minor.yy165; }
  3693. #line 3729 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3694. break;
  3695. case 213: /* switch_case ::= CASE expression COLON statement_list */
  3696. #line 458 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3697. { REVERSE_LINKED_LIST(MOJOSHADER_astStatement, yymsp[0].minor.yy233); yygotominor.yy165 = new_switch_case(ctx, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
  3698. #line 3734 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3699. break;
  3700. case 214: /* switch_case ::= CASE expression COLON */
  3701. #line 459 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3702. { yygotominor.yy165 = new_switch_case(ctx, yymsp[-1].minor.yy322, NULL); }
  3703. #line 3739 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3704. break;
  3705. case 215: /* switch_case ::= DEFAULT COLON statement_list */
  3706. #line 460 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3707. { REVERSE_LINKED_LIST(MOJOSHADER_astStatement, yymsp[0].minor.yy233); yygotominor.yy165 = new_switch_case(ctx, NULL, yymsp[0].minor.yy233); }
  3708. #line 3744 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3709. break;
  3710. case 216: /* switch_case ::= DEFAULT COLON */
  3711. #line 461 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3712. { yygotominor.yy165 = new_switch_case(ctx, NULL, NULL); }
  3713. #line 3749 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3714. break;
  3715. case 217: /* primary_expr ::= IDENTIFIER */
  3716. #line 466 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3717. { yygotominor.yy322 = new_identifier_expr(ctx, yymsp[0].minor.yy0.string); }
  3718. #line 3754 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3719. break;
  3720. case 218: /* primary_expr ::= INT_CONSTANT */
  3721. #line 467 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3722. { yygotominor.yy322 = new_literal_int_expr(ctx, yymsp[0].minor.yy0.i64); }
  3723. #line 3759 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3724. break;
  3725. case 219: /* primary_expr ::= FLOAT_CONSTANT */
  3726. #line 468 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3727. { yygotominor.yy322 = new_literal_float_expr(ctx, yymsp[0].minor.yy0.dbl); }
  3728. #line 3764 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3729. break;
  3730. case 220: /* primary_expr ::= STRING_LITERAL */
  3731. #line 469 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3732. { yygotominor.yy322 = new_literal_string_expr(ctx, yymsp[0].minor.yy0.string); }
  3733. #line 3769 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3734. break;
  3735. case 221: /* primary_expr ::= TRUE */
  3736. #line 470 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3737. { yygotominor.yy322 = new_literal_boolean_expr(ctx, 1); }
  3738. #line 3774 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3739. break;
  3740. case 222: /* primary_expr ::= FALSE */
  3741. #line 471 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3742. { yygotominor.yy322 = new_literal_boolean_expr(ctx, 0); }
  3743. #line 3779 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3744. break;
  3745. case 225: /* postfix_expr ::= postfix_expr LBRACKET expression RBRACKET */
  3746. #line 477 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3747. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_DEREF_ARRAY, yymsp[-3].minor.yy322, yymsp[-1].minor.yy322); }
  3748. #line 3784 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3749. break;
  3750. case 226: /* postfix_expr ::= IDENTIFIER arguments */
  3751. #line 478 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3752. { yygotominor.yy322 = new_callfunc_expr(ctx, yymsp[-1].minor.yy0.string, yymsp[0].minor.yy26); }
  3753. #line 3789 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3754. break;
  3755. case 227: /* postfix_expr ::= datatype arguments */
  3756. #line 479 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3757. { yygotominor.yy322 = new_constructor_expr(ctx, yymsp[-1].minor.yy37, yymsp[0].minor.yy26); }
  3758. #line 3794 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3759. break;
  3760. case 228: /* postfix_expr ::= postfix_expr DOT IDENTIFIER */
  3761. #line 480 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3762. { yygotominor.yy322 = new_deref_struct_expr(ctx, yymsp[-2].minor.yy322, yymsp[0].minor.yy0.string); }
  3763. #line 3799 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3764. break;
  3765. case 229: /* postfix_expr ::= postfix_expr PLUSPLUS */
  3766. #line 481 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3767. { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_POSTINCREMENT, yymsp[-1].minor.yy322); }
  3768. #line 3804 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3769. break;
  3770. case 230: /* postfix_expr ::= postfix_expr MINUSMINUS */
  3771. #line 482 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3772. { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_POSTDECREMENT, yymsp[-1].minor.yy322); }
  3773. #line 3809 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3774. break;
  3775. case 231: /* arguments ::= LPAREN RPAREN */
  3776. #line 486 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3777. { yygotominor.yy26 = NULL; }
  3778. #line 3814 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3779. break;
  3780. case 232: /* arguments ::= LPAREN argument_list RPAREN */
  3781. #line 487 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3782. { REVERSE_LINKED_LIST(MOJOSHADER_astArguments, yymsp[-1].minor.yy26); yygotominor.yy26 = yymsp[-1].minor.yy26; }
  3783. #line 3819 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3784. break;
  3785. case 233: /* argument_list ::= assignment_expr */
  3786. #line 491 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3787. { yygotominor.yy26 = new_argument(ctx, yymsp[0].minor.yy322); }
  3788. #line 3824 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3789. break;
  3790. case 234: /* argument_list ::= argument_list COMMA assignment_expr */
  3791. #line 492 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3792. { yygotominor.yy26 = new_argument(ctx, yymsp[0].minor.yy322); yygotominor.yy26->next = yymsp[-2].minor.yy26; }
  3793. #line 3829 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3794. break;
  3795. case 236: /* unary_expr ::= PLUSPLUS unary_expr */
  3796. #line 497 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3797. { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_PREINCREMENT, yymsp[0].minor.yy322); }
  3798. #line 3834 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3799. break;
  3800. case 237: /* unary_expr ::= MINUSMINUS unary_expr */
  3801. #line 498 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3802. { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_PREDECREMENT, yymsp[0].minor.yy322); }
  3803. #line 3839 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3804. break;
  3805. case 239: /* unary_expr ::= MINUS cast_expr */
  3806. #line 500 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3807. { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_NEGATE, yymsp[0].minor.yy322); }
  3808. #line 3844 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3809. break;
  3810. case 240: /* unary_expr ::= COMPLEMENT cast_expr */
  3811. #line 501 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3812. { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_COMPLEMENT, yymsp[0].minor.yy322); }
  3813. #line 3849 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3814. break;
  3815. case 241: /* unary_expr ::= EXCLAMATION cast_expr */
  3816. #line 502 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3817. { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_NOT, yymsp[0].minor.yy322); }
  3818. #line 3854 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3819. break;
  3820. case 243: /* cast_expr ::= LPAREN datatype RPAREN cast_expr */
  3821. #line 507 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3822. { yygotominor.yy322 = new_cast_expr(ctx, yymsp[-2].minor.yy37, yymsp[0].minor.yy322); }
  3823. #line 3859 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3824. break;
  3825. case 245: /* multiplicative_expr ::= multiplicative_expr STAR cast_expr */
  3826. #line 512 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3827. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MULTIPLY, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3828. #line 3864 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3829. break;
  3830. case 246: /* multiplicative_expr ::= multiplicative_expr SLASH cast_expr */
  3831. #line 513 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3832. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_DIVIDE, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3833. #line 3869 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3834. break;
  3835. case 247: /* multiplicative_expr ::= multiplicative_expr PERCENT cast_expr */
  3836. #line 514 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3837. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MODULO, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3838. #line 3874 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3839. break;
  3840. case 249: /* additive_expr ::= additive_expr PLUS multiplicative_expr */
  3841. #line 519 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3842. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ADD, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3843. #line 3879 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3844. break;
  3845. case 250: /* additive_expr ::= additive_expr MINUS multiplicative_expr */
  3846. #line 520 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3847. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_SUBTRACT, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3848. #line 3884 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3849. break;
  3850. case 252: /* shift_expr ::= shift_expr LSHIFT additive_expr */
  3851. #line 525 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3852. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LSHIFT, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3853. #line 3889 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3854. break;
  3855. case 253: /* shift_expr ::= shift_expr RSHIFT additive_expr */
  3856. #line 526 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3857. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_RSHIFT, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3858. #line 3894 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3859. break;
  3860. case 255: /* relational_expr ::= relational_expr LT shift_expr */
  3861. #line 531 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3862. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LESSTHAN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3863. #line 3899 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3864. break;
  3865. case 256: /* relational_expr ::= relational_expr GT shift_expr */
  3866. #line 532 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3867. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_GREATERTHAN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3868. #line 3904 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3869. break;
  3870. case 257: /* relational_expr ::= relational_expr LEQ shift_expr */
  3871. #line 533 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3872. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LESSTHANOREQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3873. #line 3909 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3874. break;
  3875. case 258: /* relational_expr ::= relational_expr GEQ shift_expr */
  3876. #line 534 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3877. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_GREATERTHANOREQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3878. #line 3914 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3879. break;
  3880. case 260: /* equality_expr ::= equality_expr EQL relational_expr */
  3881. #line 539 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3882. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_EQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3883. #line 3919 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3884. break;
  3885. case 261: /* equality_expr ::= equality_expr NEQ relational_expr */
  3886. #line 540 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3887. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_NOTEQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3888. #line 3924 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3889. break;
  3890. case 263: /* and_expr ::= and_expr AND equality_expr */
  3891. #line 545 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3892. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_BINARYAND, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3893. #line 3929 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3894. break;
  3895. case 265: /* exclusive_or_expr ::= exclusive_or_expr XOR and_expr */
  3896. #line 550 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3897. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_BINARYXOR, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3898. #line 3934 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3899. break;
  3900. case 267: /* inclusive_or_expr ::= inclusive_or_expr OR exclusive_or_expr */
  3901. #line 555 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3902. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_BINARYOR, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3903. #line 3939 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3904. break;
  3905. case 269: /* logical_and_expr ::= logical_and_expr ANDAND inclusive_or_expr */
  3906. #line 560 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3907. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LOGICALAND, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3908. #line 3944 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3909. break;
  3910. case 271: /* logical_or_expr ::= logical_or_expr OROR logical_and_expr */
  3911. #line 565 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3912. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LOGICALOR, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3913. #line 3949 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3914. break;
  3915. case 273: /* conditional_expr ::= logical_or_expr QUESTION logical_or_expr COLON conditional_expr */
  3916. #line 570 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3917. { yygotominor.yy322 = new_ternary_expr(ctx, MOJOSHADER_AST_OP_CONDITIONAL, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3918. #line 3954 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3919. break;
  3920. case 275: /* assignment_expr ::= unary_expr ASSIGN assignment_expr */
  3921. #line 575 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3922. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3923. #line 3959 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3924. break;
  3925. case 276: /* assignment_expr ::= unary_expr MULASSIGN assignment_expr */
  3926. #line 576 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3927. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MULASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3928. #line 3964 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3929. break;
  3930. case 277: /* assignment_expr ::= unary_expr DIVASSIGN assignment_expr */
  3931. #line 577 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3932. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_DIVASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3933. #line 3969 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3934. break;
  3935. case 278: /* assignment_expr ::= unary_expr MODASSIGN assignment_expr */
  3936. #line 578 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3937. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MODASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3938. #line 3974 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3939. break;
  3940. case 279: /* assignment_expr ::= unary_expr ADDASSIGN assignment_expr */
  3941. #line 579 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3942. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ADDASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3943. #line 3979 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3944. break;
  3945. case 280: /* assignment_expr ::= unary_expr SUBASSIGN assignment_expr */
  3946. #line 580 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3947. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_SUBASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3948. #line 3984 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3949. break;
  3950. case 281: /* assignment_expr ::= unary_expr LSHIFTASSIGN assignment_expr */
  3951. #line 581 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3952. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LSHIFTASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3953. #line 3989 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3954. break;
  3955. case 282: /* assignment_expr ::= unary_expr RSHIFTASSIGN assignment_expr */
  3956. #line 582 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3957. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_RSHIFTASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3958. #line 3994 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3959. break;
  3960. case 283: /* assignment_expr ::= unary_expr ANDASSIGN assignment_expr */
  3961. #line 583 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3962. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ANDASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3963. #line 3999 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3964. break;
  3965. case 284: /* assignment_expr ::= unary_expr XORASSIGN assignment_expr */
  3966. #line 584 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3967. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_XORASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3968. #line 4004 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3969. break;
  3970. case 285: /* assignment_expr ::= unary_expr ORASSIGN assignment_expr */
  3971. #line 585 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  3972. { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ORASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
  3973. #line 4009 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  3974. break;
  3975. default:
  3976. break;
  3977. };
  3978. yygoto = yyRuleInfo[yyruleno].lhs;
  3979. yysize = yyRuleInfo[yyruleno].nrhs;
  3980. yypParser->yyidx -= yysize;
  3981. yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
  3982. if( yyact < YYNSTATE ){
  3983. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  3984. /* If we are not debugging and the reduce action popped at least
  3985. ** one element off the stack, then we can push the new element back
  3986. ** onto the stack here, and skip the stack overflow test in yy_shift().
  3987. ** That gives a significant speed improvement. */
  3988. if( yysize ){
  3989. yypParser->yyidx++;
  3990. yymsp -= yysize-1;
  3991. yymsp->stateno = (YYACTIONTYPE)yyact;
  3992. yymsp->major = (YYCODETYPE)yygoto;
  3993. yymsp->minor = yygotominor;
  3994. }else
  3995. #endif
  3996. {
  3997. yy_shift(yypParser,yyact,yygoto,&yygotominor);
  3998. }
  3999. }else{
  4000. assert( yyact == YYNSTATE + YYNRULE + 1 );
  4001. yy_accept(yypParser);
  4002. }
  4003. }
  4004. /*
  4005. ** The following code executes when the parse fails
  4006. */
  4007. #ifndef YYNOERRORRECOVERY
  4008. static void yy_parse_failed(
  4009. yyParser *yypParser /* The parser */
  4010. ){
  4011. ParseHLSLARG_FETCH;
  4012. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  4013. if( yyTraceFILE ){
  4014. fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
  4015. }
  4016. #endif
  4017. while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  4018. /* Here code is inserted which will be executed whenever the
  4019. ** parser fails */
  4020. #line 42 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  4021. // !!! FIXME: make this a proper fail() function.
  4022. fail(ctx, "Giving up. Parser is hopelessly lost...");
  4023. #line 4061 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  4024. ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument variable */
  4025. }
  4026. #endif /* YYNOERRORRECOVERY */
  4027. /*
  4028. ** The following code executes when a syntax error first occurs.
  4029. */
  4030. static void yy_syntax_error(
  4031. yyParser *yypParser, /* The parser */
  4032. int yymajor, /* The major type of the error token */
  4033. YYMINORTYPE yyminor /* The minor type of the error token */
  4034. ){
  4035. ParseHLSLARG_FETCH;
  4036. #define TOKEN (yyminor.yy0)
  4037. #line 37 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
  4038. // !!! FIXME: make this a proper fail() function.
  4039. fail(ctx, "Syntax error");
  4040. #line 4080 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
  4041. ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument variable */
  4042. }
  4043. /*
  4044. ** The following is executed when the parser accepts
  4045. */
  4046. static void yy_accept(
  4047. yyParser *yypParser /* The parser */
  4048. ){
  4049. ParseHLSLARG_FETCH;
  4050. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  4051. if( yyTraceFILE ){
  4052. fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
  4053. }
  4054. #endif
  4055. while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  4056. /* Here code is inserted which will be executed whenever the
  4057. ** parser accepts */
  4058. ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument variable */
  4059. }
  4060. /* The main parser program.
  4061. ** The first argument is a pointer to a structure obtained from
  4062. ** "ParseHLSLAlloc" which describes the current state of the parser.
  4063. ** The second argument is the major token number. The third is
  4064. ** the minor token. The fourth optional argument is whatever the
  4065. ** user wants (and specified in the grammar) and is available for
  4066. ** use by the action routines.
  4067. **
  4068. ** Inputs:
  4069. ** <ul>
  4070. ** <li> A pointer to the parser (an opaque structure.)
  4071. ** <li> The major token number.
  4072. ** <li> The minor token number.
  4073. ** <li> An option argument of a grammar-specified type.
  4074. ** </ul>
  4075. **
  4076. ** Outputs:
  4077. ** None.
  4078. */
  4079. #if __MOJOSHADER__
  4080. static
  4081. #endif
  4082. void ParseHLSL(
  4083. void *yyp, /* The parser */
  4084. int yymajor, /* The major token code number */
  4085. ParseHLSLTOKENTYPE yyminor /* The value for the token */
  4086. ParseHLSLARG_PDECL /* Optional %extra_argument parameter */
  4087. ){
  4088. YYMINORTYPE yyminorunion;
  4089. int yyact; /* The parser action. */
  4090. int yyendofinput; /* True if we are at the end of input */
  4091. #ifdef YYERRORSYMBOL
  4092. int yyerrorhit = 0; /* True if yymajor has invoked an error */
  4093. #endif
  4094. yyParser *yypParser; /* The parser */
  4095. /* (re)initialize the parser, if necessary */
  4096. yypParser = (yyParser*)yyp;
  4097. if( yypParser->yyidx<0 ){
  4098. #if YYSTACKDEPTH<=0
  4099. if( yypParser->yystksz <=0 ){
  4100. /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
  4101. yyminorunion = yyzerominor;
  4102. yyStackOverflow(yypParser, &yyminorunion);
  4103. return;
  4104. }
  4105. #endif
  4106. yypParser->yyidx = 0;
  4107. yypParser->yyerrcnt = -1;
  4108. yypParser->yystack[0].stateno = 0;
  4109. yypParser->yystack[0].major = 0;
  4110. }
  4111. yyminorunion.yy0 = yyminor;
  4112. yyendofinput = (yymajor==0);
  4113. ParseHLSLARG_STORE;
  4114. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  4115. if( yyTraceFILE ){
  4116. fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
  4117. }
  4118. #endif
  4119. do{
  4120. yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
  4121. if( yyact<YYNSTATE ){
  4122. assert( !yyendofinput ); /* Impossible to shift the $ token */
  4123. yy_shift(yypParser,yyact,yymajor,&yyminorunion);
  4124. yypParser->yyerrcnt--;
  4125. yymajor = YYNOCODE;
  4126. }else if( yyact < YYNSTATE + YYNRULE ){
  4127. yy_reduce(yypParser,yyact-YYNSTATE);
  4128. }else{
  4129. assert( yyact == YY_ERROR_ACTION );
  4130. #ifdef YYERRORSYMBOL
  4131. int yymx;
  4132. #endif
  4133. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  4134. if( yyTraceFILE ){
  4135. fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
  4136. }
  4137. #endif
  4138. #ifdef YYERRORSYMBOL
  4139. /* A syntax error has occurred.
  4140. ** The response to an error depends upon whether or not the
  4141. ** grammar defines an error token "ERROR".
  4142. **
  4143. ** This is what we do if the grammar does define ERROR:
  4144. **
  4145. ** * Call the %syntax_error function.
  4146. **
  4147. ** * Begin popping the stack until we enter a state where
  4148. ** it is legal to shift the error symbol, then shift
  4149. ** the error symbol.
  4150. **
  4151. ** * Set the error count to three.
  4152. **
  4153. ** * Begin accepting and shifting new tokens. No new error
  4154. ** processing will occur until three tokens have been
  4155. ** shifted successfully.
  4156. **
  4157. */
  4158. if( yypParser->yyerrcnt<0 ){
  4159. yy_syntax_error(yypParser,yymajor,yyminorunion);
  4160. }
  4161. yymx = yypParser->yystack[yypParser->yyidx].major;
  4162. if( yymx==YYERRORSYMBOL || yyerrorhit ){
  4163. #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
  4164. if( yyTraceFILE ){
  4165. fprintf(yyTraceFILE,"%sDiscard input token %s\n",
  4166. yyTracePrompt,yyTokenName[yymajor]);
  4167. }
  4168. #endif
  4169. yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion);
  4170. yymajor = YYNOCODE;
  4171. }else{
  4172. while(
  4173. yypParser->yyidx >= 0 &&
  4174. yymx != YYERRORSYMBOL &&
  4175. (yyact = yy_find_reduce_action(
  4176. yypParser->yystack[yypParser->yyidx].stateno,
  4177. YYERRORSYMBOL)) >= YYNSTATE
  4178. ){
  4179. yy_pop_parser_stack(yypParser);
  4180. }
  4181. if( yypParser->yyidx < 0 || yymajor==0 ){
  4182. yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
  4183. yy_parse_failed(yypParser);
  4184. yymajor = YYNOCODE;
  4185. }else if( yymx!=YYERRORSYMBOL ){
  4186. YYMINORTYPE u2;
  4187. u2.YYERRSYMDT = 0;
  4188. yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
  4189. }
  4190. }
  4191. yypParser->yyerrcnt = 3;
  4192. yyerrorhit = 1;
  4193. #elif defined(YYNOERRORRECOVERY)
  4194. /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
  4195. ** do any kind of error recovery. Instead, simply invoke the syntax
  4196. ** error routine and continue going as if nothing had happened.
  4197. **
  4198. ** Applications can set this macro (for example inside %include) if
  4199. ** they intend to abandon the parse upon the first syntax error seen.
  4200. */
  4201. yy_syntax_error(yypParser,yymajor,yyminorunion);
  4202. yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
  4203. yymajor = YYNOCODE;
  4204. #else /* YYERRORSYMBOL is not defined */
  4205. /* This is what we do if the grammar does not define ERROR:
  4206. **
  4207. ** * Report an error message, and throw away the input token.
  4208. **
  4209. ** * If the input token is $, then fail the parse.
  4210. **
  4211. ** As before, subsequent error messages are suppressed until
  4212. ** three input tokens have been successfully shifted.
  4213. */
  4214. if( yypParser->yyerrcnt<=0 ){
  4215. yy_syntax_error(yypParser,yymajor,yyminorunion);
  4216. }
  4217. yypParser->yyerrcnt = 3;
  4218. yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
  4219. if( yyendofinput ){
  4220. yy_parse_failed(yypParser);
  4221. }
  4222. yymajor = YYNOCODE;
  4223. #endif
  4224. }
  4225. }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
  4226. return;
  4227. }