[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/sysplugins/ -> smarty_internal_configfileparser.php (source)

   1  <?php
   2  /**
   3  * Smarty Internal Plugin Configfileparser
   4  *
   5  * This is the config file parser.
   6  * It is generated from the internal.configfileparser.y file
   7  * @package Smarty
   8  * @subpackage Compiler
   9  * @author Uwe Tews
  10  */
  11  
  12  class TPC_yyToken implements ArrayAccess
  13  {
  14      public $string = '';
  15      public $metadata = array();
  16  
  17      function __construct($s, $m = array())
  18      {
  19          if ($s instanceof TPC_yyToken) {
  20              $this->string = $s->string;
  21              $this->metadata = $s->metadata;
  22          } else {
  23              $this->string = (string) $s;
  24              if ($m instanceof TPC_yyToken) {
  25                  $this->metadata = $m->metadata;
  26              } elseif (is_array($m)) {
  27                  $this->metadata = $m;
  28              }
  29          }
  30      }
  31  
  32      function __toString()
  33      {
  34          return $this->_string;
  35      }
  36  
  37      function offsetExists($offset)
  38      {
  39          return isset($this->metadata[$offset]);
  40      }
  41  
  42      function offsetGet($offset)
  43      {
  44          return $this->metadata[$offset];
  45      }
  46  
  47      function offsetSet($offset, $value)
  48      {
  49          if ($offset === null) {
  50              if (isset($value[0])) {
  51                  $x = ($value instanceof TPC_yyToken) ?
  52                      $value->metadata : $value;
  53                  $this->metadata = array_merge($this->metadata, $x);
  54                  return;
  55              }
  56              $offset = count($this->metadata);
  57          }
  58          if ($value === null) {
  59              return;
  60          }
  61          if ($value instanceof TPC_yyToken) {
  62              if ($value->metadata) {
  63                  $this->metadata[$offset] = $value->metadata;
  64              }
  65          } elseif ($value) {
  66              $this->metadata[$offset] = $value;
  67          }
  68      }
  69  
  70      function offsetUnset($offset)
  71      {
  72          unset($this->metadata[$offset]);
  73      }
  74  }
  75  
  76  class TPC_yyStackEntry
  77  {
  78      public $stateno;       /* The state-number */
  79      public $major;         /* The major token value.  This is the code
  80                       ** number for the token at this stack level */
  81      public $minor; /* The user-supplied minor token value.  This
  82                       ** is the value of the token  */
  83  };
  84  
  85  
  86  #line 12 "smarty_internal_configfileparser.y"
  87  class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser.php"
  88  {
  89  #line 14 "smarty_internal_configfileparser.y"
  90  
  91      // states whether the parse was successful or not
  92      public $successful = true;
  93      public $retvalue = 0;
  94      private $lex;
  95      private $internalError = false;
  96  
  97      function __construct($lex, $compiler) {
  98          // set instance object
  99          self::instance($this);
 100          $this->lex = $lex;
 101          $this->smarty = $compiler->smarty;
 102          $this->compiler = $compiler;
 103      }
 104      public static function &instance($new_instance = null)
 105      {
 106          static $instance = null;
 107          if (isset($new_instance) && is_object($new_instance))
 108              $instance = $new_instance;
 109          return $instance;
 110      }
 111  
 112      private function parse_bool($str) {
 113          if (in_array(strtolower($str) ,array('on','yes','true'))) {
 114              $res = true;
 115          } else {
 116              $res = false;
 117          }
 118          return $res;
 119      }
 120  
 121      private static $escapes_single = Array('\\' => '\\',
 122                                            '\'' => '\'');
 123      private static function parse_single_quoted_string($qstr) {
 124          $escaped_string = substr($qstr, 1, strlen($qstr)-2); //remove outer quotes
 125  
 126          $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE);
 127  
 128          $str = "";
 129          foreach ($ss as $s) {
 130              if (strlen($s) === 2 && $s[0] === '\\') {
 131                  if (isset(self::$escapes_single[$s[1]])) {
 132                      $s = self::$escapes_single[$s[1]];
 133                  }
 134               }
 135  
 136               $str .= $s;
 137          }
 138  
 139          return $str;
 140      }
 141  
 142      private static function parse_double_quoted_string($qstr) {
 143          $inner_str = substr($qstr, 1, strlen($qstr)-2);
 144          return stripcslashes($inner_str);
 145      }
 146  
 147      private static function parse_tripple_double_quoted_string($qstr) {
 148          return stripcslashes($qstr);
 149      }
 150  
 151      private function set_var(Array $var, Array &$target_array) {
 152          $key = $var["key"];
 153          $value = $var["value"];
 154  
 155          if ($this->smarty->config_overwrite || !isset($target_array['vars'][$key])) {
 156              $target_array['vars'][$key] = $value;
 157          } else {
 158              settype($target_array['vars'][$key], 'array');
 159              $target_array['vars'][$key][] = $value;
 160          }
 161      }
 162  
 163      private function add_global_vars(Array $vars) {
 164          if (!isset($this->compiler->config_data['vars'])) {
 165        $this->compiler->config_data['vars'] = Array();
 166          }
 167          foreach ($vars as $var) {
 168              $this->set_var($var, $this->compiler->config_data);
 169          }
 170      }
 171  
 172      private function add_section_vars($section_name, Array $vars) {
 173          if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
 174              $this->compiler->config_data['sections'][$section_name]['vars'] = Array();
 175          }
 176          foreach ($vars as $var) {
 177              $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
 178          }
 179      }
 180  #line 173 "smarty_internal_configfileparser.php"
 181  
 182      const TPC_OPENB                          =  1;
 183      const TPC_SECTION                        =  2;
 184      const TPC_CLOSEB                         =  3;
 185      const TPC_DOT                            =  4;
 186      const TPC_ID                             =  5;
 187      const TPC_EQUAL                          =  6;
 188      const TPC_FLOAT                          =  7;
 189      const TPC_INT                            =  8;
 190      const TPC_BOOL                           =  9;
 191      const TPC_SINGLE_QUOTED_STRING           = 10;
 192      const TPC_DOUBLE_QUOTED_STRING           = 11;
 193      const TPC_TRIPPLE_QUOTES                 = 12;
 194      const TPC_TRIPPLE_TEXT                   = 13;
 195      const TPC_TRIPPLE_QUOTES_END             = 14;
 196      const TPC_NAKED_STRING                   = 15;
 197      const TPC_OTHER                          = 16;
 198      const TPC_NEWLINE                        = 17;
 199      const TPC_COMMENTSTART                   = 18;
 200      const YY_NO_ACTION = 60;
 201      const YY_ACCEPT_ACTION = 59;
 202      const YY_ERROR_ACTION = 58;
 203  
 204      const YY_SZ_ACTTAB = 38;
 205  static public $yy_action = array(
 206   /*     0 */    29,   30,   34,   33,   24,   13,   19,   25,   35,   21,
 207   /*    10 */    59,    8,    3,    1,   20,   12,   14,   31,   20,   12,
 208   /*    20 */    15,   17,   23,   18,   27,   26,    4,    5,    6,   32,
 209   /*    30 */     2,   11,   28,   22,   16,    9,    7,   10,
 210      );
 211      static public $yy_lookahead = array(
 212   /*     0 */     7,    8,    9,   10,   11,   12,    5,   27,   15,   16,
 213   /*    10 */    20,   21,   23,   23,   17,   18,   13,   14,   17,   18,
 214   /*    20 */    15,    2,   17,    4,   25,   26,    6,    3,    3,   14,
 215   /*    30 */    23,    1,   24,   17,    2,   25,   22,   25,
 216  );
 217      const YY_SHIFT_USE_DFLT = -8;
 218      const YY_SHIFT_MAX = 19;
 219      static public $yy_shift_ofst = array(
 220   /*     0 */    -8,    1,    1,    1,   -7,   -3,   -3,   30,   -8,   -8,
 221   /*    10 */    -8,   19,    5,    3,   15,   16,   24,   25,   32,   20,
 222  );
 223      const YY_REDUCE_USE_DFLT = -21;
 224      const YY_REDUCE_MAX = 10;
 225      static public $yy_reduce_ofst = array(
 226   /*     0 */   -10,   -1,   -1,   -1,  -20,   10,   12,    8,   14,    7,
 227   /*    10 */   -11,
 228  );
 229      static public $yyExpectedTokens = array(
 230          /* 0 */ array(),
 231          /* 1 */ array(5, 17, 18, ),
 232          /* 2 */ array(5, 17, 18, ),
 233          /* 3 */ array(5, 17, 18, ),
 234          /* 4 */ array(7, 8, 9, 10, 11, 12, 15, 16, ),
 235          /* 5 */ array(17, 18, ),
 236          /* 6 */ array(17, 18, ),
 237          /* 7 */ array(1, ),
 238          /* 8 */ array(),
 239          /* 9 */ array(),
 240          /* 10 */ array(),
 241          /* 11 */ array(2, 4, ),
 242          /* 12 */ array(15, 17, ),
 243          /* 13 */ array(13, 14, ),
 244          /* 14 */ array(14, ),
 245          /* 15 */ array(17, ),
 246          /* 16 */ array(3, ),
 247          /* 17 */ array(3, ),
 248          /* 18 */ array(2, ),
 249          /* 19 */ array(6, ),
 250          /* 20 */ array(),
 251          /* 21 */ array(),
 252          /* 22 */ array(),
 253          /* 23 */ array(),
 254          /* 24 */ array(),
 255          /* 25 */ array(),
 256          /* 26 */ array(),
 257          /* 27 */ array(),
 258          /* 28 */ array(),
 259          /* 29 */ array(),
 260          /* 30 */ array(),
 261          /* 31 */ array(),
 262          /* 32 */ array(),
 263          /* 33 */ array(),
 264          /* 34 */ array(),
 265          /* 35 */ array(),
 266  );
 267      static public $yy_default = array(
 268   /*     0 */    44,   37,   41,   40,   58,   58,   58,   36,   39,   44,
 269   /*    10 */    44,   58,   58,   58,   58,   58,   58,   58,   58,   58,
 270   /*    20 */    55,   54,   57,   56,   50,   45,   43,   42,   38,   46,
 271   /*    30 */    47,   52,   51,   49,   48,   53,
 272  );
 273      const YYNOCODE = 29;
 274      const YYSTACKDEPTH = 100;
 275      const YYNSTATE = 36;
 276      const YYNRULE = 22;
 277      const YYERRORSYMBOL = 19;
 278      const YYERRSYMDT = 'yy0';
 279      const YYFALLBACK = 0;
 280      static public $yyFallback = array(
 281      );
 282      static function Trace($TraceFILE, $zTracePrompt)
 283      {
 284          if (!$TraceFILE) {
 285              $zTracePrompt = 0;
 286          } elseif (!$zTracePrompt) {
 287              $TraceFILE = 0;
 288          }
 289          self::$yyTraceFILE = $TraceFILE;
 290          self::$yyTracePrompt = $zTracePrompt;
 291      }
 292  
 293      static function PrintTrace()
 294      {
 295          self::$yyTraceFILE = fopen('php://output', 'w');
 296          self::$yyTracePrompt = '<br>';
 297      }
 298  
 299      static public $yyTraceFILE;
 300      static public $yyTracePrompt;
 301      public $yyidx;                    /* Index of top element in stack */
 302      public $yyerrcnt;                 /* Shifts left before out of the error */
 303      public $yystack = array();  /* The parser's stack */
 304  
 305      public $yyTokenName = array(
 306    '$',             'OPENB',         'SECTION',       'CLOSEB',
 307    'DOT',           'ID',            'EQUAL',         'FLOAT',
 308    'INT',           'BOOL',          'SINGLE_QUOTED_STRING',  'DOUBLE_QUOTED_STRING',
 309    'TRIPPLE_QUOTES',  'TRIPPLE_TEXT',  'TRIPPLE_QUOTES_END',  'NAKED_STRING',
 310    'OTHER',         'NEWLINE',       'COMMENTSTART',  'error',
 311    'start',         'global_vars',   'sections',      'var_list',
 312    'section',       'newline',       'var',           'value',
 313      );
 314  
 315      static public $yyRuleName = array(
 316   /*   0 */ "start ::= global_vars sections",
 317   /*   1 */ "global_vars ::= var_list",
 318   /*   2 */ "sections ::= sections section",
 319   /*   3 */ "sections ::=",
 320   /*   4 */ "section ::= OPENB SECTION CLOSEB newline var_list",
 321   /*   5 */ "section ::= OPENB DOT SECTION CLOSEB newline var_list",
 322   /*   6 */ "var_list ::= var_list newline",
 323   /*   7 */ "var_list ::= var_list var",
 324   /*   8 */ "var_list ::=",
 325   /*   9 */ "var ::= ID EQUAL value",
 326   /*  10 */ "value ::= FLOAT",
 327   /*  11 */ "value ::= INT",
 328   /*  12 */ "value ::= BOOL",
 329   /*  13 */ "value ::= SINGLE_QUOTED_STRING",
 330   /*  14 */ "value ::= DOUBLE_QUOTED_STRING",
 331   /*  15 */ "value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END",
 332   /*  16 */ "value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END",
 333   /*  17 */ "value ::= NAKED_STRING",
 334   /*  18 */ "value ::= OTHER",
 335   /*  19 */ "newline ::= NEWLINE",
 336   /*  20 */ "newline ::= COMMENTSTART NEWLINE",
 337   /*  21 */ "newline ::= COMMENTSTART NAKED_STRING NEWLINE",
 338      );
 339  
 340      function tokenName($tokenType)
 341      {
 342          if ($tokenType === 0) {
 343              return 'End of Input';
 344          }
 345          if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
 346              return $this->yyTokenName[$tokenType];
 347          } else {
 348              return "Unknown";
 349          }
 350      }
 351  
 352      static function yy_destructor($yymajor, $yypminor)
 353      {
 354          switch ($yymajor) {
 355              default:  break;   /* If no destructor action specified: do nothing */
 356          }
 357      }
 358  
 359      function yy_pop_parser_stack()
 360      {
 361          if (!count($this->yystack)) {
 362              return;
 363          }
 364          $yytos = array_pop($this->yystack);
 365          if (self::$yyTraceFILE && $this->yyidx >= 0) {
 366              fwrite(self::$yyTraceFILE,
 367                  self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
 368                      "\n");
 369          }
 370          $yymajor = $yytos->major;
 371          self::yy_destructor($yymajor, $yytos->minor);
 372          $this->yyidx--;
 373          return $yymajor;
 374      }
 375  
 376      function __destruct()
 377      {
 378          while ($this->yystack !== Array()) {
 379              $this->yy_pop_parser_stack();
 380          }
 381          if (is_resource(self::$yyTraceFILE)) {
 382              fclose(self::$yyTraceFILE);
 383          }
 384      }
 385  
 386      function yy_get_expected_tokens($token)
 387      {
 388          $state = $this->yystack[$this->yyidx]->stateno;
 389          $expected = self::$yyExpectedTokens[$state];
 390          if (in_array($token, self::$yyExpectedTokens[$state], true)) {
 391              return $expected;
 392          }
 393          $stack = $this->yystack;
 394          $yyidx = $this->yyidx;
 395          do {
 396              $yyact = $this->yy_find_shift_action($token);
 397              if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
 398                  // reduce action
 399                  $done = 0;
 400                  do {
 401                      if ($done++ == 100) {
 402                          $this->yyidx = $yyidx;
 403                          $this->yystack = $stack;
 404                          // too much recursion prevents proper detection
 405                          // so give up
 406                          return array_unique($expected);
 407                      }
 408                      $yyruleno = $yyact - self::YYNSTATE;
 409                      $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
 410                      $nextstate = $this->yy_find_reduce_action(
 411                          $this->yystack[$this->yyidx]->stateno,
 412                          self::$yyRuleInfo[$yyruleno]['lhs']);
 413                      if (isset(self::$yyExpectedTokens[$nextstate])) {
 414                  $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
 415                              if (in_array($token,
 416                                    self::$yyExpectedTokens[$nextstate], true)) {
 417                              $this->yyidx = $yyidx;
 418                              $this->yystack = $stack;
 419                              return array_unique($expected);
 420                          }
 421                      }
 422                      if ($nextstate < self::YYNSTATE) {
 423                          // we need to shift a non-terminal
 424                          $this->yyidx++;
 425                          $x = new TPC_yyStackEntry;
 426                          $x->stateno = $nextstate;
 427                          $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
 428                          $this->yystack[$this->yyidx] = $x;
 429                          continue 2;
 430                      } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
 431                          $this->yyidx = $yyidx;
 432                          $this->yystack = $stack;
 433                          // the last token was just ignored, we can't accept
 434                          // by ignoring input, this is in essence ignoring a
 435                          // syntax error!
 436                          return array_unique($expected);
 437                      } elseif ($nextstate === self::YY_NO_ACTION) {
 438                          $this->yyidx = $yyidx;
 439                          $this->yystack = $stack;
 440                          // input accepted, but not shifted (I guess)
 441                          return $expected;
 442                      } else {
 443                          $yyact = $nextstate;
 444                      }
 445                  } while (true);
 446              }
 447              break;
 448          } while (true);
 449      $this->yyidx = $yyidx;
 450      $this->yystack = $stack;
 451          return array_unique($expected);
 452      }
 453  
 454      function yy_is_expected_token($token)
 455      {
 456          if ($token === 0) {
 457              return true; // 0 is not part of this
 458          }
 459          $state = $this->yystack[$this->yyidx]->stateno;
 460          if (in_array($token, self::$yyExpectedTokens[$state], true)) {
 461              return true;
 462          }
 463          $stack = $this->yystack;
 464          $yyidx = $this->yyidx;
 465          do {
 466              $yyact = $this->yy_find_shift_action($token);
 467              if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
 468                  // reduce action
 469                  $done = 0;
 470                  do {
 471                      if ($done++ == 100) {
 472                          $this->yyidx = $yyidx;
 473                          $this->yystack = $stack;
 474                          // too much recursion prevents proper detection
 475                          // so give up
 476                          return true;
 477                      }
 478                      $yyruleno = $yyact - self::YYNSTATE;
 479                      $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
 480                      $nextstate = $this->yy_find_reduce_action(
 481                          $this->yystack[$this->yyidx]->stateno,
 482                          self::$yyRuleInfo[$yyruleno]['lhs']);
 483                      if (isset(self::$yyExpectedTokens[$nextstate]) &&
 484                            in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
 485                          $this->yyidx = $yyidx;
 486                          $this->yystack = $stack;
 487                          return true;
 488                      }
 489                      if ($nextstate < self::YYNSTATE) {
 490                          // we need to shift a non-terminal
 491                          $this->yyidx++;
 492                          $x = new TPC_yyStackEntry;
 493                          $x->stateno = $nextstate;
 494                          $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
 495                          $this->yystack[$this->yyidx] = $x;
 496                          continue 2;
 497                      } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
 498                          $this->yyidx = $yyidx;
 499                          $this->yystack = $stack;
 500                          if (!$token) {
 501                              // end of input: this is valid
 502                              return true;
 503                          }
 504                          // the last token was just ignored, we can't accept
 505                          // by ignoring input, this is in essence ignoring a
 506                          // syntax error!
 507                          return false;
 508                      } elseif ($nextstate === self::YY_NO_ACTION) {
 509                          $this->yyidx = $yyidx;
 510                          $this->yystack = $stack;
 511                          // input accepted, but not shifted (I guess)
 512                          return true;
 513                      } else {
 514                          $yyact = $nextstate;
 515                      }
 516                  } while (true);
 517              }
 518              break;
 519          } while (true);
 520          $this->yyidx = $yyidx;
 521          $this->yystack = $stack;
 522          return true;
 523      }
 524  
 525     function yy_find_shift_action($iLookAhead)
 526      {
 527          $stateno = $this->yystack[$this->yyidx]->stateno;
 528  
 529          /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
 530          if (!isset(self::$yy_shift_ofst[$stateno])) {
 531              // no shift actions
 532              return self::$yy_default[$stateno];
 533          }
 534          $i = self::$yy_shift_ofst[$stateno];
 535          if ($i === self::YY_SHIFT_USE_DFLT) {
 536              return self::$yy_default[$stateno];
 537          }
 538          if ($iLookAhead == self::YYNOCODE) {
 539              return self::YY_NO_ACTION;
 540          }
 541          $i += $iLookAhead;
 542          if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
 543                self::$yy_lookahead[$i] != $iLookAhead) {
 544              if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
 545                     && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
 546                  if (self::$yyTraceFILE) {
 547                      fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
 548                          $this->yyTokenName[$iLookAhead] . " => " .
 549                          $this->yyTokenName[$iFallback] . "\n");
 550                  }
 551                  return $this->yy_find_shift_action($iFallback);
 552              }
 553              return self::$yy_default[$stateno];
 554          } else {
 555              return self::$yy_action[$i];
 556          }
 557      }
 558  
 559      function yy_find_reduce_action($stateno, $iLookAhead)
 560      {
 561          /* $stateno = $this->yystack[$this->yyidx]->stateno; */
 562  
 563          if (!isset(self::$yy_reduce_ofst[$stateno])) {
 564              return self::$yy_default[$stateno];
 565          }
 566          $i = self::$yy_reduce_ofst[$stateno];
 567          if ($i == self::YY_REDUCE_USE_DFLT) {
 568              return self::$yy_default[$stateno];
 569          }
 570          if ($iLookAhead == self::YYNOCODE) {
 571              return self::YY_NO_ACTION;
 572          }
 573          $i += $iLookAhead;
 574          if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
 575                self::$yy_lookahead[$i] != $iLookAhead) {
 576              return self::$yy_default[$stateno];
 577          } else {
 578              return self::$yy_action[$i];
 579          }
 580      }
 581  
 582      function yy_shift($yyNewState, $yyMajor, $yypMinor)
 583      {
 584          $this->yyidx++;
 585          if ($this->yyidx >= self::YYSTACKDEPTH) {
 586              $this->yyidx--;
 587              if (self::$yyTraceFILE) {
 588                  fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
 589              }
 590              while ($this->yyidx >= 0) {
 591                  $this->yy_pop_parser_stack();
 592              }
 593  #line 125 "smarty_internal_configfileparser.y"
 594  
 595      $this->internalError = true;
 596      $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
 597  #line 593 "smarty_internal_configfileparser.php"
 598              return;
 599          }
 600          $yytos = new TPC_yyStackEntry;
 601          $yytos->stateno = $yyNewState;
 602          $yytos->major = $yyMajor;
 603          $yytos->minor = $yypMinor;
 604          array_push($this->yystack, $yytos);
 605          if (self::$yyTraceFILE && $this->yyidx > 0) {
 606              fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
 607                  $yyNewState);
 608              fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
 609              for($i = 1; $i <= $this->yyidx; $i++) {
 610                  fprintf(self::$yyTraceFILE, " %s",
 611                      $this->yyTokenName[$this->yystack[$i]->major]);
 612              }
 613              fwrite(self::$yyTraceFILE,"\n");
 614          }
 615      }
 616  
 617      static public $yyRuleInfo = array(
 618    array( 'lhs' => 20, 'rhs' => 2 ),
 619    array( 'lhs' => 21, 'rhs' => 1 ),
 620    array( 'lhs' => 22, 'rhs' => 2 ),
 621    array( 'lhs' => 22, 'rhs' => 0 ),
 622    array( 'lhs' => 24, 'rhs' => 5 ),
 623    array( 'lhs' => 24, 'rhs' => 6 ),
 624    array( 'lhs' => 23, 'rhs' => 2 ),
 625    array( 'lhs' => 23, 'rhs' => 2 ),
 626    array( 'lhs' => 23, 'rhs' => 0 ),
 627    array( 'lhs' => 26, 'rhs' => 3 ),
 628    array( 'lhs' => 27, 'rhs' => 1 ),
 629    array( 'lhs' => 27, 'rhs' => 1 ),
 630    array( 'lhs' => 27, 'rhs' => 1 ),
 631    array( 'lhs' => 27, 'rhs' => 1 ),
 632    array( 'lhs' => 27, 'rhs' => 1 ),
 633    array( 'lhs' => 27, 'rhs' => 3 ),
 634    array( 'lhs' => 27, 'rhs' => 2 ),
 635    array( 'lhs' => 27, 'rhs' => 1 ),
 636    array( 'lhs' => 27, 'rhs' => 1 ),
 637    array( 'lhs' => 25, 'rhs' => 1 ),
 638    array( 'lhs' => 25, 'rhs' => 2 ),
 639    array( 'lhs' => 25, 'rhs' => 3 ),
 640      );
 641  
 642      static public $yyReduceMap = array(
 643          0 => 0,
 644          2 => 0,
 645          3 => 0,
 646          19 => 0,
 647          20 => 0,
 648          21 => 0,
 649          1 => 1,
 650          4 => 4,
 651          5 => 5,
 652          6 => 6,
 653          7 => 7,
 654          8 => 8,
 655          9 => 9,
 656          10 => 10,
 657          11 => 11,
 658          12 => 12,
 659          13 => 13,
 660          14 => 14,
 661          15 => 15,
 662          16 => 16,
 663          17 => 17,
 664          18 => 17,
 665      );
 666  #line 131 "smarty_internal_configfileparser.y"
 667      function yy_r0(){
 668      $this->_retvalue = null;
 669      }
 670  #line 666 "smarty_internal_configfileparser.php"
 671  #line 136 "smarty_internal_configfileparser.y"
 672      function yy_r1(){
 673      $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null;
 674      }
 675  #line 671 "smarty_internal_configfileparser.php"
 676  #line 149 "smarty_internal_configfileparser.y"
 677      function yy_r4(){
 678      $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
 679      $this->_retvalue = null;
 680      }
 681  #line 677 "smarty_internal_configfileparser.php"
 682  #line 154 "smarty_internal_configfileparser.y"
 683      function yy_r5(){
 684      if ($this->smarty->config_read_hidden) {
 685          $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
 686      }
 687      $this->_retvalue = null;
 688      }
 689  #line 685 "smarty_internal_configfileparser.php"
 690  #line 162 "smarty_internal_configfileparser.y"
 691      function yy_r6(){
 692      $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
 693      }
 694  #line 690 "smarty_internal_configfileparser.php"
 695  #line 166 "smarty_internal_configfileparser.y"
 696      function yy_r7(){
 697      $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));
 698      }
 699  #line 695 "smarty_internal_configfileparser.php"
 700  #line 170 "smarty_internal_configfileparser.y"
 701      function yy_r8(){
 702      $this->_retvalue = Array();
 703      }
 704  #line 700 "smarty_internal_configfileparser.php"
 705  #line 176 "smarty_internal_configfileparser.y"
 706      function yy_r9(){
 707      $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor);
 708      }
 709  #line 705 "smarty_internal_configfileparser.php"
 710  #line 181 "smarty_internal_configfileparser.y"
 711      function yy_r10(){
 712      $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
 713      }
 714  #line 710 "smarty_internal_configfileparser.php"
 715  #line 185 "smarty_internal_configfileparser.y"
 716      function yy_r11(){
 717      $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
 718      }
 719  #line 715 "smarty_internal_configfileparser.php"
 720  #line 189 "smarty_internal_configfileparser.y"
 721      function yy_r12(){
 722      $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
 723      }
 724  #line 720 "smarty_internal_configfileparser.php"
 725  #line 193 "smarty_internal_configfileparser.y"
 726      function yy_r13(){
 727      $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
 728      }
 729  #line 725 "smarty_internal_configfileparser.php"
 730  #line 197 "smarty_internal_configfileparser.y"
 731      function yy_r14(){
 732      $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
 733      }
 734  #line 730 "smarty_internal_configfileparser.php"
 735  #line 201 "smarty_internal_configfileparser.y"
 736      function yy_r15(){
 737      $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + -1]->minor);
 738      }
 739  #line 735 "smarty_internal_configfileparser.php"
 740  #line 205 "smarty_internal_configfileparser.y"
 741      function yy_r16(){
 742      $this->_retvalue = '';
 743      }
 744  #line 740 "smarty_internal_configfileparser.php"
 745  #line 209 "smarty_internal_configfileparser.y"
 746      function yy_r17(){
 747      $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
 748      }
 749  #line 745 "smarty_internal_configfileparser.php"
 750  
 751      private $_retvalue;
 752  
 753      function yy_reduce($yyruleno)
 754      {
 755          $yymsp = $this->yystack[$this->yyidx];
 756          if (self::$yyTraceFILE && $yyruleno >= 0
 757                && $yyruleno < count(self::$yyRuleName)) {
 758              fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
 759                  self::$yyTracePrompt, $yyruleno,
 760                  self::$yyRuleName[$yyruleno]);
 761          }
 762  
 763          $this->_retvalue = $yy_lefthand_side = null;
 764          if (array_key_exists($yyruleno, self::$yyReduceMap)) {
 765              // call the action
 766              $this->_retvalue = null;
 767              $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
 768              $yy_lefthand_side = $this->_retvalue;
 769          }
 770          $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
 771          $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
 772          $this->yyidx -= $yysize;
 773          for($i = $yysize; $i; $i--) {
 774              // pop all of the right-hand side parameters
 775              array_pop($this->yystack);
 776          }
 777          $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
 778          if ($yyact < self::YYNSTATE) {
 779              if (!self::$yyTraceFILE && $yysize) {
 780                  $this->yyidx++;
 781                  $x = new TPC_yyStackEntry;
 782                  $x->stateno = $yyact;
 783                  $x->major = $yygoto;
 784                  $x->minor = $yy_lefthand_side;
 785                  $this->yystack[$this->yyidx] = $x;
 786              } else {
 787                  $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
 788              }
 789          } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
 790              $this->yy_accept();
 791          }
 792      }
 793  
 794      function yy_parse_failed()
 795      {
 796          if (self::$yyTraceFILE) {
 797              fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
 798          }
 799          while ($this->yyidx >= 0) {
 800              $this->yy_pop_parser_stack();
 801          }
 802      }
 803  
 804      function yy_syntax_error($yymajor, $TOKEN)
 805      {
 806  #line 118 "smarty_internal_configfileparser.y"
 807  
 808      $this->internalError = true;
 809      $this->yymajor = $yymajor;
 810      $this->compiler->trigger_config_file_error();
 811  #line 808 "smarty_internal_configfileparser.php"
 812      }
 813  
 814      function yy_accept()
 815      {
 816          if (self::$yyTraceFILE) {
 817              fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
 818          }
 819          while ($this->yyidx >= 0) {
 820              $stack = $this->yy_pop_parser_stack();
 821          }
 822  #line 110 "smarty_internal_configfileparser.y"
 823  
 824      $this->successful = !$this->internalError;
 825      $this->internalError = false;
 826      $this->retvalue = $this->_retvalue;
 827      //echo $this->retvalue."\n\n";
 828  #line 826 "smarty_internal_configfileparser.php"
 829      }
 830  
 831      function doParse($yymajor, $yytokenvalue)
 832      {
 833          $yyerrorhit = 0;   /* True if yymajor has invoked an error */
 834  
 835          if ($this->yyidx === null || $this->yyidx < 0) {
 836              $this->yyidx = 0;
 837              $this->yyerrcnt = -1;
 838              $x = new TPC_yyStackEntry;
 839              $x->stateno = 0;
 840              $x->major = 0;
 841              $this->yystack = array();
 842              array_push($this->yystack, $x);
 843          }
 844          $yyendofinput = ($yymajor==0);
 845  
 846          if (self::$yyTraceFILE) {
 847              fprintf(self::$yyTraceFILE, "%sInput %s\n",
 848                  self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
 849          }
 850  
 851          do {
 852              $yyact = $this->yy_find_shift_action($yymajor);
 853              if ($yymajor < self::YYERRORSYMBOL &&
 854                    !$this->yy_is_expected_token($yymajor)) {
 855                  // force a syntax error
 856                  $yyact = self::YY_ERROR_ACTION;
 857              }
 858              if ($yyact < self::YYNSTATE) {
 859                  $this->yy_shift($yyact, $yymajor, $yytokenvalue);
 860                  $this->yyerrcnt--;
 861                  if ($yyendofinput && $this->yyidx >= 0) {
 862                      $yymajor = 0;
 863                  } else {
 864                      $yymajor = self::YYNOCODE;
 865                  }
 866              } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
 867                  $this->yy_reduce($yyact - self::YYNSTATE);
 868              } elseif ($yyact == self::YY_ERROR_ACTION) {
 869                  if (self::$yyTraceFILE) {
 870                      fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
 871                          self::$yyTracePrompt);
 872                  }
 873                  if (self::YYERRORSYMBOL) {
 874                      if ($this->yyerrcnt < 0) {
 875                          $this->yy_syntax_error($yymajor, $yytokenvalue);
 876                      }
 877                      $yymx = $this->yystack[$this->yyidx]->major;
 878                      if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
 879                          if (self::$yyTraceFILE) {
 880                              fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
 881                                  self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
 882                          }
 883                          $this->yy_destructor($yymajor, $yytokenvalue);
 884                          $yymajor = self::YYNOCODE;
 885                      } else {
 886                          while ($this->yyidx >= 0 &&
 887                                   $yymx != self::YYERRORSYMBOL &&
 888          ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
 889                                ){
 890                              $this->yy_pop_parser_stack();
 891                          }
 892                          if ($this->yyidx < 0 || $yymajor==0) {
 893                              $this->yy_destructor($yymajor, $yytokenvalue);
 894                              $this->yy_parse_failed();
 895                              $yymajor = self::YYNOCODE;
 896                          } elseif ($yymx != self::YYERRORSYMBOL) {
 897                              $u2 = 0;
 898                              $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
 899                          }
 900                      }
 901                      $this->yyerrcnt = 3;
 902                      $yyerrorhit = 1;
 903                  } else {
 904                      if ($this->yyerrcnt <= 0) {
 905                          $this->yy_syntax_error($yymajor, $yytokenvalue);
 906                      }
 907                      $this->yyerrcnt = 3;
 908                      $this->yy_destructor($yymajor, $yytokenvalue);
 909                      if ($yyendofinput) {
 910                          $this->yy_parse_failed();
 911                      }
 912                      $yymajor = self::YYNOCODE;
 913                  }
 914              } else {
 915                  $this->yy_accept();
 916                  $yymajor = self::YYNOCODE;
 917              }
 918          } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
 919      }
 920  }
 921  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1