smarty_internal_templateparser.php 159 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877
  1. <?php
  2. class TP_yyToken implements ArrayAccess
  3. {
  4. public $string = '';
  5. public $metadata = array();
  6. public function __construct($s, $m = array())
  7. {
  8. if ($s instanceof TP_yyToken) {
  9. $this->string = $s->string;
  10. $this->metadata = $s->metadata;
  11. } else {
  12. $this->string = (string) $s;
  13. if ($m instanceof TP_yyToken) {
  14. $this->metadata = $m->metadata;
  15. } elseif (is_array($m)) {
  16. $this->metadata = $m;
  17. }
  18. }
  19. }
  20. public function __toString()
  21. {
  22. return $this->string;
  23. }
  24. public function offsetExists($offset)
  25. {
  26. return isset($this->metadata[ $offset ]);
  27. }
  28. public function offsetGet($offset)
  29. {
  30. return $this->metadata[ $offset ];
  31. }
  32. public function offsetSet($offset, $value)
  33. {
  34. if ($offset === null) {
  35. if (isset($value[ 0 ])) {
  36. $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
  37. $this->metadata = array_merge($this->metadata, $x);
  38. return;
  39. }
  40. $offset = count($this->metadata);
  41. }
  42. if ($value === null) {
  43. return;
  44. }
  45. if ($value instanceof TP_yyToken) {
  46. if ($value->metadata) {
  47. $this->metadata[ $offset ] = $value->metadata;
  48. }
  49. } elseif ($value) {
  50. $this->metadata[ $offset ] = $value;
  51. }
  52. }
  53. public function offsetUnset($offset)
  54. {
  55. unset($this->metadata[ $offset ]);
  56. }
  57. }
  58. class TP_yyStackEntry
  59. {
  60. public $stateno; /* The state-number */
  61. public $major; /* The major token value. This is the code
  62. ** number for the token at this stack level */
  63. public $minor; /* The user-supplied minor token value. This
  64. ** is the value of the token */
  65. }
  66. ;
  67. #line 11 "../smarty/lexer/smarty_internal_templateparser.y"
  68. /**
  69. * Smarty Template Parser Class
  70. *
  71. * This is the template parser.
  72. * It is generated from the smarty_internal_templateparser.y file
  73. *
  74. * @author Uwe Tews <uwe.tews@googlemail.com>
  75. */
  76. class Smarty_Internal_Templateparser
  77. {
  78. #line 23 "../smarty/lexer/smarty_internal_templateparser.y"
  79. const Err1 = "Security error: Call to private object member not allowed";
  80. const Err2 = "Security error: Call to dynamic object member not allowed";
  81. const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
  82. /**
  83. * result status
  84. *
  85. * @var bool
  86. */
  87. public $successful = true;
  88. /**
  89. * return value
  90. *
  91. * @var mixed
  92. */
  93. public $retvalue = 0;
  94. /**
  95. * @var
  96. */
  97. public $yymajor;
  98. /**
  99. * last index of array variable
  100. *
  101. * @var mixed
  102. */
  103. public $last_index;
  104. /**
  105. * last variable name
  106. *
  107. * @var string
  108. */
  109. public $last_variable;
  110. /**
  111. * root parse tree buffer
  112. *
  113. * @var Smarty_Internal_ParseTree
  114. */
  115. public $root_buffer;
  116. /**
  117. * current parse tree object
  118. *
  119. * @var Smarty_Internal_ParseTree
  120. */
  121. public $current_buffer;
  122. /**
  123. * lexer object
  124. *
  125. * @var Smarty_Internal_Templatelexer
  126. */
  127. public $lex;
  128. /**
  129. * internal error flag
  130. *
  131. * @var bool
  132. */
  133. private $internalError = false;
  134. /**
  135. * {strip} status
  136. *
  137. * @var bool
  138. */
  139. public $strip = false;
  140. /**
  141. * compiler object
  142. *
  143. * @var Smarty_Internal_TemplateCompilerBase
  144. */
  145. public $compiler = null;
  146. /**
  147. * smarty object
  148. *
  149. * @var Smarty
  150. */
  151. public $smarty = null;
  152. /**
  153. * template object
  154. *
  155. * @var Smarty_Internal_Template
  156. */
  157. public $template = null;
  158. /**
  159. * block nesting level
  160. *
  161. * @var int
  162. */
  163. public $block_nesting_level = 0;
  164. /**
  165. * security object
  166. *
  167. * @var Smarty_Security
  168. */
  169. public $security = null;
  170. /**
  171. * template prefix array
  172. *
  173. * @var \Smarty_Internal_ParseTree[]
  174. */
  175. public $template_prefix = array();
  176. /**
  177. * security object
  178. *
  179. * @var \Smarty_Internal_ParseTree[]
  180. */
  181. public $template_postfix = array();
  182. /**
  183. * constructor
  184. *
  185. * @param Smarty_Internal_Templatelexer $lex
  186. * @param Smarty_Internal_TemplateCompilerBase $compiler
  187. */
  188. function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
  189. {
  190. $this->lex = $lex;
  191. $this->compiler = $compiler;
  192. $this->template = $this->compiler->template;
  193. $this->smarty = $this->template->smarty;
  194. $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
  195. $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
  196. }
  197. /**
  198. * insert PHP code in current buffer
  199. *
  200. * @param string $code
  201. */
  202. public function insertPhpCode($code)
  203. {
  204. $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
  205. }
  206. /**
  207. * merge PHP code with prefix code and return parse tree tag object
  208. *
  209. * @param string $code
  210. *
  211. * @return Smarty_Internal_ParseTree_Tag
  212. */
  213. public function mergePrefixCode($code)
  214. {
  215. $tmp = '';
  216. foreach ($this->compiler->prefix_code as $preCode) {
  217. $tmp .= $preCode;
  218. }
  219. $this->compiler->prefix_code = array();
  220. $tmp .= $code;
  221. return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
  222. }
  223. const TP_VERT = 1;
  224. const TP_COLON = 2;
  225. const TP_PHP = 3;
  226. const TP_NOCACHE = 4;
  227. const TP_TEXT = 5;
  228. const TP_STRIPON = 6;
  229. const TP_STRIPOFF = 7;
  230. const TP_LITERALSTART = 8;
  231. const TP_LITERALEND = 9;
  232. const TP_LITERAL = 10;
  233. const TP_RDEL = 11;
  234. const TP_SIMPELOUTPUT = 12;
  235. const TP_LDEL = 13;
  236. const TP_DOLLARID = 14;
  237. const TP_EQUAL = 15;
  238. const TP_SIMPLETAG = 16;
  239. const TP_ID = 17;
  240. const TP_PTR = 18;
  241. const TP_LDELMAKENOCACHE = 19;
  242. const TP_LDELIF = 20;
  243. const TP_LDELFOR = 21;
  244. const TP_SEMICOLON = 22;
  245. const TP_INCDEC = 23;
  246. const TP_TO = 24;
  247. const TP_STEP = 25;
  248. const TP_LDELFOREACH = 26;
  249. const TP_SPACE = 27;
  250. const TP_AS = 28;
  251. const TP_APTR = 29;
  252. const TP_LDELSETFILTER = 30;
  253. const TP_SMARTYBLOCKCHILDPARENT = 31;
  254. const TP_CLOSETAG = 32;
  255. const TP_LDELSLASH = 33;
  256. const TP_ATTR = 34;
  257. const TP_INTEGER = 35;
  258. const TP_COMMA = 36;
  259. const TP_OPENP = 37;
  260. const TP_CLOSEP = 38;
  261. const TP_MATH = 39;
  262. const TP_UNIMATH = 40;
  263. const TP_ISIN = 41;
  264. const TP_QMARK = 42;
  265. const TP_NOT = 43;
  266. const TP_TYPECAST = 44;
  267. const TP_HEX = 45;
  268. const TP_DOT = 46;
  269. const TP_INSTANCEOF = 47;
  270. const TP_SINGLEQUOTESTRING = 48;
  271. const TP_DOUBLECOLON = 49;
  272. const TP_NAMESPACE = 50;
  273. const TP_AT = 51;
  274. const TP_HATCH = 52;
  275. const TP_OPENB = 53;
  276. const TP_CLOSEB = 54;
  277. const TP_DOLLAR = 55;
  278. const TP_LOGOP = 56;
  279. const TP_SLOGOP = 57;
  280. const TP_TLOGOP = 58;
  281. const TP_SINGLECOND = 59;
  282. const TP_QUOTE = 60;
  283. const TP_BACKTICK = 61;
  284. const YY_NO_ACTION = 534;
  285. const YY_ACCEPT_ACTION = 533;
  286. const YY_ERROR_ACTION = 532;
  287. const YY_SZ_ACTTAB = 2017;
  288. static public $yy_action = array(269, 8, 133, 295, 335, 80, 282, 219, 7, 84, 128, 178, 255, 276, 113, 102, 13, 83,
  289. 227, 286, 305, 220, 36, 223, 283, 21, 32, 297, 41, 14, 90, 40, 44, 260, 213, 231,
  290. 250, 235, 210, 128, 81, 1, 298, 296, 102, 269, 8, 132, 79, 335, 196, 184, 219, 7,
  291. 84, 26, 297, 461, 101, 113, 39, 24, 278, 227, 461, 305, 220, 171, 206, 222, 21,
  292. 230, 201, 41, 104, 192, 40, 44, 260, 213, 18, 236, 241, 210, 251, 81, 1, 316, 296,
  293. 114, 269, 8, 135, 79, 335, 205, 302, 219, 7, 84, 116, 107, 477, 477, 113, 33, 197,
  294. 477, 227, 266, 305, 220, 326, 223, 31, 21, 29, 215, 41, 311, 78, 40, 44, 260, 213,
  295. 296, 250, 256, 210, 190, 81, 1, 3, 296, 307, 269, 8, 134, 79, 335, 205, 302, 219,
  296. 7, 84, 232, 18, 296, 294, 113, 334, 85, 323, 227, 136, 305, 220, 328, 223, 29, 21,
  297. 183, 101, 41, 234, 78, 40, 44, 260, 213, 137, 250, 314, 210, 139, 81, 1, 10, 296,
  298. 101, 269, 8, 135, 79, 335, 195, 154, 219, 7, 84, 322, 232, 81, 114, 113, 296, 329,
  299. 94, 227, 315, 305, 220, 326, 212, 120, 21, 168, 215, 41, 281, 114, 40, 44, 260,
  300. 213, 296, 250, 222, 210, 265, 81, 1, 104, 296, 211, 269, 8, 135, 79, 335, 193, 302,
  301. 219, 7, 84, 242, 239, 249, 217, 113, 11, 215, 289, 227, 136, 305, 220, 228, 223,
  302. 222, 21, 238, 149, 41, 104, 78, 40, 44, 260, 213, 461, 250, 329, 210, 6, 81, 1,
  303. 461, 296, 2, 269, 8, 136, 79, 335, 205, 158, 219, 7, 84, 190, 211, 81, 101, 113,
  304. 296, 329, 93, 227, 12, 305, 220, 18, 223, 244, 34, 268, 448, 41, 281, 449, 40, 44,
  305. 260, 213, 191, 250, 36, 210, 448, 81, 1, 449, 296, 14, 269, 8, 135, 79, 335, 205,
  306. 15, 219, 7, 84, 186, 293, 152, 14, 113, 16, 214, 5, 227, 165, 305, 220, 329, 194,
  307. 20, 21, 140, 101, 41, 115, 448, 40, 44, 260, 213, 281, 250, 303, 210, 264, 81, 1,
  308. 448, 296, 169, 269, 8, 131, 79, 335, 205, 176, 219, 7, 84, 137, 28, 296, 310, 113,
  309. 185, 293, 10, 227, 275, 305, 220, 296, 223, 175, 4, 281, 143, 41, 144, 192, 40, 44,
  310. 260, 213, 35, 250, 329, 210, 329, 81, 1, 270, 296, 308, 269, 8, 135, 79, 335, 198,
  311. 121, 219, 7, 84, 190, 292, 17, 232, 113, 166, 284, 281, 227, 141, 305, 220, 211,
  312. 223, 319, 21, 299, 211, 41, 329, 211, 40, 44, 260, 213, 258, 250, 363, 210, 221,
  313. 81, 1, 281, 296, 6, 269, 8, 136, 79, 335, 205, 177, 219, 7, 84, 167, 211, 159, 22,
  314. 113, 104, 211, 156, 227, 300, 305, 220, 329, 223, 274, 34, 359, 329, 41, 172, 192,
  315. 40, 44, 260, 213, 95, 250, 318, 210, 329, 81, 273, 36, 296, 257, 292, 17, 181, 79,
  316. 14, 284, 309, 277, 254, 262, 263, 259, 178, 211, 25, 36, 269, 8, 187, 331, 335,
  317. 261, 14, 219, 7, 84, 192, 303, 211, 38, 113, 237, 321, 180, 227, 267, 305, 220,
  318. 153, 121, 312, 179, 192, 272, 108, 215, 209, 211, 118, 69, 112, 43, 42, 37, 248,
  319. 102, 86, 189, 252, 279, 182, 293, 150, 271, 204, 317, 176, 297, 288, 287, 285, 280,
  320. 329, 281, 312, 174, 87, 202, 330, 215, 209, 170, 118, 69, 112, 43, 42, 37, 138,
  321. 102, 192, 402, 252, 279, 38, 216, 88, 271, 204, 317, 211, 297, 288, 287, 285, 280,
  322. 310, 402, 105, 253, 404, 164, 332, 312, 402, 211, 89, 448, 215, 209, 305, 129, 61,
  323. 106, 163, 238, 404, 142, 102, 448, 305, 252, 279, 404, 305, 305, 271, 204, 317,
  324. 305, 297, 312, 155, 305, 305, 305, 215, 209, 211, 129, 73, 112, 211, 43, 42, 37,
  325. 102, 305, 404, 252, 279, 305, 292, 17, 271, 204, 317, 284, 297, 305, 288, 287, 285,
  326. 280, 404, 203, 305, 477, 477, 312, 305, 404, 477, 305, 215, 209, 305, 129, 73, 112,
  327. 43, 42, 37, 305, 102, 305, 305, 252, 279, 305, 305, 224, 271, 204, 317, 324, 297,
  328. 288, 287, 285, 280, 305, 305, 208, 312, 305, 477, 305, 305, 215, 209, 211, 129, 50,
  329. 106, 305, 117, 305, 305, 102, 148, 401, 252, 279, 92, 325, 448, 271, 204, 317, 329,
  330. 297, 269, 9, 327, 218, 335, 401, 448, 219, 7, 84, 305, 320, 401, 305, 113, 325,
  331. 192, 305, 227, 305, 305, 220, 269, 9, 327, 305, 335, 305, 305, 219, 7, 84, 305, 43,
  332. 42, 37, 113, 305, 305, 305, 227, 305, 305, 220, 305, 305, 305, 305, 291, 27, 288,
  333. 287, 285, 280, 305, 305, 305, 312, 305, 305, 305, 305, 215, 209, 305, 129, 73, 112,
  334. 211, 305, 290, 27, 102, 305, 305, 252, 279, 305, 369, 305, 271, 204, 317, 305, 297,
  335. 225, 305, 312, 305, 211, 305, 207, 215, 209, 36, 129, 54, 112, 305, 188, 305, 14,
  336. 102, 145, 448, 252, 279, 91, 305, 305, 271, 204, 317, 329, 297, 312, 448, 292, 17,
  337. 305, 215, 209, 284, 129, 65, 112, 305, 43, 42, 37, 102, 192, 305, 252, 279, 305,
  338. 305, 305, 271, 204, 317, 305, 297, 312, 288, 287, 285, 280, 215, 209, 305, 99, 67,
  339. 112, 305, 305, 229, 305, 102, 305, 305, 252, 279, 305, 305, 305, 271, 204, 317,
  340. 312, 297, 211, 305, 305, 215, 209, 305, 129, 45, 112, 305, 246, 305, 305, 102, 162,
  341. 305, 252, 279, 184, 305, 305, 271, 204, 317, 329, 297, 312, 39, 24, 278, 305, 215,
  342. 209, 305, 129, 56, 112, 305, 43, 42, 37, 102, 192, 305, 252, 279, 305, 305, 305,
  343. 271, 204, 317, 305, 297, 312, 288, 287, 285, 280, 215, 209, 305, 96, 55, 112, 305,
  344. 305, 305, 305, 102, 305, 305, 252, 279, 305, 305, 305, 271, 204, 317, 312, 297,
  345. 211, 305, 305, 215, 97, 305, 82, 47, 103, 305, 247, 305, 305, 102, 151, 305, 252,
  346. 279, 184, 305, 305, 271, 204, 317, 329, 297, 312, 39, 24, 278, 305, 215, 209, 305,
  347. 129, 71, 112, 305, 43, 42, 37, 102, 192, 305, 252, 279, 305, 305, 305, 271, 204,
  348. 317, 305, 297, 312, 288, 287, 285, 280, 215, 209, 305, 129, 59, 112, 305, 305, 305,
  349. 305, 102, 305, 305, 252, 279, 305, 305, 305, 271, 204, 317, 312, 297, 211, 305,
  350. 305, 215, 209, 305, 129, 58, 112, 305, 305, 305, 305, 102, 160, 305, 252, 279, 184,
  351. 305, 305, 271, 204, 317, 329, 297, 312, 39, 24, 278, 305, 215, 209, 305, 129, 53,
  352. 112, 226, 43, 42, 37, 102, 192, 305, 252, 279, 305, 305, 305, 271, 204, 317, 305,
  353. 297, 312, 288, 287, 285, 280, 215, 209, 305, 129, 60, 112, 305, 305, 305, 305, 102,
  354. 305, 305, 252, 279, 305, 305, 305, 271, 204, 317, 312, 297, 211, 305, 305, 215,
  355. 209, 305, 100, 64, 112, 305, 305, 305, 305, 102, 146, 305, 252, 279, 184, 305, 305,
  356. 271, 204, 317, 329, 297, 312, 39, 24, 278, 305, 215, 209, 305, 129, 61, 112, 245,
  357. 43, 42, 37, 102, 192, 305, 252, 279, 305, 305, 305, 271, 204, 317, 305, 297, 312,
  358. 288, 287, 285, 280, 215, 200, 305, 129, 63, 112, 305, 305, 305, 305, 102, 305, 305,
  359. 252, 279, 305, 305, 305, 271, 204, 317, 312, 297, 211, 305, 305, 215, 209, 305,
  360. 111, 51, 112, 305, 305, 305, 305, 102, 147, 305, 252, 279, 184, 305, 305, 271, 204,
  361. 317, 329, 297, 312, 39, 24, 278, 305, 215, 209, 305, 129, 49, 112, 305, 43, 42, 37,
  362. 102, 192, 305, 252, 279, 305, 305, 305, 271, 204, 317, 305, 297, 312, 288, 287,
  363. 285, 280, 215, 209, 305, 129, 75, 112, 305, 305, 305, 305, 102, 305, 305, 252, 279,
  364. 305, 305, 305, 271, 204, 317, 312, 297, 305, 305, 305, 215, 209, 305, 129, 76, 112,
  365. 305, 305, 305, 305, 102, 161, 305, 252, 279, 184, 305, 305, 271, 204, 317, 329,
  366. 297, 312, 39, 24, 278, 305, 215, 98, 305, 82, 46, 103, 305, 305, 305, 305, 102,
  367. 192, 305, 252, 279, 305, 305, 305, 271, 204, 317, 305, 297, 312, 305, 305, 305,
  368. 305, 215, 209, 305, 129, 70, 112, 305, 305, 305, 305, 102, 305, 305, 252, 279, 305,
  369. 305, 305, 271, 204, 317, 312, 297, 305, 305, 305, 215, 209, 305, 129, 57, 112, 305,
  370. 305, 305, 305, 102, 305, 305, 252, 279, 305, 305, 305, 271, 204, 317, 305, 297,
  371. 312, 305, 305, 305, 305, 215, 199, 305, 109, 62, 112, 305, 305, 305, 305, 102, 305,
  372. 305, 252, 279, 305, 305, 305, 271, 204, 317, 305, 297, 312, 305, 305, 305, 305,
  373. 215, 209, 305, 129, 72, 112, 305, 305, 305, 305, 102, 305, 305, 252, 279, 305, 305,
  374. 305, 271, 204, 317, 312, 297, 305, 305, 305, 215, 209, 305, 129, 77, 112, 305, 305,
  375. 305, 305, 102, 305, 305, 252, 279, 305, 305, 305, 271, 204, 317, 305, 297, 312,
  376. 305, 305, 305, 305, 215, 209, 305, 129, 68, 112, 305, 305, 305, 305, 102, 305, 305,
  377. 252, 279, 305, 305, 305, 271, 204, 317, 305, 297, 312, 305, 305, 305, 305, 215,
  378. 209, 305, 129, 74, 112, 305, 305, 305, 305, 102, 305, 305, 252, 279, 305, 305, 305,
  379. 271, 204, 317, 312, 297, 305, 305, 305, 215, 209, 305, 129, 48, 112, 305, 305, 305,
  380. 305, 102, 305, 305, 252, 279, 414, 414, 305, 271, 204, 317, 305, 297, 312, 305,
  381. 305, 305, 305, 215, 209, 305, 129, 66, 112, 305, 305, 305, 305, 102, 305, 305, 252,
  382. 279, 211, 305, 305, 271, 204, 317, 305, 297, 448, 305, 414, 414, 414, 533, 52, 243,
  383. 239, 249, 217, 305, 448, 215, 305, 305, 30, 305, 36, 414, 414, 414, 414, 305, 233,
  384. 14, 305, 305, 305, 305, 43, 42, 37, 305, 477, 477, 312, 23, 305, 477, 461, 215,
  385. 209, 211, 127, 305, 112, 288, 287, 285, 280, 102, 305, 301, 357, 313, 305, 292, 17,
  386. 271, 204, 317, 284, 297, 305, 305, 302, 305, 461, 36, 36, 461, 36, 477, 157, 461,
  387. 14, 14, 305, 14, 305, 43, 42, 37, 305, 305, 305, 312, 305, 211, 78, 305, 215, 209,
  388. 305, 130, 305, 112, 288, 287, 285, 280, 102, 305, 305, 305, 240, 305, 292, 17, 271,
  389. 204, 317, 284, 297, 36, 305, 305, 305, 305, 305, 305, 14, 36, 305, 173, 312, 43,
  390. 42, 37, 14, 215, 209, 305, 122, 305, 112, 305, 305, 305, 305, 102, 304, 305, 288,
  391. 287, 285, 280, 305, 271, 204, 317, 305, 297, 302, 305, 312, 305, 36, 305, 305, 215,
  392. 209, 305, 123, 14, 112, 312, 305, 305, 305, 102, 215, 209, 305, 124, 305, 112, 78,
  393. 271, 204, 317, 102, 297, 305, 305, 305, 305, 305, 305, 271, 204, 317, 312, 297,
  394. 305, 305, 305, 215, 209, 305, 119, 305, 112, 305, 305, 305, 305, 102, 305, 305,
  395. 233, 305, 305, 305, 305, 271, 204, 317, 305, 297, 477, 477, 312, 32, 305, 477, 461,
  396. 215, 209, 305, 126, 305, 112, 305, 305, 305, 305, 102, 305, 305, 233, 305, 305,
  397. 305, 305, 271, 204, 317, 305, 297, 477, 477, 305, 305, 461, 477, 461, 461, 312,
  398. 477, 19, 461, 211, 215, 209, 305, 125, 305, 112, 305, 477, 477, 305, 102, 305, 477,
  399. 461, 305, 305, 305, 305, 271, 204, 317, 461, 297, 305, 461, 305, 477, 305, 461,
  400. 333, 305, 211, 305, 305, 305, 305, 305, 43, 42, 37, 305, 461, 305, 305, 461, 305,
  401. 477, 305, 461, 305, 305, 233, 110, 305, 288, 287, 285, 280, 305, 306, 305, 477,
  402. 477, 305, 305, 305, 477, 461, 305, 43, 42, 37, 477, 477, 305, 305, 305, 477, 461,
  403. 305, 305, 305, 305, 305, 305, 305, 288, 287, 285, 280, 305, 305, 305, 305, 305,
  404. 461, 305, 305, 461, 408, 477, 305, 461, 305, 305, 305, 461, 305, 305, 461, 408,
  405. 477, 408, 461, 305, 408, 305, 305, 305, 305, 305, 305, 408, 305, 408, 305, 408,
  406. 305, 305, 305, 305, 305, 305, 305, 232,);
  407. static public $yy_lookahead = array(12, 13, 14, 17, 16, 17, 72, 19, 20, 21, 76, 8, 9, 10, 26, 81, 22, 17, 30, 31,
  408. 32, 33, 27, 35, 90, 37, 15, 93, 40, 34, 36, 43, 44, 45, 46, 72, 48, 51, 50, 76,
  409. 52, 53, 98, 55, 81, 12, 13, 14, 60, 16, 17, 77, 19, 20, 21, 15, 93, 46, 18, 26,
  410. 86, 87, 88, 30, 53, 32, 33, 94, 35, 76, 37, 78, 79, 40, 81, 101, 43, 44, 45, 46,
  411. 36, 48, 38, 50, 14, 52, 53, 54, 55, 49, 12, 13, 14, 60, 16, 17, 23, 19, 20, 21,
  412. 17, 81, 12, 13, 26, 13, 14, 17, 30, 17, 32, 33, 66, 35, 15, 37, 15, 71, 40, 99,
  413. 47, 43, 44, 45, 46, 55, 48, 35, 50, 101, 52, 53, 36, 55, 61, 12, 13, 14, 60, 16,
  414. 17, 23, 19, 20, 21, 46, 36, 55, 38, 26, 54, 105, 106, 30, 14, 32, 33, 17, 35,
  415. 15, 37, 14, 18, 40, 17, 47, 43, 44, 45, 46, 46, 48, 54, 50, 14, 52, 53, 53, 55,
  416. 18, 12, 13, 14, 60, 16, 17, 73, 19, 20, 21, 50, 46, 52, 49, 26, 55, 83, 37, 30,
  417. 54, 32, 33, 66, 35, 17, 37, 94, 71, 40, 96, 49, 43, 44, 45, 46, 55, 48, 76, 50,
  418. 78, 52, 53, 81, 55, 1, 12, 13, 14, 60, 16, 17, 23, 19, 20, 21, 65, 66, 67, 68,
  419. 26, 13, 71, 106, 30, 14, 32, 33, 17, 35, 76, 37, 78, 73, 40, 81, 47, 43, 44, 45,
  420. 46, 46, 48, 83, 50, 37, 52, 53, 53, 55, 37, 12, 13, 14, 60, 16, 17, 73, 19, 20,
  421. 21, 101, 1, 52, 18, 26, 55, 83, 94, 30, 29, 32, 33, 36, 35, 38, 37, 17, 37, 40,
  422. 96, 37, 43, 44, 45, 46, 17, 48, 27, 50, 49, 52, 53, 49, 55, 34, 12, 13, 14, 60,
  423. 16, 17, 27, 19, 20, 21, 97, 98, 73, 34, 26, 13, 14, 37, 30, 17, 32, 33, 83, 35,
  424. 42, 37, 14, 18, 40, 49, 37, 43, 44, 45, 46, 96, 48, 102, 50, 35, 52, 53, 49, 55,
  425. 52, 12, 13, 14, 60, 16, 17, 77, 19, 20, 21, 46, 15, 55, 95, 26, 97, 98, 53, 30,
  426. 23, 32, 33, 55, 35, 94, 37, 96, 73, 40, 73, 101, 43, 44, 45, 46, 24, 48, 83, 50,
  427. 83, 52, 53, 17, 55, 92, 12, 13, 14, 60, 16, 17, 99, 19, 20, 21, 101, 12, 13, 46,
  428. 26, 94, 17, 96, 30, 73, 32, 33, 1, 35, 54, 37, 17, 1, 40, 83, 1, 43, 44, 45, 46,
  429. 38, 48, 11, 50, 18, 52, 53, 96, 55, 37, 12, 13, 14, 60, 16, 17, 77, 19, 20, 21,
  430. 76, 1, 73, 29, 26, 81, 1, 73, 30, 17, 32, 33, 83, 35, 35, 37, 11, 83, 40, 73,
  431. 101, 43, 44, 45, 46, 82, 48, 54, 50, 83, 52, 67, 27, 55, 70, 12, 13, 77, 60, 34,
  432. 17, 14, 3, 4, 5, 6, 7, 8, 1, 2, 27, 12, 13, 77, 54, 16, 5, 34, 19, 20, 21, 101,
  433. 102, 1, 2, 26, 17, 92, 82, 30, 11, 32, 33, 52, 99, 66, 82, 101, 17, 80, 71, 72,
  434. 1, 74, 75, 76, 39, 40, 41, 83, 81, 81, 11, 84, 85, 97, 98, 73, 89, 90, 91, 77,
  435. 93, 56, 57, 58, 59, 83, 96, 66, 94, 81, 103, 104, 71, 72, 94, 74, 75, 76, 39,
  436. 40, 41, 81, 81, 101, 11, 84, 85, 2, 15, 81, 89, 90, 91, 1, 93, 56, 57, 58, 59,
  437. 95, 27, 69, 9, 11, 94, 104, 66, 34, 1, 81, 37, 71, 72, 107, 74, 75, 76, 94, 78,
  438. 27, 28, 81, 49, 107, 84, 85, 34, 107, 107, 89, 90, 91, 107, 93, 66, 28, 107,
  439. 107, 107, 71, 72, 1, 74, 75, 76, 1, 39, 40, 41, 81, 107, 11, 84, 85, 107, 12,
  440. 13, 89, 90, 91, 17, 93, 107, 56, 57, 58, 59, 27, 100, 107, 12, 13, 66, 107, 34,
  441. 17, 107, 71, 72, 107, 74, 75, 76, 39, 40, 41, 107, 81, 107, 107, 84, 85, 107,
  442. 107, 51, 89, 90, 91, 54, 93, 56, 57, 58, 59, 107, 107, 100, 66, 107, 51, 107,
  443. 107, 71, 72, 1, 74, 75, 76, 107, 78, 107, 107, 81, 73, 11, 84, 85, 77, 5, 37,
  444. 89, 90, 91, 83, 93, 12, 13, 14, 46, 16, 27, 49, 19, 20, 21, 107, 54, 34, 107,
  445. 26, 5, 101, 107, 30, 107, 32, 33, 12, 13, 14, 107, 16, 107, 107, 19, 20, 21,
  446. 107, 39, 40, 41, 26, 107, 107, 107, 30, 107, 32, 33, 107, 107, 107, 107, 60, 61,
  447. 56, 57, 58, 59, 107, 107, 107, 66, 107, 107, 107, 107, 71, 72, 107, 74, 75, 76,
  448. 1, 107, 60, 61, 81, 107, 107, 84, 85, 107, 11, 107, 89, 90, 91, 107, 93, 18,
  449. 107, 66, 107, 1, 107, 100, 71, 72, 27, 74, 75, 76, 107, 11, 107, 34, 81, 73, 37,
  450. 84, 85, 77, 107, 107, 89, 90, 91, 83, 93, 66, 49, 12, 13, 107, 71, 72, 17, 74,
  451. 75, 76, 107, 39, 40, 41, 81, 101, 107, 84, 85, 107, 107, 107, 89, 90, 91, 107,
  452. 93, 66, 56, 57, 58, 59, 71, 72, 107, 74, 75, 76, 107, 107, 51, 107, 81, 107,
  453. 107, 84, 85, 107, 107, 107, 89, 90, 91, 66, 93, 1, 107, 107, 71, 72, 107, 74,
  454. 75, 76, 107, 11, 107, 107, 81, 73, 107, 84, 85, 77, 107, 107, 89, 90, 91, 83,
  455. 93, 66, 86, 87, 88, 107, 71, 72, 107, 74, 75, 76, 107, 39, 40, 41, 81, 101, 107,
  456. 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, 66, 56, 57, 58, 59, 71, 72, 107, 74,
  457. 75, 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, 66,
  458. 93, 1, 107, 107, 71, 72, 107, 74, 75, 76, 107, 11, 107, 107, 81, 73, 107, 84,
  459. 85, 77, 107, 107, 89, 90, 91, 83, 93, 66, 86, 87, 88, 107, 71, 72, 107, 74, 75,
  460. 76, 107, 39, 40, 41, 81, 101, 107, 84, 85, 107, 107, 107, 89, 90, 91, 107, 93,
  461. 66, 56, 57, 58, 59, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 107, 107,
  462. 84, 85, 107, 107, 107, 89, 90, 91, 66, 93, 1, 107, 107, 71, 72, 107, 74, 75, 76,
  463. 107, 107, 107, 107, 81, 73, 107, 84, 85, 77, 107, 107, 89, 90, 91, 83, 93, 66,
  464. 86, 87, 88, 107, 71, 72, 107, 74, 75, 76, 38, 39, 40, 41, 81, 101, 107, 84, 85,
  465. 107, 107, 107, 89, 90, 91, 107, 93, 66, 56, 57, 58, 59, 71, 72, 107, 74, 75, 76,
  466. 107, 107, 107, 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, 66, 93, 1,
  467. 107, 107, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 73, 107, 84, 85, 77,
  468. 107, 107, 89, 90, 91, 83, 93, 66, 86, 87, 88, 107, 71, 72, 107, 74, 75, 76, 38,
  469. 39, 40, 41, 81, 101, 107, 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, 66, 56,
  470. 57, 58, 59, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 107, 107, 84, 85,
  471. 107, 107, 107, 89, 90, 91, 66, 93, 1, 107, 107, 71, 72, 107, 74, 75, 76, 107,
  472. 107, 107, 107, 81, 73, 107, 84, 85, 77, 107, 107, 89, 90, 91, 83, 93, 66, 86,
  473. 87, 88, 107, 71, 72, 107, 74, 75, 76, 107, 39, 40, 41, 81, 101, 107, 84, 85,
  474. 107, 107, 107, 89, 90, 91, 107, 93, 66, 56, 57, 58, 59, 71, 72, 107, 74, 75, 76,
  475. 107, 107, 107, 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, 66, 93,
  476. 107, 107, 107, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 73, 107, 84, 85,
  477. 77, 107, 107, 89, 90, 91, 83, 93, 66, 86, 87, 88, 107, 71, 72, 107, 74, 75, 76,
  478. 107, 107, 107, 107, 81, 101, 107, 84, 85, 107, 107, 107, 89, 90, 91, 107, 93,
  479. 66, 107, 107, 107, 107, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 107,
  480. 107, 84, 85, 107, 107, 107, 89, 90, 91, 66, 93, 107, 107, 107, 71, 72, 107, 74,
  481. 75, 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, 90, 91,
  482. 107, 93, 66, 107, 107, 107, 107, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107,
  483. 81, 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, 66, 107, 107, 107,
  484. 107, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, 107,
  485. 107, 107, 89, 90, 91, 66, 93, 107, 107, 107, 71, 72, 107, 74, 75, 76, 107, 107,
  486. 107, 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, 66, 107,
  487. 107, 107, 107, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 107, 107, 84,
  488. 85, 107, 107, 107, 89, 90, 91, 107, 93, 66, 107, 107, 107, 107, 71, 72, 107, 74,
  489. 75, 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, 66,
  490. 93, 107, 107, 107, 71, 72, 107, 74, 75, 76, 107, 107, 107, 107, 81, 107, 107,
  491. 84, 85, 1, 2, 107, 89, 90, 91, 107, 93, 66, 107, 107, 107, 107, 71, 72, 107, 74,
  492. 75, 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, 1, 107, 107, 89, 90, 91, 107,
  493. 93, 37, 107, 39, 40, 41, 63, 64, 65, 66, 67, 68, 107, 49, 71, 107, 107, 25, 107,
  494. 27, 56, 57, 58, 59, 107, 2, 34, 107, 107, 107, 107, 39, 40, 41, 107, 12, 13, 66,
  495. 15, 107, 17, 18, 71, 72, 1, 74, 107, 76, 56, 57, 58, 59, 81, 107, 11, 11, 85,
  496. 107, 12, 13, 89, 90, 91, 17, 93, 107, 107, 23, 107, 46, 27, 27, 49, 27, 51, 29,
  497. 53, 34, 34, 107, 34, 107, 39, 40, 41, 107, 107, 107, 66, 107, 1, 47, 107, 71,
  498. 72, 107, 74, 107, 76, 56, 57, 58, 59, 81, 107, 107, 107, 85, 107, 12, 13, 89,
  499. 90, 91, 17, 93, 27, 107, 107, 107, 107, 107, 107, 34, 27, 107, 29, 66, 39, 40,
  500. 41, 34, 71, 72, 107, 74, 107, 76, 107, 107, 107, 107, 81, 11, 107, 56, 57, 58,
  501. 59, 107, 89, 90, 91, 107, 93, 23, 107, 66, 107, 27, 107, 107, 71, 72, 107, 74,
  502. 34, 76, 66, 107, 107, 107, 81, 71, 72, 107, 74, 107, 76, 47, 89, 90, 91, 81, 93,
  503. 107, 107, 107, 107, 107, 107, 89, 90, 91, 66, 93, 107, 107, 107, 71, 72, 107,
  504. 74, 107, 76, 107, 107, 107, 107, 81, 107, 107, 2, 107, 107, 107, 107, 89, 90,
  505. 91, 107, 93, 12, 13, 66, 15, 107, 17, 18, 71, 72, 107, 74, 107, 76, 107, 107,
  506. 107, 107, 81, 107, 107, 2, 107, 107, 107, 107, 89, 90, 91, 107, 93, 12, 13, 107,
  507. 107, 46, 17, 18, 49, 66, 51, 2, 53, 1, 71, 72, 107, 74, 107, 76, 107, 12, 13,
  508. 107, 81, 107, 17, 18, 107, 107, 107, 107, 89, 90, 91, 46, 93, 107, 49, 107, 51,
  509. 107, 53, 54, 107, 1, 107, 107, 107, 107, 107, 39, 40, 41, 107, 46, 107, 107, 49,
  510. 107, 51, 107, 53, 107, 107, 2, 22, 107, 56, 57, 58, 59, 107, 61, 107, 12, 13,
  511. 107, 107, 107, 17, 18, 107, 39, 40, 41, 12, 13, 107, 107, 107, 17, 18, 107, 107,
  512. 107, 107, 107, 107, 107, 56, 57, 58, 59, 107, 107, 107, 107, 107, 46, 107, 107,
  513. 49, 11, 51, 107, 53, 107, 107, 107, 46, 107, 107, 49, 22, 51, 24, 53, 107, 27,
  514. 107, 107, 107, 107, 107, 107, 34, 107, 36, 107, 38, 107, 107, 107, 107, 107,
  515. 107, 107, 46,);
  516. const YY_SHIFT_USE_DFLT = - 15;
  517. const YY_SHIFT_MAX = 238;
  518. static public $yy_shift_ofst = array(499, 393, 78, 393, 348, 78, 78, 348, - 12, - 12, 33, 78, 78, 78, 78, 168, 78,
  519. 78, 78, 213, 123, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 303, 78, 78, 78,
  520. 168, 258, 258, 438, 438, 438, 438, 438, 438, 1609, 1660, 1706, 1706, 1706,
  521. 1706, 1706, 499, 1912, 1153, 609, 541, 507, 989, 907, 825, 1071, 646, 1880,
  522. 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 731,
  523. 731, 140, 725, 804, 230, 465, 280, 160, 747, 1714, 1663, 483, 483, 160, 280,
  524. 280, 324, 160, 522, 594, 1661, 1749, 642, 715, 317, 842, 40, 404, 3, 144, 404,
  525. - 5, 460, 327, 431, 161, 294, 147, 147, 426, - 5, 434, 223, 223, 265, 223, 223,
  526. 223, 223, 223, 223, 265, 223, - 15, 1827, 1857, 1640, 1877, 1931, 1942, 92,
  527. 645, 11, 90, - 5, 70, - 5, - 5, - 5, - 5, - 5, - 5, - 5, - 5, - 5, - 5, 214,
  528. - 5, 70, - 5, 70, - 5, - 5, - 5, - 5, - 5, 124, 124, 227, 124, 356, 124, 214,
  529. 124, 124, - 5, 70, 124, 124, 223, 223, 595, 587, 587, 223, 265, 232, 223, 265,
  530. 265, 223, - 15, - 15, - 15, - 15, - 15, 1581, 1970, 575, 694, 660, 260, 118,
  531. 73, - 6, 96, 256, 295, 308, 145, 44, 110, 208, 263, - 14, 99, 439, 232, 519,
  532. 521, 511, 509, 487, 83, 187, 101, 372, 279, 0, 297, 288, 481, 452, 371, 307,
  533. 319, 385, 412, 414, 433, 375, 402,);
  534. const YY_REDUCE_USE_DFLT = - 67;
  535. const YY_REDUCE_MAX = 192;
  536. static public $yy_reduce_ofst = array(1560, 469, 608, 503, 542, 570, 728, 643, 922, 1278, 1360, 1060, 950, 1032,
  537. 1086, 896, 868, 1004, 786, 1414, 1332, 1114, 1524, 1168, 1224, 1250, 1196,
  538. 1142, 1306, 1470, 1496, 1388, 1442, 978, 758, 840, 814, 1588, 1639, 1745,
  539. 1719, 1678, 1708, 1775, 1811, 1259, 931, 931, 1013, 1095, 849, 1177, 170,
  540. - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26,
  541. - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 26, - 66,
  542. 46, 652, - 37, 484, 767, - 7, 136, 351, 113, 203, 254, 141, 314, 179, 278,
  543. 173, 420, 289, 394, 394, 289, 289, 20, 290, 228, 290, 424, 228, 326, 406, 289,
  544. 384, 289, 228, 316, 312, 435, 379, 389, 289, 289, 436, 458, 289, 289, 289,
  545. 289, 289, 289, 228, 289, 289, 476, 476, 476, 476, 476, 476, 502, 472, 476,
  546. 476, 466, 470, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 482, 466,
  547. 490, 466, 510, 466, 466, 466, 466, 466, 506, 506, 512, 506, 459, 506, 525,
  548. 506, 506, 466, 530, 506, 506, 28, 28, 534, 250, 250, 28, - 56, 193, 28, - 56,
  549. - 56, 28, 112, - 27, 454, 403, 446,);
  550. static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 21, 26, 30, 32, 33,),
  551. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  552. 45, 46, 48, 50, 52, 53, 55, 60,),
  553. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  554. 45, 46, 48, 50, 52, 53, 55, 60,),
  555. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  556. 45, 46, 48, 50, 52, 53, 55, 60,),
  557. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  558. 45, 46, 48, 50, 52, 53, 55, 60,),
  559. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  560. 45, 46, 48, 50, 52, 53, 55, 60,),
  561. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  562. 45, 46, 48, 50, 52, 53, 55, 60,),
  563. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  564. 45, 46, 48, 50, 52, 53, 55, 60,),
  565. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 33, 35, 37, 40, 43,
  566. 44, 45, 46, 48, 50, 52, 53, 55, 60,),
  567. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 31, 32, 33, 35, 37, 40, 43,
  568. 44, 45, 46, 48, 50, 52, 53, 55, 60,),
  569. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  570. 45, 46, 48, 50, 52, 53, 54, 55, 60,),
  571. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  572. 45, 46, 48, 50, 52, 53, 55, 60,),
  573. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  574. 45, 46, 48, 50, 52, 53, 55, 60,),
  575. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  576. 45, 46, 48, 50, 52, 53, 55, 60,),
  577. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  578. 45, 46, 48, 50, 52, 53, 55, 60,),
  579. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  580. 45, 46, 48, 50, 52, 53, 55, 60,),
  581. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  582. 45, 46, 48, 50, 52, 53, 55, 60,),
  583. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  584. 45, 46, 48, 50, 52, 53, 55, 60,),
  585. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  586. 45, 46, 48, 50, 52, 53, 55, 60,),
  587. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  588. 45, 46, 48, 50, 52, 53, 55, 60,),
  589. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  590. 45, 46, 48, 50, 52, 53, 55, 60,),
  591. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  592. 45, 46, 48, 50, 52, 53, 55, 60,),
  593. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  594. 45, 46, 48, 50, 52, 53, 55, 60,),
  595. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  596. 45, 46, 48, 50, 52, 53, 55, 60,),
  597. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  598. 45, 46, 48, 50, 52, 53, 55, 60,),
  599. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  600. 45, 46, 48, 50, 52, 53, 55, 60,),
  601. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  602. 45, 46, 48, 50, 52, 53, 55, 60,),
  603. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  604. 45, 46, 48, 50, 52, 53, 55, 60,),
  605. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  606. 45, 46, 48, 50, 52, 53, 55, 60,),
  607. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  608. 45, 46, 48, 50, 52, 53, 55, 60,),
  609. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  610. 45, 46, 48, 50, 52, 53, 55, 60,),
  611. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  612. 45, 46, 48, 50, 52, 53, 55, 60,),
  613. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  614. 45, 46, 48, 50, 52, 53, 55, 60,),
  615. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  616. 45, 46, 48, 50, 52, 53, 55, 60,),
  617. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  618. 45, 46, 48, 50, 52, 53, 55, 60,),
  619. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  620. 45, 46, 48, 50, 52, 53, 55, 60,),
  621. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  622. 45, 46, 48, 50, 52, 53, 55, 60,),
  623. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  624. 45, 46, 48, 50, 52, 53, 55, 60,),
  625. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  626. 45, 46, 48, 50, 52, 53, 55, 60,),
  627. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  628. 45, 46, 48, 50, 52, 55, 60,),
  629. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  630. 45, 46, 48, 50, 52, 55, 60,),
  631. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  632. 45, 46, 48, 50, 52, 55, 60,),
  633. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  634. 45, 46, 48, 50, 52, 55, 60,),
  635. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  636. 45, 46, 48, 50, 52, 55, 60,),
  637. array(12, 13, 14, 16, 17, 19, 20, 21, 26, 30, 32, 33, 35, 37, 40, 43, 44,
  638. 45, 46, 48, 50, 52, 55, 60,),
  639. array(1, 25, 27, 34, 39, 40, 41, 56, 57, 58, 59,),
  640. array(1, 11, 27, 34, 39, 40, 41, 56, 57, 58, 59,),
  641. array(1, 27, 34, 39, 40, 41, 56, 57, 58, 59,),
  642. array(1, 27, 34, 39, 40, 41, 56, 57, 58, 59,),
  643. array(1, 27, 34, 39, 40, 41, 56, 57, 58, 59,),
  644. array(1, 27, 34, 39, 40, 41, 56, 57, 58, 59,),
  645. array(1, 27, 34, 39, 40, 41, 56, 57, 58, 59,),
  646. array(3, 4, 5, 6, 7, 8, 12, 13, 16, 19, 20, 21, 26, 30, 32, 33,),
  647. array(1, 22, 39, 40, 41, 56, 57, 58, 59,),
  648. array(1, 38, 39, 40, 41, 56, 57, 58, 59,),
  649. array(1, 28, 39, 40, 41, 56, 57, 58, 59,),
  650. array(1, 11, 39, 40, 41, 56, 57, 58, 59,),
  651. array(1, 2, 39, 40, 41, 56, 57, 58, 59,),
  652. array(1, 11, 39, 40, 41, 56, 57, 58, 59,),
  653. array(1, 11, 39, 40, 41, 56, 57, 58, 59,),
  654. array(1, 11, 39, 40, 41, 56, 57, 58, 59,),
  655. array(1, 38, 39, 40, 41, 56, 57, 58, 59,),
  656. array(1, 39, 40, 41, 54, 56, 57, 58, 59,),
  657. array(1, 39, 40, 41, 56, 57, 58, 59, 61,),
  658. array(1, 39, 40, 41, 56, 57, 58, 59,),
  659. array(1, 39, 40, 41, 56, 57, 58, 59,),
  660. array(1, 39, 40, 41, 56, 57, 58, 59,),
  661. array(1, 39, 40, 41, 56, 57, 58, 59,),
  662. array(1, 39, 40, 41, 56, 57, 58, 59,),
  663. array(1, 39, 40, 41, 56, 57, 58, 59,),
  664. array(1, 39, 40, 41, 56, 57, 58, 59,),
  665. array(1, 39, 40, 41, 56, 57, 58, 59,),
  666. array(1, 39, 40, 41, 56, 57, 58, 59,),
  667. array(1, 39, 40, 41, 56, 57, 58, 59,),
  668. array(1, 39, 40, 41, 56, 57, 58, 59,),
  669. array(1, 39, 40, 41, 56, 57, 58, 59,), array(39, 40, 41, 56, 57, 58, 59,),
  670. array(39, 40, 41, 56, 57, 58, 59,), array(14, 17, 50, 52, 55,),
  671. array(5, 12, 13, 14, 16, 19, 20, 21, 26, 30, 32, 33, 60, 61,),
  672. array(1, 11, 18, 27, 34, 37, 49,), array(14, 17, 52, 55,),
  673. array(1, 11, 27, 34,), array(1, 27, 34,), array(14, 37, 55,),
  674. array(5, 12, 13, 14, 16, 19, 20, 21, 26, 30, 32, 33, 60, 61,),
  675. array(12, 13, 17, 27, 29, 34,), array(12, 13, 17, 27, 29, 34,),
  676. array(12, 13, 17, 27, 34,), array(12, 13, 17, 27, 34,), array(14, 37, 55,),
  677. array(1, 27, 34,), array(1, 27, 34,), array(18, 46, 53,),
  678. array(14, 37, 55,), array(1, 2,), array(1, 11, 27, 28, 34,),
  679. array(11, 23, 27, 34, 47,), array(11, 23, 27, 34, 47,),
  680. array(1, 11, 27, 34,), array(1, 11, 27, 34,), array(13, 14, 17, 55,),
  681. array(12, 13, 17, 51,), array(15, 18, 49,), array(12, 13, 17,),
  682. array(8, 9, 10,), array(15, 18, 49,), array(12, 13, 17,), array(27, 34,),
  683. array(1, 54,), array(14, 55,), array(1, 11,), array(18, 49,),
  684. array(27, 34,), array(14, 17,), array(14, 17,), array(1, 18,),
  685. array(27, 34,), array(1, 29,), array(1,), array(1,), array(18,), array(1,),
  686. array(1,), array(1,), array(1,), array(1,), array(1,), array(18,),
  687. array(1,), array(), array(2, 12, 13, 15, 17, 18, 46, 49, 51, 53,),
  688. array(2, 12, 13, 17, 18, 46, 49, 51, 53, 54,),
  689. array(2, 12, 13, 15, 17, 18, 46, 49, 51, 53,),
  690. array(2, 12, 13, 17, 18, 46, 49, 51, 53,),
  691. array(2, 12, 13, 17, 18, 46, 49, 51, 53,),
  692. array(12, 13, 17, 18, 46, 49, 51, 53,), array(13, 14, 17, 35, 55,),
  693. array(12, 13, 17, 51,), array(15, 46, 53,), array(12, 13, 17,),
  694. array(27, 34,), array(14, 55,), array(27, 34,), array(27, 34,),
  695. array(27, 34,), array(27, 34,), array(27, 34,), array(27, 34,),
  696. array(27, 34,), array(27, 34,), array(27, 34,), array(27, 34,),
  697. array(46, 53,), array(27, 34,), array(14, 55,), array(27, 34,),
  698. array(14, 55,), array(27, 34,), array(27, 34,), array(27, 34,),
  699. array(27, 34,), array(27, 34,), array(46, 53,), array(46, 53,),
  700. array(13, 37,), array(46, 53,), array(15, 23,), array(46, 53,),
  701. array(46, 53,), array(46, 53,), array(46, 53,), array(27, 34,),
  702. array(14, 55,), array(46, 53,), array(46, 53,), array(1,), array(1,),
  703. array(9,), array(2,), array(2,), array(1,), array(18,), array(37,),
  704. array(1,), array(18,), array(18,), array(1,), array(), array(), array(),
  705. array(), array(), array(1, 2, 37, 39, 40, 41, 49, 56, 57, 58, 59,),
  706. array(11, 22, 24, 27, 34, 36, 38, 46,), array(11, 15, 27, 34, 37, 49,),
  707. array(37, 46, 49, 54,), array(12, 13, 17, 51,), array(29, 37, 49,),
  708. array(23, 47, 54,), array(23, 47, 61,), array(22, 36,), array(36, 54,),
  709. array(36, 38,), array(37, 49,), array(37, 49,), array(46, 54,),
  710. array(36, 38,), array(36, 38,), array(23, 47,), array(37, 49,),
  711. array(17, 51,), array(15, 46,), array(35,), array(37,), array(11,),
  712. array(17,), array(5,), array(17,), array(14,), array(17,), array(17,),
  713. array(15,), array(46,), array(17,), array(17,), array(42,), array(17,),
  714. array(52,), array(17,), array(24,), array(52,), array(35,), array(17,),
  715. array(37,), array(17,), array(54,), array(54,), array(38,), array(),
  716. array(), array(), array(), array(), array(), array(), array(), array(),
  717. array(), array(), array(), array(), array(), array(), array(), array(),
  718. array(), array(), array(), array(), array(), array(), array(), array(),
  719. array(), array(), array(), array(), array(), array(), array(), array(),
  720. array(), array(), array(), array(), array(), array(), array(), array(),
  721. array(), array(), array(), array(), array(), array(), array(), array(),
  722. array(), array(), array(), array(), array(), array(), array(), array(),
  723. array(), array(), array(), array(), array(), array(), array(), array(),
  724. array(), array(), array(), array(), array(), array(), array(), array(),
  725. array(), array(), array(), array(), array(), array(), array(), array(),
  726. array(), array(), array(), array(), array(), array(), array(), array(),
  727. array(), array(), array(), array(), array(), array(), array(), array(),);
  728. static public $yy_default = array(339, 517, 496, 532, 532, 496, 496, 532, 532, 532, 532, 532, 532, 532, 532, 532,
  729. 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532,
  730. 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 398, 532, 361,
  731. 398, 398, 374, 364, 336, 532, 532, 403, 532, 532, 532, 532, 532, 532, 532, 532,
  732. 400, 494, 518, 403, 409, 520, 379, 519, 405, 495, 410, 420, 425, 424, 532, 532,
  733. 436, 532, 412, 398, 532, 532, 398, 398, 398, 398, 532, 398, 398, 508, 532, 388,
  734. 412, 426, 426, 412, 412, 532, 461, 451, 461, 532, 451, 461, 398, 412, 532, 412,
  735. 451, 398, 532, 532, 392, 376, 412, 419, 394, 505, 427, 416, 428, 429, 415, 423,
  736. 451, 412, 503, 450, 450, 450, 450, 450, 450, 532, 463, 477, 461, 384, 532, 372,
  737. 383, 371, 366, 365, 368, 370, 360, 362, 385, 454, 386, 532, 358, 532, 387, 377,
  738. 382, 381, 375, 457, 486, 461, 487, 532, 489, 456, 455, 488, 378, 532, 458, 459,
  739. 445, 393, 352, 497, 498, 389, 506, 461, 418, 509, 483, 395, 461, 461, 502, 502,
  740. 502, 436, 432, 436, 436, 462, 436, 426, 426, 532, 532, 532, 532, 436, 432, 532,
  741. 532, 426, 446, 532, 432, 532, 477, 532, 532, 344, 532, 532, 532, 532, 532, 432,
  742. 532, 532, 438, 532, 532, 532, 406, 532, 434, 532, 507, 532, 441, 532, 532, 340,
  743. 504, 492, 338, 337, 491, 438, 467, 482, 396, 341, 441, 477, 413, 349, 343, 350,
  744. 466, 351, 411, 348, 431, 346, 345, 347, 433, 407, 465, 355, 464, 356, 414, 437,
  745. 399, 353, 435, 380, 354, 342, 421, 417, 513, 479, 440, 439, 480, 512, 390, 511,
  746. 510, 523, 522, 521, 481, 484, 493, 500, 478, 453, 485, 499, 452, 529, 430, 501,
  747. 528, 391, 526, 525, 443, 373, 460, 490, 444, 422, 473, 471, 476, 442, 470, 469,
  748. 468, 447, 449, 524, 475, 531, 530, 527, 448, 397, 515, 474, 516, 472, 514, 367,);
  749. const YYNOCODE = 108;
  750. const YYSTACKDEPTH = 500;
  751. const YYNSTATE = 336;
  752. const YYNRULE = 196;
  753. const YYERRORSYMBOL = 62;
  754. const YYERRSYMDT = 'yy0';
  755. const YYFALLBACK = 0;
  756. public static $yyFallback = array();
  757. public function Trace($TraceFILE, $zTracePrompt)
  758. {
  759. if (!$TraceFILE) {
  760. $zTracePrompt = 0;
  761. } elseif (!$zTracePrompt) {
  762. $TraceFILE = 0;
  763. }
  764. $this->yyTraceFILE = $TraceFILE;
  765. $this->yyTracePrompt = $zTracePrompt;
  766. }
  767. public function PrintTrace()
  768. {
  769. $this->yyTraceFILE = fopen('php://output', 'w');
  770. $this->yyTracePrompt = '<br>';
  771. }
  772. public $yyTraceFILE;
  773. public $yyTracePrompt;
  774. public $yyidx; /* Index of top element in stack */
  775. public $yyerrcnt; /* Shifts left before out of the error */
  776. public $yystack = array(); /* The parser's stack */
  777. public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'NOCACHE', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
  778. 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
  779. 'SIMPLETAG', 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC',
  780. 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER',
  781. 'SMARTYBLOCKCHILDPARENT', 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
  782. 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
  783. 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB',
  784. 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK',
  785. 'error', 'start', 'template', 'template_element', 'smartytag', 'literal',
  786. 'text_content', 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes',
  787. 'value', 'expr', 'varindexed', 'modifierlist', 'statement', 'statements', 'foraction',
  788. 'varvar', 'modparameters', 'attribute', 'ternary', 'array', 'tlop', 'lop', 'scond',
  789. 'function', 'ns1', 'doublequoted_with_quotes', 'static_class_access', 'object',
  790. 'arrayindex', 'indexdef', 'varvarele', 'objectchain', 'objectelement', 'method',
  791. 'params', 'modifier', 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
  792. 'doublequotedcontent',);
  793. public static $yyRuleName = array('start ::= template', 'template ::= template_element',
  794. 'template ::= template template_element', 'template ::=',
  795. 'template_element ::= smartytag', 'template_element ::= literal',
  796. 'template_element ::= PHP', 'template_element ::= NOCACHE',
  797. 'template_element ::= text_content', 'text_content ::= TEXT',
  798. 'text_content ::= text_content TEXT', 'template_element ::= STRIPON',
  799. 'template_element ::= STRIPOFF', 'literal ::= LITERALSTART LITERALEND',
  800. 'literal ::= LITERALSTART literal_elements LITERALEND',
  801. 'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
  802. 'literal_element ::= literal', 'literal_element ::= LITERAL',
  803. 'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
  804. 'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
  805. 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
  806. 'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value',
  807. 'tag ::= LDEL DOLLARID EQUAL expr', 'tag ::= LDEL DOLLARID EQUAL expr attributes',
  808. 'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
  809. 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
  810. 'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
  811. 'tag ::= LDEL ID PTR ID modifierlist attributes',
  812. 'tag ::= LDELMAKENOCACHE DOLLARID', 'tag ::= LDELIF expr',
  813. 'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
  814. 'tag ::= LDELIF statement attributes',
  815. 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
  816. 'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
  817. 'tag ::= LDELFOR statement TO expr attributes',
  818. 'tag ::= LDELFOR statement TO expr STEP expr attributes',
  819. 'tag ::= LDELFOREACH attributes',
  820. 'tag ::= LDELFOREACH SPACE value AS varvar attributes',
  821. 'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
  822. 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
  823. 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
  824. 'tag ::= LDELSETFILTER ID modparameters',
  825. 'tag ::= LDELSETFILTER ID modparameters modifierlist',
  826. 'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
  827. 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
  828. 'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
  829. 'attributes ::= attributes attribute', 'attributes ::= attribute',
  830. 'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
  831. 'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
  832. 'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
  833. 'statements ::= statement', 'statements ::= statements COMMA statement',
  834. 'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
  835. 'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
  836. 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
  837. 'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
  838. 'expr ::= expr modifierlist', 'expr ::= expr tlop value',
  839. 'expr ::= expr lop expr', 'expr ::= expr scond', 'expr ::= expr ISIN array',
  840. 'expr ::= expr ISIN value',
  841. 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
  842. 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
  843. 'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
  844. 'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
  845. 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
  846. 'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
  847. 'value ::= variable INSTANCEOF ns1', 'value ::= variable INSTANCEOF variable',
  848. 'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
  849. 'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
  850. 'value ::= value modifierlist', 'value ::= NAMESPACE',
  851. 'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
  852. 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
  853. 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
  854. 'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
  855. 'variable ::= HATCH variable HATCH arrayindex',
  856. 'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
  857. 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
  858. 'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
  859. 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
  860. 'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
  861. 'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
  862. 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
  863. 'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
  864. 'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
  865. 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
  866. 'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
  867. 'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
  868. 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
  869. 'objectchain ::= objectchain objectelement',
  870. 'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
  871. 'objectelement ::= PTR LDEL expr RDEL arrayindex',
  872. 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
  873. 'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
  874. 'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
  875. 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
  876. 'modifierlist ::= modifierlist modifier modparameters',
  877. 'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
  878. 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
  879. 'modparameters ::=', 'modparameter ::= COLON value',
  880. 'modparameter ::= COLON array', 'static_class_access ::= method',
  881. 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
  882. 'static_class_access ::= DOLLARID arrayindex',
  883. 'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
  884. 'lop ::= SLOGOP', 'tlop ::= TLOGOP', 'scond ::= SINGLECOND',
  885. 'array ::= OPENB arrayelements CLOSEB', 'arrayelements ::= arrayelement',
  886. 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
  887. 'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
  888. 'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
  889. 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
  890. 'doublequoted ::= doublequoted doublequotedcontent',
  891. 'doublequoted ::= doublequotedcontent',
  892. 'doublequotedcontent ::= BACKTICK variable BACKTICK',
  893. 'doublequotedcontent ::= BACKTICK expr BACKTICK',
  894. 'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
  895. 'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
  896. 'doublequotedcontent ::= TEXT',);
  897. public function tokenName($tokenType)
  898. {
  899. if ($tokenType === 0) {
  900. return 'End of Input';
  901. }
  902. if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
  903. return $this->yyTokenName[ $tokenType ];
  904. } else {
  905. return "Unknown";
  906. }
  907. }
  908. public static function yy_destructor($yymajor, $yypminor)
  909. {
  910. switch ($yymajor) {
  911. default:
  912. break; /* If no destructor action specified: do nothing */
  913. }
  914. }
  915. public function yy_pop_parser_stack()
  916. {
  917. if (empty($this->yystack)) {
  918. return;
  919. }
  920. $yytos = array_pop($this->yystack);
  921. if ($this->yyTraceFILE && $this->yyidx >= 0) {
  922. fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
  923. }
  924. $yymajor = $yytos->major;
  925. self::yy_destructor($yymajor, $yytos->minor);
  926. $this->yyidx --;
  927. return $yymajor;
  928. }
  929. public function __destruct()
  930. {
  931. while ($this->yystack !== Array()) {
  932. $this->yy_pop_parser_stack();
  933. }
  934. if (is_resource($this->yyTraceFILE)) {
  935. fclose($this->yyTraceFILE);
  936. }
  937. }
  938. public function yy_get_expected_tokens($token)
  939. {
  940. static $res3 = array();
  941. static $res4 = array();
  942. $state = $this->yystack[ $this->yyidx ]->stateno;
  943. $expected = self::$yyExpectedTokens[ $state ];
  944. if (isset($res3[ $state ][ $token ])) {
  945. if ($res3[ $state ][ $token ]) {
  946. return $expected;
  947. }
  948. } else {
  949. if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
  950. return $expected;
  951. }
  952. }
  953. $stack = $this->yystack;
  954. $yyidx = $this->yyidx;
  955. do {
  956. $yyact = $this->yy_find_shift_action($token);
  957. if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
  958. // reduce action
  959. $done = 0;
  960. do {
  961. if ($done ++ == 100) {
  962. $this->yyidx = $yyidx;
  963. $this->yystack = $stack;
  964. // too much recursion prevents proper detection
  965. // so give up
  966. return array_unique($expected);
  967. }
  968. $yyruleno = $yyact - self::YYNSTATE;
  969. $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
  970. $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
  971. self::$yyRuleInfo[ $yyruleno ][ 0 ]);
  972. if (isset(self::$yyExpectedTokens[ $nextstate ])) {
  973. $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
  974. if (isset($res4[ $nextstate ][ $token ])) {
  975. if ($res4[ $nextstate ][ $token ]) {
  976. $this->yyidx = $yyidx;
  977. $this->yystack = $stack;
  978. return array_unique($expected);
  979. }
  980. } else {
  981. if ($res4[ $nextstate ][ $token ] =
  982. in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
  983. ) {
  984. $this->yyidx = $yyidx;
  985. $this->yystack = $stack;
  986. return array_unique($expected);
  987. }
  988. }
  989. }
  990. if ($nextstate < self::YYNSTATE) {
  991. // we need to shift a non-terminal
  992. $this->yyidx ++;
  993. $x = new TP_yyStackEntry;
  994. $x->stateno = $nextstate;
  995. $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
  996. $this->yystack[ $this->yyidx ] = $x;
  997. continue 2;
  998. } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
  999. $this->yyidx = $yyidx;
  1000. $this->yystack = $stack;
  1001. // the last token was just ignored, we can't accept
  1002. // by ignoring input, this is in essence ignoring a
  1003. // syntax error!
  1004. return array_unique($expected);
  1005. } elseif ($nextstate === self::YY_NO_ACTION) {
  1006. $this->yyidx = $yyidx;
  1007. $this->yystack = $stack;
  1008. // input accepted, but not shifted (I guess)
  1009. return $expected;
  1010. } else {
  1011. $yyact = $nextstate;
  1012. }
  1013. }
  1014. while (true);
  1015. }
  1016. break;
  1017. }
  1018. while (true);
  1019. $this->yyidx = $yyidx;
  1020. $this->yystack = $stack;
  1021. return array_unique($expected);
  1022. }
  1023. public function yy_is_expected_token($token)
  1024. {
  1025. static $res = array();
  1026. static $res2 = array();
  1027. if ($token === 0) {
  1028. return true; // 0 is not part of this
  1029. }
  1030. $state = $this->yystack[ $this->yyidx ]->stateno;
  1031. if (isset($res[ $state ][ $token ])) {
  1032. if ($res[ $state ][ $token ]) {
  1033. return true;
  1034. }
  1035. } else {
  1036. if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
  1037. return true;
  1038. }
  1039. }
  1040. $stack = $this->yystack;
  1041. $yyidx = $this->yyidx;
  1042. do {
  1043. $yyact = $this->yy_find_shift_action($token);
  1044. if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
  1045. // reduce action
  1046. $done = 0;
  1047. do {
  1048. if ($done ++ == 100) {
  1049. $this->yyidx = $yyidx;
  1050. $this->yystack = $stack;
  1051. // too much recursion prevents proper detection
  1052. // so give up
  1053. return true;
  1054. }
  1055. $yyruleno = $yyact - self::YYNSTATE;
  1056. $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
  1057. $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
  1058. self::$yyRuleInfo[ $yyruleno ][ 0 ]);
  1059. if (isset($res2[ $nextstate ][ $token ])) {
  1060. if ($res2[ $nextstate ][ $token ]) {
  1061. $this->yyidx = $yyidx;
  1062. $this->yystack = $stack;
  1063. return true;
  1064. }
  1065. } else {
  1066. if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
  1067. in_array($token, self::$yyExpectedTokens[ $nextstate ],
  1068. true))
  1069. ) {
  1070. $this->yyidx = $yyidx;
  1071. $this->yystack = $stack;
  1072. return true;
  1073. }
  1074. }
  1075. if ($nextstate < self::YYNSTATE) {
  1076. // we need to shift a non-terminal
  1077. $this->yyidx ++;
  1078. $x = new TP_yyStackEntry;
  1079. $x->stateno = $nextstate;
  1080. $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
  1081. $this->yystack[ $this->yyidx ] = $x;
  1082. continue 2;
  1083. } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
  1084. $this->yyidx = $yyidx;
  1085. $this->yystack = $stack;
  1086. if (!$token) {
  1087. // end of input: this is valid
  1088. return true;
  1089. }
  1090. // the last token was just ignored, we can't accept
  1091. // by ignoring input, this is in essence ignoring a
  1092. // syntax error!
  1093. return false;
  1094. } elseif ($nextstate === self::YY_NO_ACTION) {
  1095. $this->yyidx = $yyidx;
  1096. $this->yystack = $stack;
  1097. // input accepted, but not shifted (I guess)
  1098. return true;
  1099. } else {
  1100. $yyact = $nextstate;
  1101. }
  1102. }
  1103. while (true);
  1104. }
  1105. break;
  1106. }
  1107. while (true);
  1108. $this->yyidx = $yyidx;
  1109. $this->yystack = $stack;
  1110. return true;
  1111. }
  1112. public function yy_find_shift_action($iLookAhead)
  1113. {
  1114. $stateno = $this->yystack[ $this->yyidx ]->stateno;
  1115. /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
  1116. if (!isset(self::$yy_shift_ofst[ $stateno ])) {
  1117. // no shift actions
  1118. return self::$yy_default[ $stateno ];
  1119. }
  1120. $i = self::$yy_shift_ofst[ $stateno ];
  1121. if ($i === self::YY_SHIFT_USE_DFLT) {
  1122. return self::$yy_default[ $stateno ];
  1123. }
  1124. if ($iLookAhead == self::YYNOCODE) {
  1125. return self::YY_NO_ACTION;
  1126. }
  1127. $i += $iLookAhead;
  1128. if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
  1129. if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
  1130. ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
  1131. ) {
  1132. if ($this->yyTraceFILE) {
  1133. fwrite($this->yyTraceFILE,
  1134. $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
  1135. $this->yyTokenName[ $iFallback ] . "\n");
  1136. }
  1137. return $this->yy_find_shift_action($iFallback);
  1138. }
  1139. return self::$yy_default[ $stateno ];
  1140. } else {
  1141. return self::$yy_action[ $i ];
  1142. }
  1143. }
  1144. public function yy_find_reduce_action($stateno, $iLookAhead)
  1145. {
  1146. /* $stateno = $this->yystack[$this->yyidx]->stateno; */
  1147. if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
  1148. return self::$yy_default[ $stateno ];
  1149. }
  1150. $i = self::$yy_reduce_ofst[ $stateno ];
  1151. if ($i == self::YY_REDUCE_USE_DFLT) {
  1152. return self::$yy_default[ $stateno ];
  1153. }
  1154. if ($iLookAhead == self::YYNOCODE) {
  1155. return self::YY_NO_ACTION;
  1156. }
  1157. $i += $iLookAhead;
  1158. if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
  1159. return self::$yy_default[ $stateno ];
  1160. } else {
  1161. return self::$yy_action[ $i ];
  1162. }
  1163. }
  1164. public function yy_shift($yyNewState, $yyMajor, $yypMinor)
  1165. {
  1166. $this->yyidx ++;
  1167. if ($this->yyidx >= self::YYSTACKDEPTH) {
  1168. $this->yyidx --;
  1169. if ($this->yyTraceFILE) {
  1170. fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
  1171. }
  1172. while ($this->yyidx >= 0) {
  1173. $this->yy_pop_parser_stack();
  1174. }
  1175. #line 207 "../smarty/lexer/smarty_internal_templateparser.y"
  1176. $this->internalError = true;
  1177. $this->compiler->trigger_template_error("Stack overflow in template parser");
  1178. return;
  1179. }
  1180. $yytos = new TP_yyStackEntry;
  1181. $yytos->stateno = $yyNewState;
  1182. $yytos->major = $yyMajor;
  1183. $yytos->minor = $yypMinor;
  1184. $this->yystack[] = $yytos;
  1185. if ($this->yyTraceFILE && $this->yyidx > 0) {
  1186. fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
  1187. fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
  1188. for ($i = 1; $i <= $this->yyidx; $i ++) {
  1189. fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
  1190. }
  1191. fwrite($this->yyTraceFILE, "\n");
  1192. }
  1193. }
  1194. public static $yyRuleInfo = array(array(0 => 63, 1 => 1), array(0 => 64, 1 => 1), array(0 => 64, 1 => 2),
  1195. array(0 => 64, 1 => 0), array(0 => 65, 1 => 1), array(0 => 65, 1 => 1),
  1196. array(0 => 65, 1 => 1), array(0 => 65, 1 => 1), array(0 => 65, 1 => 1),
  1197. array(0 => 68, 1 => 1), array(0 => 68, 1 => 2), array(0 => 65, 1 => 1),
  1198. array(0 => 65, 1 => 1), array(0 => 67, 1 => 2), array(0 => 67, 1 => 3),
  1199. array(0 => 69, 1 => 2), array(0 => 69, 1 => 0), array(0 => 70, 1 => 1),
  1200. array(0 => 70, 1 => 1), array(0 => 66, 1 => 2), array(0 => 66, 1 => 1),
  1201. array(0 => 71, 1 => 2), array(0 => 71, 1 => 3), array(0 => 71, 1 => 2),
  1202. array(0 => 71, 1 => 3), array(0 => 71, 1 => 2), array(0 => 71, 1 => 3),
  1203. array(0 => 71, 1 => 4), array(0 => 71, 1 => 4), array(0 => 71, 1 => 5),
  1204. array(0 => 71, 1 => 5), array(0 => 66, 1 => 1), array(0 => 71, 1 => 3),
  1205. array(0 => 71, 1 => 2), array(0 => 71, 1 => 4), array(0 => 71, 1 => 5),
  1206. array(0 => 71, 1 => 6), array(0 => 71, 1 => 2), array(0 => 71, 1 => 2),
  1207. array(0 => 71, 1 => 3), array(0 => 71, 1 => 2), array(0 => 71, 1 => 3),
  1208. array(0 => 71, 1 => 8), array(0 => 80, 1 => 2), array(0 => 80, 1 => 1),
  1209. array(0 => 71, 1 => 5), array(0 => 71, 1 => 7), array(0 => 71, 1 => 2),
  1210. array(0 => 71, 1 => 6), array(0 => 71, 1 => 8), array(0 => 71, 1 => 6),
  1211. array(0 => 71, 1 => 8), array(0 => 71, 1 => 3), array(0 => 71, 1 => 4),
  1212. array(0 => 71, 1 => 2), array(0 => 66, 1 => 1), array(0 => 71, 1 => 2),
  1213. array(0 => 71, 1 => 3), array(0 => 71, 1 => 4), array(0 => 71, 1 => 5),
  1214. array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 0),
  1215. array(0 => 83, 1 => 4), array(0 => 83, 1 => 2), array(0 => 83, 1 => 2),
  1216. array(0 => 83, 1 => 2), array(0 => 83, 1 => 2), array(0 => 83, 1 => 2),
  1217. array(0 => 83, 1 => 4), array(0 => 79, 1 => 1), array(0 => 79, 1 => 3),
  1218. array(0 => 78, 1 => 3), array(0 => 78, 1 => 3), array(0 => 78, 1 => 3),
  1219. array(0 => 78, 1 => 3), array(0 => 75, 1 => 1), array(0 => 75, 1 => 1),
  1220. array(0 => 75, 1 => 3), array(0 => 75, 1 => 3), array(0 => 75, 1 => 3),
  1221. array(0 => 75, 1 => 1), array(0 => 75, 1 => 2), array(0 => 75, 1 => 3),
  1222. array(0 => 75, 1 => 3), array(0 => 75, 1 => 2), array(0 => 75, 1 => 3),
  1223. array(0 => 75, 1 => 3), array(0 => 84, 1 => 7), array(0 => 84, 1 => 7),
  1224. array(0 => 74, 1 => 1), array(0 => 74, 1 => 2), array(0 => 74, 1 => 2),
  1225. array(0 => 74, 1 => 2), array(0 => 74, 1 => 2), array(0 => 74, 1 => 1),
  1226. array(0 => 74, 1 => 1), array(0 => 74, 1 => 3), array(0 => 74, 1 => 2),
  1227. array(0 => 74, 1 => 2), array(0 => 74, 1 => 1), array(0 => 74, 1 => 1),
  1228. array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
  1229. array(0 => 74, 1 => 1), array(0 => 74, 1 => 1), array(0 => 74, 1 => 3),
  1230. array(0 => 74, 1 => 1), array(0 => 74, 1 => 2), array(0 => 74, 1 => 1),
  1231. array(0 => 74, 1 => 3), array(0 => 90, 1 => 1), array(0 => 90, 1 => 1),
  1232. array(0 => 72, 1 => 1), array(0 => 72, 1 => 1), array(0 => 72, 1 => 3),
  1233. array(0 => 72, 1 => 1), array(0 => 72, 1 => 3), array(0 => 72, 1 => 4),
  1234. array(0 => 72, 1 => 3), array(0 => 72, 1 => 4), array(0 => 76, 1 => 2),
  1235. array(0 => 76, 1 => 2), array(0 => 94, 1 => 2), array(0 => 94, 1 => 0),
  1236. array(0 => 95, 1 => 2), array(0 => 95, 1 => 2), array(0 => 95, 1 => 4),
  1237. array(0 => 95, 1 => 2), array(0 => 95, 1 => 2), array(0 => 95, 1 => 4),
  1238. array(0 => 95, 1 => 3), array(0 => 95, 1 => 5), array(0 => 95, 1 => 3),
  1239. array(0 => 95, 1 => 3), array(0 => 95, 1 => 3), array(0 => 95, 1 => 3),
  1240. array(0 => 95, 1 => 3), array(0 => 95, 1 => 3), array(0 => 95, 1 => 2),
  1241. array(0 => 81, 1 => 1), array(0 => 81, 1 => 1), array(0 => 81, 1 => 2),
  1242. array(0 => 96, 1 => 1), array(0 => 96, 1 => 1), array(0 => 96, 1 => 3),
  1243. array(0 => 93, 1 => 2), array(0 => 97, 1 => 1), array(0 => 97, 1 => 2),
  1244. array(0 => 98, 1 => 3), array(0 => 98, 1 => 3), array(0 => 98, 1 => 5),
  1245. array(0 => 98, 1 => 6), array(0 => 98, 1 => 2), array(0 => 89, 1 => 4),
  1246. array(0 => 99, 1 => 4), array(0 => 99, 1 => 4), array(0 => 100, 1 => 3),
  1247. array(0 => 100, 1 => 1), array(0 => 100, 1 => 0), array(0 => 77, 1 => 3),
  1248. array(0 => 77, 1 => 2), array(0 => 101, 1 => 3), array(0 => 101, 1 => 2),
  1249. array(0 => 82, 1 => 2), array(0 => 82, 1 => 0), array(0 => 102, 1 => 2),
  1250. array(0 => 102, 1 => 2), array(0 => 92, 1 => 1), array(0 => 92, 1 => 2),
  1251. array(0 => 92, 1 => 1), array(0 => 92, 1 => 2), array(0 => 92, 1 => 3),
  1252. array(0 => 87, 1 => 1), array(0 => 87, 1 => 1), array(0 => 86, 1 => 1),
  1253. array(0 => 88, 1 => 1), array(0 => 85, 1 => 3), array(0 => 103, 1 => 1),
  1254. array(0 => 103, 1 => 3), array(0 => 103, 1 => 0), array(0 => 104, 1 => 3),
  1255. array(0 => 104, 1 => 3), array(0 => 104, 1 => 1), array(0 => 91, 1 => 2),
  1256. array(0 => 91, 1 => 3), array(0 => 105, 1 => 2), array(0 => 105, 1 => 1),
  1257. array(0 => 106, 1 => 3), array(0 => 106, 1 => 3), array(0 => 106, 1 => 1),
  1258. array(0 => 106, 1 => 3), array(0 => 106, 1 => 3), array(0 => 106, 1 => 1),
  1259. array(0 => 106, 1 => 1),);
  1260. public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 17 => 9,
  1261. 18 => 9, 44 => 9, 67 => 9, 68 => 9, 76 => 9, 77 => 9, 81 => 9, 90 => 9, 95 => 9,
  1262. 96 => 9, 101 => 9, 105 => 9, 106 => 9, 110 => 9, 112 => 9, 117 => 9, 179 => 9,
  1263. 184 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 16 => 13, 14 => 14, 75 => 14,
  1264. 15 => 15, 91 => 15, 93 => 15, 94 => 15, 124 => 15, 19 => 19, 20 => 20, 21 => 21,
  1265. 23 => 21, 25 => 21, 22 => 22, 24 => 22, 26 => 22, 27 => 27, 28 => 27, 29 => 29,
  1266. 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36, 37 => 37,
  1267. 38 => 38, 39 => 39, 41 => 39, 40 => 40, 42 => 42, 43 => 43, 45 => 45, 46 => 46,
  1268. 47 => 47, 48 => 48, 50 => 48, 49 => 49, 51 => 49, 52 => 52, 53 => 53, 54 => 54,
  1269. 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 61 => 61, 70 => 61,
  1270. 159 => 61, 163 => 61, 167 => 61, 168 => 61, 62 => 62, 160 => 62, 166 => 62,
  1271. 63 => 63, 64 => 64, 65 => 64, 66 => 66, 144 => 66, 69 => 69, 71 => 71, 72 => 72,
  1272. 73 => 72, 74 => 74, 78 => 78, 79 => 79, 80 => 79, 82 => 82, 109 => 82, 83 => 83,
  1273. 84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88, 89 => 89, 92 => 92, 97 => 97,
  1274. 98 => 98, 99 => 99, 100 => 100, 102 => 102, 103 => 103, 104 => 103, 107 => 107,
  1275. 108 => 108, 111 => 111, 113 => 113, 114 => 114, 115 => 115, 116 => 116,
  1276. 118 => 118, 119 => 119, 120 => 120, 121 => 121, 122 => 122, 123 => 123,
  1277. 125 => 125, 181 => 125, 126 => 126, 127 => 127, 128 => 128, 129 => 129,
  1278. 130 => 130, 131 => 131, 139 => 131, 132 => 132, 133 => 133, 134 => 134,
  1279. 135 => 134, 137 => 134, 138 => 134, 136 => 136, 140 => 140, 141 => 141,
  1280. 142 => 142, 185 => 142, 143 => 143, 145 => 145, 146 => 146, 147 => 147,
  1281. 148 => 148, 149 => 149, 150 => 150, 151 => 151, 152 => 152, 153 => 153,
  1282. 154 => 154, 155 => 155, 156 => 156, 157 => 157, 158 => 158, 161 => 161,
  1283. 162 => 162, 164 => 164, 165 => 165, 169 => 169, 170 => 170, 171 => 171,
  1284. 172 => 172, 173 => 173, 174 => 174, 175 => 175, 176 => 176, 177 => 177,
  1285. 178 => 178, 180 => 180, 182 => 182, 183 => 183, 186 => 186, 187 => 187,
  1286. 188 => 188, 189 => 189, 190 => 189, 192 => 189, 191 => 191, 193 => 193,
  1287. 194 => 194, 195 => 195,);
  1288. #line 218 "../smarty/lexer/smarty_internal_templateparser.y"
  1289. function yy_r0()
  1290. {
  1291. $this->root_buffer->prepend_array($this, $this->template_prefix);
  1292. $this->root_buffer->append_array($this, $this->template_postfix);
  1293. $this->_retvalue = $this->root_buffer->to_smarty_php($this);
  1294. }
  1295. #line 228 "../smarty/lexer/smarty_internal_templateparser.y"
  1296. function yy_r1()
  1297. {
  1298. if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
  1299. $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
  1300. }
  1301. }
  1302. #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
  1303. function yy_r2()
  1304. {
  1305. if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
  1306. // because of possible code injection
  1307. $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
  1308. }
  1309. }
  1310. #line 249 "../smarty/lexer/smarty_internal_templateparser.y"
  1311. function yy_r4()
  1312. {
  1313. if ($this->compiler->has_code) {
  1314. $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor);
  1315. } else {
  1316. $this->_retvalue = null;
  1317. }
  1318. $this->compiler->has_variable_string = false;
  1319. $this->block_nesting_level = count($this->compiler->_tag_stack);
  1320. }
  1321. #line 260 "../smarty/lexer/smarty_internal_templateparser.y"
  1322. function yy_r5()
  1323. {
  1324. $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor);
  1325. }
  1326. #line 264 "../smarty/lexer/smarty_internal_templateparser.y"
  1327. function yy_r6()
  1328. {
  1329. $code = $this->compiler->compileTag('private_php',
  1330. array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor),
  1331. array('type' => $this->lex->phpType)), array());
  1332. if ($this->compiler->has_code && !empty($code)) {
  1333. $tmp = '';
  1334. foreach ($this->compiler->prefix_code as $code) {
  1335. $tmp .= $code;
  1336. }
  1337. $this->compiler->prefix_code = array();
  1338. $this->_retvalue =
  1339. new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
  1340. } else {
  1341. $this->_retvalue = null;
  1342. }
  1343. }
  1344. #line 275 "../smarty/lexer/smarty_internal_templateparser.y"
  1345. function yy_r7()
  1346. {
  1347. $this->compiler->tag_nocache = true;
  1348. $save = $this->template->compiled->has_nocache_code;
  1349. $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this,
  1350. $this->compiler->processNocacheCode("<?php echo '{$this->yystack[$this->yyidx + 0]->minor}';?>\n",
  1351. true));
  1352. $this->template->compiled->has_nocache_code = $save;
  1353. }
  1354. #line 282 "../smarty/lexer/smarty_internal_templateparser.y"
  1355. function yy_r8()
  1356. {
  1357. $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor);
  1358. }
  1359. #line 286 "../smarty/lexer/smarty_internal_templateparser.y"
  1360. function yy_r9()
  1361. {
  1362. $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
  1363. }
  1364. #line 290 "../smarty/lexer/smarty_internal_templateparser.y"
  1365. function yy_r10()
  1366. {
  1367. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
  1368. }
  1369. #line 295 "../smarty/lexer/smarty_internal_templateparser.y"
  1370. function yy_r11()
  1371. {
  1372. $this->strip = true;
  1373. }
  1374. #line 299 "../smarty/lexer/smarty_internal_templateparser.y"
  1375. function yy_r12()
  1376. {
  1377. $this->strip = false;
  1378. }
  1379. #line 304 "../smarty/lexer/smarty_internal_templateparser.y"
  1380. function yy_r13()
  1381. {
  1382. $this->_retvalue = '';
  1383. }
  1384. #line 308 "../smarty/lexer/smarty_internal_templateparser.y"
  1385. function yy_r14()
  1386. {
  1387. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
  1388. }
  1389. #line 312 "../smarty/lexer/smarty_internal_templateparser.y"
  1390. function yy_r15()
  1391. {
  1392. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
  1393. }
  1394. #line 328 "../smarty/lexer/smarty_internal_templateparser.y"
  1395. function yy_r19()
  1396. {
  1397. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
  1398. }
  1399. #line 334 "../smarty/lexer/smarty_internal_templateparser.y"
  1400. function yy_r20()
  1401. {
  1402. $var =
  1403. trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
  1404. ' $');
  1405. if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
  1406. $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
  1407. array('value' => $this->compiler->compileVariable('\'' .
  1408. $match[ 1 ] .
  1409. '\'')));
  1410. } else {
  1411. $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
  1412. array('value' => $this->compiler->compileVariable('\'' .
  1413. $var .
  1414. '\'')));
  1415. }
  1416. }
  1417. #line 344 "../smarty/lexer/smarty_internal_templateparser.y"
  1418. function yy_r21()
  1419. {
  1420. $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
  1421. array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
  1422. }
  1423. #line 348 "../smarty/lexer/smarty_internal_templateparser.y"
  1424. function yy_r22()
  1425. {
  1426. $this->_retvalue =
  1427. $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
  1428. array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
  1429. }
  1430. #line 371 "../smarty/lexer/smarty_internal_templateparser.y"
  1431. function yy_r27()
  1432. {
  1433. $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[ $this->yyidx +
  1434. 0 ]->minor),
  1435. array('var' => '\'' .
  1436. substr($this->yystack[ $this->yyidx +
  1437. - 2 ]->minor,
  1438. 1) . '\'')));
  1439. }
  1440. #line 379 "../smarty/lexer/smarty_internal_templateparser.y"
  1441. function yy_r29()
  1442. {
  1443. $this->_retvalue = $this->compiler->compileTag('assign',
  1444. array_merge(array(array('value' => $this->yystack[ $this->yyidx +
  1445. - 1 ]->minor),
  1446. array('var' => '\'' .
  1447. substr($this->yystack[ $this->yyidx +
  1448. - 3 ]->minor,
  1449. 1) . '\'')),
  1450. $this->yystack[ $this->yyidx + 0 ]->minor));
  1451. }
  1452. #line 383 "../smarty/lexer/smarty_internal_templateparser.y"
  1453. function yy_r30()
  1454. {
  1455. $this->_retvalue = $this->compiler->compileTag('assign',
  1456. array_merge(array(array('value' => $this->yystack[ $this->yyidx +
  1457. - 1 ]->minor),
  1458. array('var' => $this->yystack[ $this->yyidx +
  1459. - 3 ]->minor[ 'var' ])),
  1460. $this->yystack[ $this->yyidx + 0 ]->minor),
  1461. array('smarty_internal_index' => $this->yystack[ $this->yyidx +
  1462. - 3 ]->minor[ 'smarty_internal_index' ]));
  1463. }
  1464. #line 388 "../smarty/lexer/smarty_internal_templateparser.y"
  1465. function yy_r31()
  1466. {
  1467. $tag =
  1468. trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
  1469. if ($tag == 'strip') {
  1470. $this->strip = true;
  1471. $this->_retvalue = null;;
  1472. } else {
  1473. if (defined($tag)) {
  1474. if ($this->security) {
  1475. $this->security->isTrustedConstant($tag, $this->compiler);
  1476. }
  1477. $this->_retvalue =
  1478. $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
  1479. } else {
  1480. if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
  1481. $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'"));
  1482. } else {
  1483. $this->_retvalue = $this->compiler->compileTag($tag, array());
  1484. }
  1485. }
  1486. }
  1487. }
  1488. #line 410 "../smarty/lexer/smarty_internal_templateparser.y"
  1489. function yy_r32()
  1490. {
  1491. if (defined($this->yystack[ $this->yyidx + - 1 ]->minor)) {
  1492. if ($this->security) {
  1493. $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 1 ]->minor, $this->compiler);
  1494. }
  1495. $this->_retvalue =
  1496. $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
  1497. array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
  1498. } else {
  1499. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor,
  1500. $this->yystack[ $this->yyidx + 0 ]->minor);
  1501. }
  1502. }
  1503. #line 420 "../smarty/lexer/smarty_internal_templateparser.y"
  1504. function yy_r33()
  1505. {
  1506. if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
  1507. if ($this->security) {
  1508. $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
  1509. }
  1510. $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
  1511. array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
  1512. } else {
  1513. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
  1514. }
  1515. }
  1516. #line 433 "../smarty/lexer/smarty_internal_templateparser.y"
  1517. function yy_r34()
  1518. {
  1519. if (defined($this->yystack[ $this->yyidx + - 2 ]->minor)) {
  1520. if ($this->security) {
  1521. $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 2 ]->minor, $this->compiler);
  1522. }
  1523. $this->_retvalue =
  1524. $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
  1525. array('value' => $this->yystack[ $this->yyidx + - 2 ]->minor,
  1526. 'modifierlist' => $this->yystack[ $this->yyidx + - 1 ]->minor));
  1527. } else {
  1528. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor,
  1529. $this->yystack[ $this->yyidx + 0 ]->minor,
  1530. array('modifierlist' => $this->yystack[ $this->yyidx +
  1531. - 1 ]->minor));
  1532. }
  1533. }
  1534. #line 445 "../smarty/lexer/smarty_internal_templateparser.y"
  1535. function yy_r35()
  1536. {
  1537. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor,
  1538. $this->yystack[ $this->yyidx + 0 ]->minor,
  1539. array('object_method' => $this->yystack[ $this->yyidx +
  1540. - 1 ]->minor));
  1541. }
  1542. #line 450 "../smarty/lexer/smarty_internal_templateparser.y"
  1543. function yy_r36()
  1544. {
  1545. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 4 ]->minor,
  1546. $this->yystack[ $this->yyidx + 0 ]->minor,
  1547. array('modifierlist' => $this->yystack[ $this->yyidx +
  1548. - 1 ]->minor,
  1549. 'object_method' => $this->yystack[ $this->yyidx +
  1550. - 2 ]->minor));
  1551. }
  1552. #line 455 "../smarty/lexer/smarty_internal_templateparser.y"
  1553. function yy_r37()
  1554. {
  1555. $this->_retvalue = $this->compiler->compileTag('make_nocache', array(array('var' => '\'' .
  1556. substr($this->yystack[ $this->yyidx +
  1557. 0 ]->minor,
  1558. 1) . '\'')));
  1559. }
  1560. #line 460 "../smarty/lexer/smarty_internal_templateparser.y"
  1561. function yy_r38()
  1562. {
  1563. $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
  1564. $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
  1565. array('if condition' => $this->yystack[ $this->yyidx +
  1566. 0 ]->minor));
  1567. }
  1568. #line 465 "../smarty/lexer/smarty_internal_templateparser.y"
  1569. function yy_r39()
  1570. {
  1571. $tag = trim(substr($this->yystack[ $this->yyidx + - 2 ]->minor, $this->lex->ldel_length));
  1572. $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag,
  1573. $this->yystack[ $this->yyidx + 0 ]->minor,
  1574. array('if condition' => $this->yystack[ $this->yyidx +
  1575. - 1 ]->minor));
  1576. }
  1577. #line 470 "../smarty/lexer/smarty_internal_templateparser.y"
  1578. function yy_r40()
  1579. {
  1580. $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
  1581. $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
  1582. array('if condition' => $this->yystack[ $this->yyidx +
  1583. 0 ]->minor));
  1584. }
  1585. #line 481 "../smarty/lexer/smarty_internal_templateparser.y"
  1586. function yy_r42()
  1587. {
  1588. $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
  1589. array(array('start' => $this->yystack[ $this->yyidx +
  1590. - 6 ]->minor),
  1591. array('ifexp' => $this->yystack[ $this->yyidx +
  1592. - 4 ]->minor),
  1593. array('var' => $this->yystack[ $this->yyidx +
  1594. - 2 ]->minor),
  1595. array('step' => $this->yystack[ $this->yyidx +
  1596. - 1 ]->minor))),
  1597. 1);
  1598. }
  1599. #line 485 "../smarty/lexer/smarty_internal_templateparser.y"
  1600. function yy_r43()
  1601. {
  1602. $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
  1603. }
  1604. #line 493 "../smarty/lexer/smarty_internal_templateparser.y"
  1605. function yy_r45()
  1606. {
  1607. $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
  1608. array(array('start' => $this->yystack[ $this->yyidx +
  1609. - 3 ]->minor),
  1610. array('to' => $this->yystack[ $this->yyidx +
  1611. - 1 ]->minor))),
  1612. 0);
  1613. }
  1614. #line 497 "../smarty/lexer/smarty_internal_templateparser.y"
  1615. function yy_r46()
  1616. {
  1617. $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
  1618. array(array('start' => $this->yystack[ $this->yyidx +
  1619. - 5 ]->minor),
  1620. array('to' => $this->yystack[ $this->yyidx +
  1621. - 3 ]->minor),
  1622. array('step' => $this->yystack[ $this->yyidx +
  1623. - 1 ]->minor))),
  1624. 0);
  1625. }
  1626. #line 502 "../smarty/lexer/smarty_internal_templateparser.y"
  1627. function yy_r47()
  1628. {
  1629. $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
  1630. }
  1631. #line 507 "../smarty/lexer/smarty_internal_templateparser.y"
  1632. function yy_r48()
  1633. {
  1634. $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
  1635. array(array('from' => $this->yystack[ $this->yyidx +
  1636. - 3 ]->minor),
  1637. array('item' => $this->yystack[ $this->yyidx +
  1638. - 1 ]->minor))));
  1639. }
  1640. #line 511 "../smarty/lexer/smarty_internal_templateparser.y"
  1641. function yy_r49()
  1642. {
  1643. $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
  1644. array(array('from' => $this->yystack[ $this->yyidx +
  1645. - 5 ]->minor),
  1646. array('item' => $this->yystack[ $this->yyidx +
  1647. - 1 ]->minor),
  1648. array('key' => $this->yystack[ $this->yyidx +
  1649. - 3 ]->minor))));
  1650. }
  1651. #line 524 "../smarty/lexer/smarty_internal_templateparser.y"
  1652. function yy_r52()
  1653. {
  1654. $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
  1655. array('modifier_list' => array(array_merge(array($this->yystack[ $this->yyidx +
  1656. - 1 ]->minor),
  1657. $this->yystack[ $this->yyidx +
  1658. 0 ]->minor))));
  1659. }
  1660. #line 528 "../smarty/lexer/smarty_internal_templateparser.y"
  1661. function yy_r53()
  1662. {
  1663. $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
  1664. array('modifier_list' => array_merge(array(array_merge(array($this->yystack[ $this->yyidx +
  1665. - 2 ]->minor),
  1666. $this->yystack[ $this->yyidx +
  1667. - 1 ]->minor)),
  1668. $this->yystack[ $this->yyidx +
  1669. 0 ]->minor)));
  1670. }
  1671. #line 533 "../smarty/lexer/smarty_internal_templateparser.y"
  1672. function yy_r54()
  1673. {
  1674. $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
  1675. if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
  1676. // {$smarty.block.child}
  1677. $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
  1678. } else {
  1679. // {$smarty.block.parent}
  1680. $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler);
  1681. }
  1682. }
  1683. #line 546 "../smarty/lexer/smarty_internal_templateparser.y"
  1684. function yy_r55()
  1685. {
  1686. $tag =
  1687. trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
  1688. ' /');
  1689. if ($tag == 'strip') {
  1690. $this->strip = false;
  1691. $this->_retvalue = null;
  1692. } else {
  1693. $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
  1694. }
  1695. }
  1696. #line 555 "../smarty/lexer/smarty_internal_templateparser.y"
  1697. function yy_r56()
  1698. {
  1699. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
  1700. }
  1701. #line 559 "../smarty/lexer/smarty_internal_templateparser.y"
  1702. function yy_r57()
  1703. {
  1704. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor . 'close', array(),
  1705. array('modifier_list' => $this->yystack[ $this->yyidx +
  1706. 0 ]->minor));
  1707. }
  1708. #line 564 "../smarty/lexer/smarty_internal_templateparser.y"
  1709. function yy_r58()
  1710. {
  1711. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor . 'close', array(),
  1712. array('object_method' => $this->yystack[ $this->yyidx +
  1713. 0 ]->minor));
  1714. }
  1715. #line 568 "../smarty/lexer/smarty_internal_templateparser.y"
  1716. function yy_r59()
  1717. {
  1718. $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor . 'close', array(),
  1719. array('object_method' => $this->yystack[ $this->yyidx +
  1720. - 1 ]->minor,
  1721. 'modifier_list' => $this->yystack[ $this->yyidx +
  1722. 0 ]->minor));
  1723. }
  1724. #line 576 "../smarty/lexer/smarty_internal_templateparser.y"
  1725. function yy_r60()
  1726. {
  1727. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
  1728. $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
  1729. }
  1730. #line 582 "../smarty/lexer/smarty_internal_templateparser.y"
  1731. function yy_r61()
  1732. {
  1733. $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
  1734. }
  1735. #line 587 "../smarty/lexer/smarty_internal_templateparser.y"
  1736. function yy_r62()
  1737. {
  1738. $this->_retvalue = array();
  1739. }
  1740. #line 592 "../smarty/lexer/smarty_internal_templateparser.y"
  1741. function yy_r63()
  1742. {
  1743. if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
  1744. if ($this->security) {
  1745. $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
  1746. }
  1747. $this->_retvalue =
  1748. array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
  1749. } else {
  1750. $this->_retvalue =
  1751. array($this->yystack[ $this->yyidx + - 2 ]->minor => '\'' . $this->yystack[ $this->yyidx + 0 ]->minor .
  1752. '\'');
  1753. }
  1754. }
  1755. #line 603 "../smarty/lexer/smarty_internal_templateparser.y"
  1756. function yy_r64()
  1757. {
  1758. $this->_retvalue =
  1759. array(trim($this->yystack[ $this->yyidx + - 1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
  1760. 0 ]->minor);
  1761. }
  1762. #line 611 "../smarty/lexer/smarty_internal_templateparser.y"
  1763. function yy_r66()
  1764. {
  1765. $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
  1766. }
  1767. #line 623 "../smarty/lexer/smarty_internal_templateparser.y"
  1768. function yy_r69()
  1769. {
  1770. $this->_retvalue =
  1771. array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
  1772. }
  1773. #line 636 "../smarty/lexer/smarty_internal_templateparser.y"
  1774. function yy_r71()
  1775. {
  1776. $this->yystack[ $this->yyidx + - 2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
  1777. $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor;
  1778. }
  1779. #line 641 "../smarty/lexer/smarty_internal_templateparser.y"
  1780. function yy_r72()
  1781. {
  1782. $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'',
  1783. 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
  1784. }
  1785. #line 648 "../smarty/lexer/smarty_internal_templateparser.y"
  1786. function yy_r74()
  1787. {
  1788. $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 2 ]->minor,
  1789. 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
  1790. }
  1791. #line 672 "../smarty/lexer/smarty_internal_templateparser.y"
  1792. function yy_r78()
  1793. {
  1794. $this->_retvalue =
  1795. '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '://' .
  1796. $this->yystack[ $this->yyidx + 0 ]->minor . '\')';
  1797. }
  1798. #line 677 "../smarty/lexer/smarty_internal_templateparser.y"
  1799. function yy_r79()
  1800. {
  1801. $this->_retvalue =
  1802. $this->yystack[ $this->yyidx + - 2 ]->minor . trim($this->yystack[ $this->yyidx + - 1 ]->minor) .
  1803. $this->yystack[ $this->yyidx + 0 ]->minor;
  1804. }
  1805. #line 691 "../smarty/lexer/smarty_internal_templateparser.y"
  1806. function yy_r82()
  1807. {
  1808. $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
  1809. array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor,
  1810. 'modifierlist' => $this->yystack[ $this->yyidx +
  1811. 0 ]->minor));
  1812. }
  1813. #line 697 "../smarty/lexer/smarty_internal_templateparser.y"
  1814. function yy_r83()
  1815. {
  1816. $this->_retvalue =
  1817. $this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ] . $this->yystack[ $this->yyidx + - 2 ]->minor .
  1818. $this->yystack[ $this->yyidx + - 1 ]->minor[ 'op' ] . $this->yystack[ $this->yyidx + 0 ]->minor . ')';
  1819. }
  1820. #line 701 "../smarty/lexer/smarty_internal_templateparser.y"
  1821. function yy_r84()
  1822. {
  1823. $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
  1824. $this->yystack[ $this->yyidx + 0 ]->minor;
  1825. }
  1826. #line 705 "../smarty/lexer/smarty_internal_templateparser.y"
  1827. function yy_r85()
  1828. {
  1829. $this->_retvalue =
  1830. $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
  1831. }
  1832. #line 709 "../smarty/lexer/smarty_internal_templateparser.y"
  1833. function yy_r86()
  1834. {
  1835. $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',' .
  1836. $this->yystack[ $this->yyidx + 0 ]->minor . ')';
  1837. }
  1838. #line 713 "../smarty/lexer/smarty_internal_templateparser.y"
  1839. function yy_r87()
  1840. {
  1841. $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',(array)' .
  1842. $this->yystack[ $this->yyidx + 0 ]->minor . ')';
  1843. }
  1844. #line 721 "../smarty/lexer/smarty_internal_templateparser.y"
  1845. function yy_r88()
  1846. {
  1847. $this->_retvalue = $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->compiler->compileVariable('\'' .
  1848. substr($this->yystack[ $this->yyidx +
  1849. - 2 ]->minor,
  1850. 1) .
  1851. '\'') .
  1852. ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor;
  1853. }
  1854. #line 725 "../smarty/lexer/smarty_internal_templateparser.y"
  1855. function yy_r89()
  1856. {
  1857. $this->_retvalue =
  1858. $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + - 2 ]->minor . ' : ' .
  1859. $this->yystack[ $this->yyidx + 0 ]->minor;
  1860. }
  1861. #line 740 "../smarty/lexer/smarty_internal_templateparser.y"
  1862. function yy_r92()
  1863. {
  1864. $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
  1865. }
  1866. #line 761 "../smarty/lexer/smarty_internal_templateparser.y"
  1867. function yy_r97()
  1868. {
  1869. $this->_retvalue =
  1870. $this->yystack[ $this->yyidx + - 2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
  1871. }
  1872. #line 765 "../smarty/lexer/smarty_internal_templateparser.y"
  1873. function yy_r98()
  1874. {
  1875. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . '.';
  1876. }
  1877. #line 769 "../smarty/lexer/smarty_internal_templateparser.y"
  1878. function yy_r99()
  1879. {
  1880. $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
  1881. }
  1882. #line 774 "../smarty/lexer/smarty_internal_templateparser.y"
  1883. function yy_r100()
  1884. {
  1885. if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
  1886. if ($this->security) {
  1887. $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
  1888. }
  1889. $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
  1890. } else {
  1891. $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
  1892. }
  1893. }
  1894. #line 791 "../smarty/lexer/smarty_internal_templateparser.y"
  1895. function yy_r102()
  1896. {
  1897. $this->_retvalue = "(" . $this->yystack[ $this->yyidx + - 1 ]->minor . ")";
  1898. }
  1899. #line 795 "../smarty/lexer/smarty_internal_templateparser.y"
  1900. function yy_r103()
  1901. {
  1902. $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
  1903. $this->yystack[ $this->yyidx + 0 ]->minor;
  1904. }
  1905. #line 813 "../smarty/lexer/smarty_internal_templateparser.y"
  1906. function yy_r107()
  1907. {
  1908. $prefixVar = $this->compiler->getNewPrefixVariable();
  1909. if ($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ] == '\'smarty\'') {
  1910. $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
  1911. $this->compiler->compileTag('private_special_variable', array(),
  1912. $this->yystack[ $this->yyidx +
  1913. - 2 ]->minor[ 'smarty_internal_index' ]) .
  1914. ';?>');
  1915. } else {
  1916. $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
  1917. $this->compiler->compileVariable($this->yystack[ $this->yyidx +
  1918. - 2 ]->minor[ 'var' ]) .
  1919. $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ] .
  1920. ';?>');
  1921. }
  1922. $this->_retvalue = $prefixVar . '::' . $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
  1923. $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
  1924. }
  1925. #line 824 "../smarty/lexer/smarty_internal_templateparser.y"
  1926. function yy_r108()
  1927. {
  1928. $prefixVar = $this->compiler->getNewPrefixVariable();
  1929. $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
  1930. $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php $prefixVar" . '=ob_get_clean();?>'));
  1931. $this->_retvalue = $prefixVar;
  1932. }
  1933. #line 841 "../smarty/lexer/smarty_internal_templateparser.y"
  1934. function yy_r111()
  1935. {
  1936. if (!in_array(strtolower($this->yystack[ $this->yyidx + - 2 ]->minor), array('self', 'parent')) &&
  1937. (!$this->security ||
  1938. $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + - 2 ]->minor,
  1939. $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))
  1940. ) {
  1941. if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ])) {
  1942. $this->_retvalue =
  1943. $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ] . '::' .
  1944. $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
  1945. } else {
  1946. $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . '::' .
  1947. $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
  1948. $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
  1949. }
  1950. } else {
  1951. $this->compiler->trigger_template_error("static class '" . $this->yystack[ $this->yyidx + - 2 ]->minor .
  1952. "' is undefined or not allowed by security setting");
  1953. }
  1954. }
  1955. #line 860 "../smarty/lexer/smarty_internal_templateparser.y"
  1956. function yy_r113()
  1957. {
  1958. $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
  1959. }
  1960. #line 871 "../smarty/lexer/smarty_internal_templateparser.y"
  1961. function yy_r114()
  1962. {
  1963. $this->_retvalue =
  1964. $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
  1965. }
  1966. #line 874 "../smarty/lexer/smarty_internal_templateparser.y"
  1967. function yy_r115()
  1968. {
  1969. if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] == '\'smarty\'') {
  1970. $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
  1971. $this->yystack[ $this->yyidx +
  1972. 0 ]->minor[ 'smarty_internal_index' ]);
  1973. $this->_retvalue = $smarty_var;
  1974. } else {
  1975. // used for array reset,next,prev,end,current
  1976. $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
  1977. $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
  1978. $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
  1979. $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
  1980. }
  1981. }
  1982. #line 887 "../smarty/lexer/smarty_internal_templateparser.y"
  1983. function yy_r116()
  1984. {
  1985. $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + - 2 ]->minor . ']->' .
  1986. $this->yystack[ $this->yyidx + 0 ]->minor;
  1987. }
  1988. #line 897 "../smarty/lexer/smarty_internal_templateparser.y"
  1989. function yy_r118()
  1990. {
  1991. $this->_retvalue =
  1992. $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 1 ]->minor . "'");
  1993. }
  1994. #line 901 "../smarty/lexer/smarty_internal_templateparser.y"
  1995. function yy_r119()
  1996. {
  1997. $this->_retvalue = '(is_array($tmp = ' .
  1998. $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 2 ]->minor .
  1999. "'") . ') ? $tmp' .
  2000. $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)';
  2001. }
  2002. #line 905 "../smarty/lexer/smarty_internal_templateparser.y"
  2003. function yy_r120()
  2004. {
  2005. $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 1 ]->minor);
  2006. }
  2007. #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
  2008. function yy_r121()
  2009. {
  2010. $this->_retvalue =
  2011. '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 2 ]->minor) .
  2012. ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)';
  2013. }
  2014. #line 913 "../smarty/lexer/smarty_internal_templateparser.y"
  2015. function yy_r122()
  2016. {
  2017. $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'',
  2018. 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
  2019. }
  2020. #line 916 "../smarty/lexer/smarty_internal_templateparser.y"
  2021. function yy_r123()
  2022. {
  2023. $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 1 ]->minor,
  2024. 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
  2025. }
  2026. #line 929 "../smarty/lexer/smarty_internal_templateparser.y"
  2027. function yy_r125()
  2028. {
  2029. return;
  2030. }
  2031. #line 935 "../smarty/lexer/smarty_internal_templateparser.y"
  2032. function yy_r126()
  2033. {
  2034. $this->_retvalue =
  2035. '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
  2036. ']';
  2037. }
  2038. #line 938 "../smarty/lexer/smarty_internal_templateparser.y"
  2039. function yy_r127()
  2040. {
  2041. $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
  2042. }
  2043. #line 942 "../smarty/lexer/smarty_internal_templateparser.y"
  2044. function yy_r128()
  2045. {
  2046. $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor) . '->' .
  2047. $this->yystack[ $this->yyidx + 0 ]->minor . ']';
  2048. }
  2049. #line 946 "../smarty/lexer/smarty_internal_templateparser.y"
  2050. function yy_r129()
  2051. {
  2052. $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']";
  2053. }
  2054. #line 950 "../smarty/lexer/smarty_internal_templateparser.y"
  2055. function yy_r130()
  2056. {
  2057. $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
  2058. }
  2059. #line 955 "../smarty/lexer/smarty_internal_templateparser.y"
  2060. function yy_r131()
  2061. {
  2062. $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
  2063. }
  2064. #line 960 "../smarty/lexer/smarty_internal_templateparser.y"
  2065. function yy_r132()
  2066. {
  2067. $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
  2068. $this->yystack[ $this->yyidx +
  2069. - 1 ]->minor .
  2070. '\'][\'index\']') .
  2071. ']';
  2072. }
  2073. #line 964 "../smarty/lexer/smarty_internal_templateparser.y"
  2074. function yy_r133()
  2075. {
  2076. $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
  2077. $this->yystack[ $this->yyidx +
  2078. - 3 ]->minor .
  2079. '\'][\'' .
  2080. $this->yystack[ $this->yyidx +
  2081. - 1 ]->minor .
  2082. '\']') . ']';
  2083. }
  2084. #line 967 "../smarty/lexer/smarty_internal_templateparser.y"
  2085. function yy_r134()
  2086. {
  2087. $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
  2088. }
  2089. #line 973 "../smarty/lexer/smarty_internal_templateparser.y"
  2090. function yy_r136()
  2091. {
  2092. $this->_retvalue = '[' . $this->compiler->compileVariable('\'' .
  2093. substr($this->yystack[ $this->yyidx + - 1 ]->minor,
  2094. 1) . '\'') . ']';;
  2095. }
  2096. #line 989 "../smarty/lexer/smarty_internal_templateparser.y"
  2097. function yy_r140()
  2098. {
  2099. $this->_retvalue = '[]';
  2100. }
  2101. #line 999 "../smarty/lexer/smarty_internal_templateparser.y"
  2102. function yy_r141()
  2103. {
  2104. $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
  2105. }
  2106. #line 1003 "../smarty/lexer/smarty_internal_templateparser.y"
  2107. function yy_r142()
  2108. {
  2109. $this->_retvalue = "''";
  2110. }
  2111. #line 1008 "../smarty/lexer/smarty_internal_templateparser.y"
  2112. function yy_r143()
  2113. {
  2114. $this->_retvalue =
  2115. $this->yystack[ $this->yyidx + - 1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
  2116. }
  2117. #line 1016 "../smarty/lexer/smarty_internal_templateparser.y"
  2118. function yy_r145()
  2119. {
  2120. $var =
  2121. trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
  2122. ' $');
  2123. $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
  2124. }
  2125. #line 1022 "../smarty/lexer/smarty_internal_templateparser.y"
  2126. function yy_r146()
  2127. {
  2128. $this->_retvalue = '(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
  2129. }
  2130. #line 1029 "../smarty/lexer/smarty_internal_templateparser.y"
  2131. function yy_r147()
  2132. {
  2133. if ($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ] == '\'smarty\'') {
  2134. $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
  2135. $this->yystack[ $this->yyidx +
  2136. - 1 ]->minor[ 'smarty_internal_index' ]) .
  2137. $this->yystack[ $this->yyidx + 0 ]->minor;
  2138. } else {
  2139. $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ]) .
  2140. $this->yystack[ $this->yyidx + - 1 ]->minor[ 'smarty_internal_index' ] .
  2141. $this->yystack[ $this->yyidx + 0 ]->minor;
  2142. }
  2143. }
  2144. #line 1038 "../smarty/lexer/smarty_internal_templateparser.y"
  2145. function yy_r148()
  2146. {
  2147. $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
  2148. }
  2149. #line 1043 "../smarty/lexer/smarty_internal_templateparser.y"
  2150. function yy_r149()
  2151. {
  2152. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
  2153. }
  2154. #line 1048 "../smarty/lexer/smarty_internal_templateparser.y"
  2155. function yy_r150()
  2156. {
  2157. if ($this->security && substr($this->yystack[ $this->yyidx + - 1 ]->minor, 0, 1) == '_') {
  2158. $this->compiler->trigger_template_error(self::Err1);
  2159. }
  2160. $this->_retvalue =
  2161. '->' . $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
  2162. }
  2163. #line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
  2164. function yy_r151()
  2165. {
  2166. if ($this->security) {
  2167. $this->compiler->trigger_template_error(self::Err2);
  2168. }
  2169. $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor) .
  2170. $this->yystack[ $this->yyidx + 0 ]->minor . '}';
  2171. }
  2172. #line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
  2173. function yy_r152()
  2174. {
  2175. if ($this->security) {
  2176. $this->compiler->trigger_template_error(self::Err2);
  2177. }
  2178. $this->_retvalue =
  2179. '->{' . $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
  2180. }
  2181. #line 1069 "../smarty/lexer/smarty_internal_templateparser.y"
  2182. function yy_r153()
  2183. {
  2184. if ($this->security) {
  2185. $this->compiler->trigger_template_error(self::Err2);
  2186. }
  2187. $this->_retvalue = '->{\'' . $this->yystack[ $this->yyidx + - 4 ]->minor . '\'.' .
  2188. $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor .
  2189. '}';
  2190. }
  2191. #line 1077 "../smarty/lexer/smarty_internal_templateparser.y"
  2192. function yy_r154()
  2193. {
  2194. $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
  2195. }
  2196. #line 1085 "../smarty/lexer/smarty_internal_templateparser.y"
  2197. function yy_r155()
  2198. {
  2199. if (!$this->security ||
  2200. $this->security->isTrustedPhpFunction($this->yystack[ $this->yyidx + - 3 ]->minor, $this->compiler)
  2201. ) {
  2202. if (strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'isset') === 0 ||
  2203. strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'empty') === 0 ||
  2204. strcasecmp($this->yystack[ $this->yyidx + - 3 ]->minor, 'array') === 0 ||
  2205. is_callable($this->yystack[ $this->yyidx + - 3 ]->minor)
  2206. ) {
  2207. $func_name = strtolower($this->yystack[ $this->yyidx + - 3 ]->minor);
  2208. if ($func_name == 'isset') {
  2209. if (count($this->yystack[ $this->yyidx + - 1 ]->minor) == 0) {
  2210. $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"');
  2211. }
  2212. $par = implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor);
  2213. if (strncasecmp($par, '$_smarty_tpl->smarty->ext->_config->_getConfigVariable',
  2214. strlen('$_smarty_tpl->smarty->ext->_config->_getConfigVariable')) === 0
  2215. ) {
  2216. $prefixVar = $this->compiler->getNewPrefixVariable();
  2217. $this->compiler->appendPrefixCode("<?php $prefixVar" . '=' .
  2218. str_replace(')', ', false)', $par) . ';?>');
  2219. $isset_par = $prefixVar;
  2220. } else {
  2221. $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
  2222. }
  2223. $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" . $isset_par . ")";
  2224. } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
  2225. if (count($this->yystack[ $this->yyidx + - 1 ]->minor) != 1) {
  2226. $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"');
  2227. }
  2228. if ($func_name == 'empty') {
  2229. $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value",
  2230. $this->yystack[ $this->yyidx +
  2231. - 1 ]->minor[ 0 ]) . ')';
  2232. } else {
  2233. $this->_retvalue = $func_name . '(' . $this->yystack[ $this->yyidx + - 1 ]->minor[ 0 ] . ')';
  2234. }
  2235. } else {
  2236. $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
  2237. implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
  2238. }
  2239. } else {
  2240. $this->compiler->trigger_template_error("unknown function \"" .
  2241. $this->yystack[ $this->yyidx + - 3 ]->minor . "\"");
  2242. }
  2243. }
  2244. }
  2245. #line 1124 "../smarty/lexer/smarty_internal_templateparser.y"
  2246. function yy_r156()
  2247. {
  2248. if ($this->security && substr($this->yystack[ $this->yyidx + - 3 ]->minor, 0, 1) == '_') {
  2249. $this->compiler->trigger_template_error(self::Err1);
  2250. }
  2251. $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
  2252. implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
  2253. }
  2254. #line 1131 "../smarty/lexer/smarty_internal_templateparser.y"
  2255. function yy_r157()
  2256. {
  2257. if ($this->security) {
  2258. $this->compiler->trigger_template_error(self::Err2);
  2259. }
  2260. $prefixVar = $this->compiler->getNewPrefixVariable();
  2261. $this->compiler->appendPrefixCode("<?php $prefixVar" . '=' . $this->compiler->compileVariable('\'' .
  2262. substr($this->yystack[ $this->yyidx +
  2263. - 3 ]->minor,
  2264. 1) .
  2265. '\'') . ';?>');
  2266. $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ')';
  2267. }
  2268. #line 1142 "../smarty/lexer/smarty_internal_templateparser.y"
  2269. function yy_r158()
  2270. {
  2271. $this->_retvalue =
  2272. array_merge($this->yystack[ $this->yyidx + - 2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
  2273. }
  2274. #line 1159 "../smarty/lexer/smarty_internal_templateparser.y"
  2275. function yy_r161()
  2276. {
  2277. $this->_retvalue = array_merge($this->yystack[ $this->yyidx + - 2 ]->minor,
  2278. array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor,
  2279. $this->yystack[ $this->yyidx + 0 ]->minor)));
  2280. }
  2281. #line 1163 "../smarty/lexer/smarty_internal_templateparser.y"
  2282. function yy_r162()
  2283. {
  2284. $this->_retvalue =
  2285. array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
  2286. }
  2287. #line 1171 "../smarty/lexer/smarty_internal_templateparser.y"
  2288. function yy_r164()
  2289. {
  2290. $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
  2291. }
  2292. #line 1179 "../smarty/lexer/smarty_internal_templateparser.y"
  2293. function yy_r165()
  2294. {
  2295. $this->_retvalue =
  2296. array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
  2297. }
  2298. #line 1198 "../smarty/lexer/smarty_internal_templateparser.y"
  2299. function yy_r169()
  2300. {
  2301. $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
  2302. }
  2303. #line 1203 "../smarty/lexer/smarty_internal_templateparser.y"
  2304. function yy_r170()
  2305. {
  2306. $this->_retvalue =
  2307. array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
  2308. }
  2309. #line 1208 "../smarty/lexer/smarty_internal_templateparser.y"
  2310. function yy_r171()
  2311. {
  2312. $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
  2313. }
  2314. #line 1213 "../smarty/lexer/smarty_internal_templateparser.y"
  2315. function yy_r172()
  2316. {
  2317. $this->_retvalue =
  2318. array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
  2319. }
  2320. #line 1218 "../smarty/lexer/smarty_internal_templateparser.y"
  2321. function yy_r173()
  2322. {
  2323. $this->_retvalue = array($this->yystack[ $this->yyidx + - 2 ]->minor,
  2324. $this->yystack[ $this->yyidx + - 1 ]->minor .
  2325. $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
  2326. }
  2327. #line 1224 "../smarty/lexer/smarty_internal_templateparser.y"
  2328. function yy_r174()
  2329. {
  2330. $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
  2331. }
  2332. #line 1228 "../smarty/lexer/smarty_internal_templateparser.y"
  2333. function yy_r175()
  2334. {
  2335. static $lops =
  2336. array('eq' => ' == ', 'ne' => ' != ', 'neq' => ' != ', 'gt' => ' > ', 'ge' => ' >= ', 'gte' => ' >= ',
  2337. 'lt' => ' < ', 'le' => ' <= ', 'lte' => ' <= ', 'mod' => ' % ', 'and' => ' && ', 'or' => ' || ',
  2338. 'xor' => ' xor ',);
  2339. $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
  2340. $this->_retvalue = $lops[ $op ];
  2341. }
  2342. #line 1247 "../smarty/lexer/smarty_internal_templateparser.y"
  2343. function yy_r176()
  2344. {
  2345. static $tlops =
  2346. array('isdivby' => array('op' => ' % ', 'pre' => '!('), 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
  2347. 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
  2348. 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
  2349. 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
  2350. 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
  2351. $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
  2352. $this->_retvalue = $tlops[ $op ];
  2353. }
  2354. #line 1260 "../smarty/lexer/smarty_internal_templateparser.y"
  2355. function yy_r177()
  2356. {
  2357. static $scond =
  2358. array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ', 'isnotodd' => '!(1 & ',);
  2359. $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
  2360. $this->_retvalue = $scond[ $op ];
  2361. }
  2362. #line 1274 "../smarty/lexer/smarty_internal_templateparser.y"
  2363. function yy_r178()
  2364. {
  2365. $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
  2366. }
  2367. #line 1282 "../smarty/lexer/smarty_internal_templateparser.y"
  2368. function yy_r180()
  2369. {
  2370. $this->_retvalue =
  2371. $this->yystack[ $this->yyidx + - 2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
  2372. }
  2373. #line 1290 "../smarty/lexer/smarty_internal_templateparser.y"
  2374. function yy_r182()
  2375. {
  2376. $this->_retvalue =
  2377. $this->yystack[ $this->yyidx + - 2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
  2378. }
  2379. #line 1294 "../smarty/lexer/smarty_internal_templateparser.y"
  2380. function yy_r183()
  2381. {
  2382. $this->_retvalue =
  2383. '\'' . $this->yystack[ $this->yyidx + - 2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
  2384. }
  2385. #line 1310 "../smarty/lexer/smarty_internal_templateparser.y"
  2386. function yy_r186()
  2387. {
  2388. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor->to_smarty_php($this);
  2389. }
  2390. #line 1315 "../smarty/lexer/smarty_internal_templateparser.y"
  2391. function yy_r187()
  2392. {
  2393. $this->yystack[ $this->yyidx + - 1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
  2394. $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
  2395. }
  2396. #line 1320 "../smarty/lexer/smarty_internal_templateparser.y"
  2397. function yy_r188()
  2398. {
  2399. $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
  2400. }
  2401. #line 1324 "../smarty/lexer/smarty_internal_templateparser.y"
  2402. function yy_r189()
  2403. {
  2404. $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + - 1 ]->minor);
  2405. }
  2406. #line 1332 "../smarty/lexer/smarty_internal_templateparser.y"
  2407. function yy_r191()
  2408. {
  2409. $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
  2410. substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
  2411. '\']->value');
  2412. }
  2413. #line 1340 "../smarty/lexer/smarty_internal_templateparser.y"
  2414. function yy_r193()
  2415. {
  2416. $this->_retvalue =
  2417. new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')');
  2418. }
  2419. #line 1344 "../smarty/lexer/smarty_internal_templateparser.y"
  2420. function yy_r194()
  2421. {
  2422. $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
  2423. }
  2424. #line 1348 "../smarty/lexer/smarty_internal_templateparser.y"
  2425. function yy_r195()
  2426. {
  2427. $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
  2428. }
  2429. private $_retvalue;
  2430. public function yy_reduce($yyruleno)
  2431. {
  2432. if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
  2433. fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
  2434. self::$yyRuleName[ $yyruleno ]);
  2435. }
  2436. $this->_retvalue = $yy_lefthand_side = null;
  2437. if (isset(self::$yyReduceMap[ $yyruleno ])) {
  2438. // call the action
  2439. $this->_retvalue = null;
  2440. $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
  2441. $yy_lefthand_side = $this->_retvalue;
  2442. }
  2443. $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
  2444. $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
  2445. $this->yyidx -= $yysize;
  2446. for ($i = $yysize; $i; $i --) {
  2447. // pop all of the right-hand side parameters
  2448. array_pop($this->yystack);
  2449. }
  2450. $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
  2451. if ($yyact < self::YYNSTATE) {
  2452. if (!$this->yyTraceFILE && $yysize) {
  2453. $this->yyidx ++;
  2454. $x = new TP_yyStackEntry;
  2455. $x->stateno = $yyact;
  2456. $x->major = $yygoto;
  2457. $x->minor = $yy_lefthand_side;
  2458. $this->yystack[ $this->yyidx ] = $x;
  2459. } else {
  2460. $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
  2461. }
  2462. } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
  2463. $this->yy_accept();
  2464. }
  2465. }
  2466. public function yy_parse_failed()
  2467. {
  2468. if ($this->yyTraceFILE) {
  2469. fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
  2470. }
  2471. while ($this->yyidx >= 0) {
  2472. $this->yy_pop_parser_stack();
  2473. }
  2474. }
  2475. public function yy_syntax_error($yymajor, $TOKEN)
  2476. {
  2477. #line 200 "../smarty/lexer/smarty_internal_templateparser.y"
  2478. $this->internalError = true;
  2479. $this->yymajor = $yymajor;
  2480. $this->compiler->trigger_template_error();
  2481. }
  2482. public function yy_accept()
  2483. {
  2484. if ($this->yyTraceFILE) {
  2485. fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
  2486. }
  2487. while ($this->yyidx >= 0) {
  2488. $this->yy_pop_parser_stack();
  2489. }
  2490. #line 193 "../smarty/lexer/smarty_internal_templateparser.y"
  2491. $this->successful = !$this->internalError;
  2492. $this->internalError = false;
  2493. $this->retvalue = $this->_retvalue;
  2494. }
  2495. public function doParse($yymajor, $yytokenvalue)
  2496. {
  2497. $yyerrorhit = 0; /* True if yymajor has invoked an error */
  2498. if ($this->yyidx === null || $this->yyidx < 0) {
  2499. $this->yyidx = 0;
  2500. $this->yyerrcnt = - 1;
  2501. $x = new TP_yyStackEntry;
  2502. $x->stateno = 0;
  2503. $x->major = 0;
  2504. $this->yystack = array();
  2505. $this->yystack[] = $x;
  2506. }
  2507. $yyendofinput = ($yymajor == 0);
  2508. if ($this->yyTraceFILE) {
  2509. fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
  2510. }
  2511. do {
  2512. $yyact = $this->yy_find_shift_action($yymajor);
  2513. if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
  2514. // force a syntax error
  2515. $yyact = self::YY_ERROR_ACTION;
  2516. }
  2517. if ($yyact < self::YYNSTATE) {
  2518. $this->yy_shift($yyact, $yymajor, $yytokenvalue);
  2519. $this->yyerrcnt --;
  2520. if ($yyendofinput && $this->yyidx >= 0) {
  2521. $yymajor = 0;
  2522. } else {
  2523. $yymajor = self::YYNOCODE;
  2524. }
  2525. } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
  2526. $this->yy_reduce($yyact - self::YYNSTATE);
  2527. } elseif ($yyact == self::YY_ERROR_ACTION) {
  2528. if ($this->yyTraceFILE) {
  2529. fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
  2530. }
  2531. if (self::YYERRORSYMBOL) {
  2532. if ($this->yyerrcnt < 0) {
  2533. $this->yy_syntax_error($yymajor, $yytokenvalue);
  2534. }
  2535. $yymx = $this->yystack[ $this->yyidx ]->major;
  2536. if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
  2537. if ($this->yyTraceFILE) {
  2538. fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
  2539. $this->yyTokenName[ $yymajor ]);
  2540. }
  2541. $this->yy_destructor($yymajor, $yytokenvalue);
  2542. $yymajor = self::YYNOCODE;
  2543. } else {
  2544. while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
  2545. ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
  2546. $this->yy_pop_parser_stack();
  2547. }
  2548. if ($this->yyidx < 0 || $yymajor == 0) {
  2549. $this->yy_destructor($yymajor, $yytokenvalue);
  2550. $this->yy_parse_failed();
  2551. $yymajor = self::YYNOCODE;
  2552. } elseif ($yymx != self::YYERRORSYMBOL) {
  2553. $u2 = 0;
  2554. $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
  2555. }
  2556. }
  2557. $this->yyerrcnt = 3;
  2558. $yyerrorhit = 1;
  2559. } else {
  2560. if ($this->yyerrcnt <= 0) {
  2561. $this->yy_syntax_error($yymajor, $yytokenvalue);
  2562. }
  2563. $this->yyerrcnt = 3;
  2564. $this->yy_destructor($yymajor, $yytokenvalue);
  2565. if ($yyendofinput) {
  2566. $this->yy_parse_failed();
  2567. }
  2568. $yymajor = self::YYNOCODE;
  2569. }
  2570. } else {
  2571. $this->yy_accept();
  2572. $yymajor = self::YYNOCODE;
  2573. }
  2574. }
  2575. while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
  2576. }
  2577. }