| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 
							- <?php
 
- /**
 
-  * Smarty Internal Plugin Smarty Template Compiler Base
 
-  *
 
-  * This file contains the basic classes and methodes for compiling Smarty templates with lexer/parser
 
-  *
 
-  * @package Smarty
 
-  * @subpackage Compiler
 
-  * @author Uwe Tews
 
-  */
 
- /**
 
-  * @ignore
 
-  */
 
- include ("smarty_internal_parsetree.php");
 
- /**
 
-  * Class SmartyTemplateCompiler
 
-  *
 
-  * @package Smarty
 
-  * @subpackage Compiler
 
-  */
 
- class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase {
 
-     /**
 
-      * Lexer class name
 
-      *
 
-      * @var string
 
-      */
 
-     public $lexer_class;
 
-     /**
 
-      * Parser class name
 
-      *
 
-      * @var string
 
-      */
 
-     public $parser_class;
 
-     /**
 
-      * Lexer object
 
-      *
 
-      * @var object
 
-      */
 
-     public $lex;
 
-     /**
 
-      * Parser object
 
-      *
 
-      * @var object
 
-      */
 
-     public $parser;
 
-     /**
 
-      * Smarty object
 
-      *
 
-      * @var object
 
-      */
 
-     public $smarty;
 
-     /**
 
-      * array of vars which can be compiled in local scope
 
-      *
 
-      * @var array
 
-      */
 
-     public $local_var = array();
 
-     /**
 
-      * Initialize compiler
 
-      *
 
-      * @param string $lexer_class  class name
 
-      * @param string $parser_class class name
 
-      * @param Smarty $smarty       global instance
 
-      */
 
-     public function __construct($lexer_class, $parser_class, $smarty)
 
-     {
 
-         $this->smarty = $smarty;
 
-         parent::__construct();
 
-         // get required plugins
 
-         $this->lexer_class = $lexer_class;
 
-         $this->parser_class = $parser_class;
 
-     }
 
-     /**
 
-      * Methode to compile a Smarty template
 
-      *
 
-      * @param  mixed $_content template source
 
-      * @return bool true if compiling succeeded, false if it failed
 
-      */
 
-     protected function doCompile($_content)
 
-     {
 
-         /* here is where the compiling takes place. Smarty
 
-           tags in the templates are replaces with PHP code,
 
-           then written to compiled files. */
 
-         // init the lexer/parser to compile the template
 
-         $this->lex = new $this->lexer_class($_content, $this);
 
-         $this->parser = new $this->parser_class($this->lex, $this);
 
-         if ($this->smarty->_parserdebug)
 
-             $this->parser->PrintTrace();
 
-         // get tokens from lexer and parse them
 
-         while ($this->lex->yylex() && !$this->abort_and_recompile) {
 
-             if ($this->smarty->_parserdebug) {
 
-                 echo "<pre>Line {$this->lex->line} Parsing  {$this->parser->yyTokenName[$this->lex->token]} Token " .
 
-                     htmlentities($this->lex->value) . "</pre>";
 
-             }
 
-             $this->parser->doParse($this->lex->token, $this->lex->value);
 
-         }
 
-         if ($this->abort_and_recompile) {
 
-             // exit here on abort
 
-             return false;
 
-         }
 
-         // finish parsing process
 
-         $this->parser->doParse(0, 0);
 
-         // check for unclosed tags
 
-         if (count($this->_tag_stack) > 0) {
 
-             // get stacked info
 
-             list($openTag, $_data) = array_pop($this->_tag_stack);
 
-             $this->trigger_template_error("unclosed {" . $openTag . "} tag");
 
-         }
 
-         // return compiled code
 
-         // return str_replace(array("? >\n<?php","? ><?php"), array('',''), $this->parser->retvalue);
 
-         return $this->parser->retvalue;
 
-     }
 
- }
 
- ?>
 
 
  |