Вход Регистрация
Файл: library/XenForo/Template/Compiler/Lexer.php
Строк: 1684
<?php

class XenForo_Template_Compiler_Lexer
{
    private 
$_input;
    private 
$_counter 0;
    public 
$token;
    public 
$value;
    public 
$line 1;

    public 
$match;

    public function 
__construct($input)
    {
        
$this->_input $input;
    }

    protected function 
_addMatch($token$info '')
    {
        
$this->match = array($token$info);
    }


    private 
$_yy_state 1;
    private 
$_yy_stack = array();

    function 
yylex()
    {
        return 
$this->{'yylex' $this->_yy_state}();
    }

    function 
yypushstate($state)
    {
        
array_push($this->_yy_stack$this->_yy_state);
        
$this->_yy_state $state;
    }

    function 
yypopstate()
    {
        
$this->_yy_state array_pop($this->_yy_stack);
    }

    function 
yybegin($state)
    {
        
$this->_yy_state $state;
    }



    function 
yylex1()
    {
        
$tokenMap = array (
              
=> 0,
              
=> 0,
              
=> 0,
              
=> 1,
              
=> 0,
              
=> 0,
              
=> 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return 
false// end of input
        
}
        
$yy_global_pattern "/^(\{\$)|^(\{xen:)|^(<xen:)|^(</xen:([a-zA-Z0-9_]+)>)|^([^{<]+)|^(\{)|^(<)/";

        do {
            if (
preg_match($yy_global_patternsubstr($this->_input$this->_counter), $yymatches)) {
                
$yysubmatches $yymatches;
                
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                
if (!count($yymatches)) {
                    throw new 
Exception('Error: lexing failed because a rule matched' .
                        
'an empty string.  Input "' substr($this->_input,
                        
$this->_counter5) . '... state START');
                }
                
next($yymatches); // skip global match
                
$this->token key($yymatches); // token number
                
if ($tokenMap[$this->token]) {
                    
// extract sub-patterns for passing to lex function
                    
$yysubmatches array_slice($yysubmatches$this->token 1,
                        
$tokenMap[$this->token]);
                } else {
                    
$yysubmatches = array();
                }
                
$this->value current($yymatches); // token value
                
$r $this->{'yy_r1_' $this->token}($yysubmatches);
                if (
$r === null) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    
// accept this token
                    
return true;
                } elseif (
$r === true) {
                    
// we have changed state
                    // process this token in the new state
                    
return $this->yylex();
                } elseif (
$r === false) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    if (
$this->_counter >= strlen($this->_input)) {
                        return 
false// end of input
                    
}
                    
// skip this token
                    
continue;
                } else {                    
$yy_yymore_patterns = array(
        
=> array(0"^(\{xen:)|^(<xen:)|^(</xen:([a-zA-Z0-9_]+)>)|^([^{<]+)|^(\{)|^(<)"),
        
=> array(0"^(<xen:)|^(</xen:([a-zA-Z0-9_]+)>)|^([^{<]+)|^(\{)|^(<)"),
        
=> array(0"^(</xen:([a-zA-Z0-9_]+)>)|^([^{<]+)|^(\{)|^(<)"),
        
=> array(1"^([^{<]+)|^(\{)|^(<)"),
        
=> array(1"^(\{)|^(<)"),
        
=> array(1"^(<)"),
        
=> array(1""),
    );

                    
// yymore is needed
                    
do {
                        if (!
strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new 
Exception('cannot do yymore for the last token');
                        }
                        
$yysubmatches = array();
                        if (
preg_match('/' $yy_yymore_patterns[$this->token][1] . '/',
                              
substr($this->_input$this->_counter), $yymatches)) {
                            
$yysubmatches $yymatches;
                            
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                            
next($yymatches); // skip global match
                            
$this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            
$this->value current($yymatches); // token value
                            
$this->line substr_count($this->value"n");
                            if (
$tokenMap[$this->token]) {
                                
// extract sub-patterns for passing to lex function
                                
$yysubmatches array_slice($yysubmatches$this->token 1,
                                    
$tokenMap[$this->token]);
                            } else {
                                
$yysubmatches = array();
                            }
                        }
                        
$r $this->{'yy_r1_' $this->token}($yysubmatches);
                    } while (
$r !== null && !is_bool($r));
                    if (
$r === true) {
                        
// we have changed state
                        // process this token in the new state
                        
return $this->yylex();
                    } elseif (
$r === false) {
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        if (
$this->_counter >= strlen($this->_input)) {
                            return 
false// end of input
                        
}
                        
// skip this token
                        
continue;
                    } else {
                        
// accept
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        return 
true;
                    }
                }
            } else {
                throw new 
Exception('Unexpected input at line' $this->line .
                    
': ' $this->_input[$this->_counter]);
            }
            break;
        } while (
true);

    } 
// end function


    
const START 1;
    function 
yy_r1_1($yy_subpatterns)
    {

    
$this->yypushstate(self::CURLY_START);
    return 
true;
    }
    function 
yy_r1_2($yy_subpatterns)
    {

    
$this->yypushstate(self::CURLY_START);
    return 
true;
    }
    function 
yy_r1_3($yy_subpatterns)
    {

    
$this->yypushstate(self::TAG_OPEN);
    return 
true;
    }
    function 
yy_r1_4($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::TAG_CLOSE$yy_subpatterns[0]);
    }
    function 
yy_r1_6($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::PLAIN_TEXT$this->value);
    }
    function 
yy_r1_7($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::PLAIN_TEXT$this->value);
    }
    function 
yy_r1_8($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::PLAIN_TEXT$this->value);
    }



    function 
yylex2()
    {
        
$tokenMap = array (
              
=> 1,
              
=> 1,
              
=> 1,
              
=> 0,
              
=> 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return 
false// end of input
        
}
        
$yy_global_pattern "/^(<xen:comment>([sS]*?)</xen:comment>)|^(<xen:untreated>([sS]*?)</xen:untreated>)|^(<xen:([a-zA-Z0-9_]+))|^(>)|^(/>)/";

        do {
            if (
preg_match($yy_global_patternsubstr($this->_input$this->_counter), $yymatches)) {
                
$yysubmatches $yymatches;
                
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                
if (!count($yymatches)) {
                    throw new 
Exception('Error: lexing failed because a rule matched' .
                        
'an empty string.  Input "' substr($this->_input,
                        
$this->_counter5) . '... state TAG_OPEN');
                }
                
next($yymatches); // skip global match
                
$this->token key($yymatches); // token number
                
if ($tokenMap[$this->token]) {
                    
// extract sub-patterns for passing to lex function
                    
$yysubmatches array_slice($yysubmatches$this->token 1,
                        
$tokenMap[$this->token]);
                } else {
                    
$yysubmatches = array();
                }
                
$this->value current($yymatches); // token value
                
$r $this->{'yy_r2_' $this->token}($yysubmatches);
                if (
$r === null) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    
// accept this token
                    
return true;
                } elseif (
$r === true) {
                    
// we have changed state
                    // process this token in the new state
                    
return $this->yylex();
                } elseif (
$r === false) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    if (
$this->_counter >= strlen($this->_input)) {
                        return 
false// end of input
                    
}
                    
// skip this token
                    
continue;
                } else {                    
$yy_yymore_patterns = array(
        
=> array(0"^(<xen:untreated>([sS]*?)</xen:untreated>)|^(<xen:([a-zA-Z0-9_]+))|^(>)|^(/>)"),
        
=> array(1"^(<xen:([a-zA-Z0-9_]+))|^(>)|^(/>)"),
        
=> array(2"^(>)|^(/>)"),
        
=> array(2"^(/>)"),
        
=> array(2""),
    );

                    
// yymore is needed
                    
do {
                        if (!
strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new 
Exception('cannot do yymore for the last token');
                        }
                        
$yysubmatches = array();
                        if (
preg_match('/' $yy_yymore_patterns[$this->token][1] . '/',
                              
substr($this->_input$this->_counter), $yymatches)) {
                            
$yysubmatches $yymatches;
                            
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                            
next($yymatches); // skip global match
                            
$this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            
$this->value current($yymatches); // token value
                            
$this->line substr_count($this->value"n");
                            if (
$tokenMap[$this->token]) {
                                
// extract sub-patterns for passing to lex function
                                
$yysubmatches array_slice($yysubmatches$this->token 1,
                                    
$tokenMap[$this->token]);
                            } else {
                                
$yysubmatches = array();
                            }
                        }
                        
$r $this->{'yy_r2_' $this->token}($yysubmatches);
                    } while (
$r !== null && !is_bool($r));
                    if (
$r === true) {
                        
// we have changed state
                        // process this token in the new state
                        
return $this->yylex();
                    } elseif (
$r === false) {
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        if (
$this->_counter >= strlen($this->_input)) {
                            return 
false// end of input
                        
}
                        
// skip this token
                        
continue;
                    } else {
                        
// accept
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        return 
true;
                    }
                }
            } else {
                throw new 
Exception('Unexpected input at line' $this->line .
                    
': ' $this->_input[$this->_counter]);
            }
            break;
        } while (
true);

    } 
// end function


    
const TAG_OPEN 2;
    function 
yy_r2_1($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::TAG_COMMENT$yy_subpatterns[0]);

    
$this->yypopstate();
    }
    function 
yy_r2_3($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::PLAIN_TEXT$yy_subpatterns[0]);

    
$this->yypopstate();
    }
    function 
yy_r2_5($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::TAG_OPEN$yy_subpatterns[0]);

    
$this->yypushstate(self::TAG_INNER);
    }
    function 
yy_r2_7($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::TAG_END);

    
$this->yypopstate();
    }
    function 
yy_r2_8($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::TAG_SELF_CLOSE);

    
$this->yypopstate();
    }



    function 
yylex3()
    {
        
$tokenMap = array (
              
=> 1,
              
=> 0,
              
=> 0,
              
=> 0,
              
=> 0,
              
=> 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return 
false// end of input
        
}
        
$yy_global_pattern "/^(([a-zA-Z0-9_-]+)=)|^(")|^(')|^([ nrt]+)|^(>)|^(/>)/";

        do {
            if (preg_match($yy_global_pattern, substr($this->_input, $this->_counter), $yymatches)) {
                $yysubmatches = $yymatches;
                $yymatches = array_filter($yymatches, '
strlen'); // remove empty sub-patterns
                if (!count($yymatches)) {
                    throw new Exception('
Errorlexing failed because a rule matched' .
                        '
an empty string.  Input "' . substr($this->_input,
                        
$this->_counter, 5) . '... state TAG_INNER');
                }
                next(
$yymatches); // skip global match
                
$this->token = key($yymatches); // token number
                if (
$tokenMap[$this->token]) {
                    // extract sub-patterns for passing to lex function
                    
$yysubmatches = array_slice($yysubmatches$this->token + 1,
                        
$tokenMap[$this->token]);
                } else {
                    
$yysubmatches = array();
                }
                
$this->value = current($yymatches); // token value
                
$r = $this->{'yy_r3_' . $this->token}($yysubmatches);
                if (
$r === null) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value, "n");
                    // accept this token
                    return true;
                } elseif (
$r === true) {
                    // we have changed state
                    // process this token in the new state
                    return 
$this->yylex();
                } elseif (
$r === false) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value, "n");
                    if (
$this->_counter >= strlen($this->_input)) {
                        return false; // end of input
                    }
                    // skip this token
                    continue;
                } else {                    
$yy_yymore_patterns = array(
        1 => array(0, "
^(")|^(')|^([ nrt]+)|^(>)|^(/>)"),
        
=> array(0"^(')|^([ nrt]+)|^(>)|^(/>)"),
        
=> array(0"^([ nrt]+)|^(>)|^(/>)"),
        
=> array(0"^(>)|^(/>)"),
        
=> array(0"^(/>)"),
        
=> array(0""),
    );

                    
// yymore is needed
                    
do {
                        if (!
strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new 
Exception('cannot do yymore for the last token');
                        }
                        
$yysubmatches = array();
                        if (
preg_match('/' $yy_yymore_patterns[$this->token][1] . '/',
                              
substr($this->_input$this->_counter), $yymatches)) {
                            
$yysubmatches $yymatches;
                            
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                            
next($yymatches); // skip global match
                            
$this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            
$this->value current($yymatches); // token value
                            
$this->line substr_count($this->value"n");
                            if (
$tokenMap[$this->token]) {
                                
// extract sub-patterns for passing to lex function
                                
$yysubmatches array_slice($yysubmatches$this->token 1,
                                    
$tokenMap[$this->token]);
                            } else {
                                
$yysubmatches = array();
                            }
                        }
                        
$r $this->{'yy_r3_' $this->token}($yysubmatches);
                    } while (
$r !== null && !is_bool($r));
                    if (
$r === true) {
                        
// we have changed state
                        // process this token in the new state
                        
return $this->yylex();
                    } elseif (
$r === false) {
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        if (
$this->_counter >= strlen($this->_input)) {
                            return 
false// end of input
                        
}
                        
// skip this token
                        
continue;
                    } else {
                        
// accept
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        return 
true;
                    }
                }
            } else {
                throw new 
Exception('Unexpected input at line' $this->line .
                    
': ' $this->_input[$this->_counter]);
            }
            break;
        } while (
true);

    } 
// end function


    
const TAG_INNER 3;
    function 
yy_r3_1($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::TAG_ATTRIBUTE$yy_subpatterns[0]);
    }
    function 
yy_r3_3($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::DOUBLE_QUOTE'');

    
$this->yypushstate(self::DOUBLE_QUOTED);
    }
    function 
yy_r3_4($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::SINGLE_QUOTE'');

    
$this->yypushstate(self::SINGLE_QUOTED);
    }
    function 
yy_r3_5($yy_subpatterns)
    {

    return 
false;
    }
    function 
yy_r3_6($yy_subpatterns)
    {

    
$this->yypopstate();
    return 
true;
    }
    function 
yy_r3_7($yy_subpatterns)
    {

    
$this->yypopstate();
    return 
true;
    }



    function 
yylex4()
    {
        
$tokenMap = array (
              
=> 1,
              
=> 1,
              
=> 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return 
false// end of input
        
}
        
$yy_global_pattern "/^(\{\$([a-zA-Z_][a-zA-Z0-9_]*))|^(\{xen:([a-zA-Z0-9_]+)[ nrt]+)|^(\})/";

        do {
            if (
preg_match($yy_global_patternsubstr($this->_input$this->_counter), $yymatches)) {
                
$yysubmatches $yymatches;
                
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                
if (!count($yymatches)) {
                    throw new 
Exception('Error: lexing failed because a rule matched' .
                        
'an empty string.  Input "' substr($this->_input,
                        
$this->_counter5) . '... state CURLY_START');
                }
                
next($yymatches); // skip global match
                
$this->token key($yymatches); // token number
                
if ($tokenMap[$this->token]) {
                    
// extract sub-patterns for passing to lex function
                    
$yysubmatches array_slice($yysubmatches$this->token 1,
                        
$tokenMap[$this->token]);
                } else {
                    
$yysubmatches = array();
                }
                
$this->value current($yymatches); // token value
                
$r $this->{'yy_r4_' $this->token}($yysubmatches);
                if (
$r === null) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    
// accept this token
                    
return true;
                } elseif (
$r === true) {
                    
// we have changed state
                    // process this token in the new state
                    
return $this->yylex();
                } elseif (
$r === false) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    if (
$this->_counter >= strlen($this->_input)) {
                        return 
false// end of input
                    
}
                    
// skip this token
                    
continue;
                } else {                    
$yy_yymore_patterns = array(
        
=> array(0"^(\{xen:([a-zA-Z0-9_]+)[ nrt]+)|^(\})"),
        
=> array(1"^(\})"),
        
=> array(1""),
    );

                    
// yymore is needed
                    
do {
                        if (!
strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new 
Exception('cannot do yymore for the last token');
                        }
                        
$yysubmatches = array();
                        if (
preg_match('/' $yy_yymore_patterns[$this->token][1] . '/',
                              
substr($this->_input$this->_counter), $yymatches)) {
                            
$yysubmatches $yymatches;
                            
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                            
next($yymatches); // skip global match
                            
$this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            
$this->value current($yymatches); // token value
                            
$this->line substr_count($this->value"n");
                            if (
$tokenMap[$this->token]) {
                                
// extract sub-patterns for passing to lex function
                                
$yysubmatches array_slice($yysubmatches$this->token 1,
                                    
$tokenMap[$this->token]);
                            } else {
                                
$yysubmatches = array();
                            }
                        }
                        
$r $this->{'yy_r4_' $this->token}($yysubmatches);
                    } while (
$r !== null && !is_bool($r));
                    if (
$r === true) {
                        
// we have changed state
                        // process this token in the new state
                        
return $this->yylex();
                    } elseif (
$r === false) {
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        if (
$this->_counter >= strlen($this->_input)) {
                            return 
false// end of input
                        
}
                        
// skip this token
                        
continue;
                    } else {
                        
// accept
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        return 
true;
                    }
                }
            } else {
                throw new 
Exception('Unexpected input at line' $this->line .
                    
': ' $this->_input[$this->_counter]);
            }
            break;
        } while (
true);

    } 
// end function


    
const CURLY_START 4;
    function 
yy_r4_1($yy_subpatterns)
    {

    
$this->yypushstate(self::CURLY_VAR_START);
    return 
true;
    }
    function 
yy_r4_3($yy_subpatterns)
    {

    
$this->yypushstate(self::CURLY_FUNCTION_START);
    return 
true;
    }
    function 
yy_r4_5($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::CURLY_END);

    
$this->yypopstate();
    }



    function 
yylex5()
    {
        
$tokenMap = array (
              
=> 1,
              
=> 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return 
false// end of input
        
}
        
$yy_global_pattern "/^(\{\$([a-zA-Z_][a-zA-Z0-9_]*))|^(\})/";

        do {
            if (
preg_match($yy_global_patternsubstr($this->_input$this->_counter), $yymatches)) {
                
$yysubmatches $yymatches;
                
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                
if (!count($yymatches)) {
                    throw new 
Exception('Error: lexing failed because a rule matched' .
                        
'an empty string.  Input "' substr($this->_input,
                        
$this->_counter5) . '... state CURLY_VAR_START');
                }
                
next($yymatches); // skip global match
                
$this->token key($yymatches); // token number
                
if ($tokenMap[$this->token]) {
                    
// extract sub-patterns for passing to lex function
                    
$yysubmatches array_slice($yysubmatches$this->token 1,
                        
$tokenMap[$this->token]);
                } else {
                    
$yysubmatches = array();
                }
                
$this->value current($yymatches); // token value
                
$r $this->{'yy_r5_' $this->token}($yysubmatches);
                if (
$r === null) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    
// accept this token
                    
return true;
                } elseif (
$r === true) {
                    
// we have changed state
                    // process this token in the new state
                    
return $this->yylex();
                } elseif (
$r === false) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value"n");
                    if (
$this->_counter >= strlen($this->_input)) {
                        return 
false// end of input
                    
}
                    
// skip this token
                    
continue;
                } else {                    
$yy_yymore_patterns = array(
        
=> array(0"^(\})"),
        
=> array(0""),
    );

                    
// yymore is needed
                    
do {
                        if (!
strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new 
Exception('cannot do yymore for the last token');
                        }
                        
$yysubmatches = array();
                        if (
preg_match('/' $yy_yymore_patterns[$this->token][1] . '/',
                              
substr($this->_input$this->_counter), $yymatches)) {
                            
$yysubmatches $yymatches;
                            
$yymatches array_filter($yymatches'strlen'); // remove empty sub-patterns
                            
next($yymatches); // skip global match
                            
$this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            
$this->value current($yymatches); // token value
                            
$this->line substr_count($this->value"n");
                            if (
$tokenMap[$this->token]) {
                                
// extract sub-patterns for passing to lex function
                                
$yysubmatches array_slice($yysubmatches$this->token 1,
                                    
$tokenMap[$this->token]);
                            } else {
                                
$yysubmatches = array();
                            }
                        }
                        
$r $this->{'yy_r5_' $this->token}($yysubmatches);
                    } while (
$r !== null && !is_bool($r));
                    if (
$r === true) {
                        
// we have changed state
                        // process this token in the new state
                        
return $this->yylex();
                    } elseif (
$r === false) {
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        if (
$this->_counter >= strlen($this->_input)) {
                            return 
false// end of input
                        
}
                        
// skip this token
                        
continue;
                    } else {
                        
// accept
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value"n");
                        return 
true;
                    }
                }
            } else {
                throw new 
Exception('Unexpected input at line' $this->line .
                    
': ' $this->_input[$this->_counter]);
            }
            break;
        } while (
true);

    } 
// end function


    
const CURLY_VAR_START 5;
    function 
yy_r5_1($yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::CURLY_VAR$yy_subpatterns[0]);

    
$this->yypushstate(self::CURLY_VAR_INNER);
    }
    function 
yy_r5_3($yy_subpatterns)
    {

    
$this->yypopstate();
    return 
true;
    }



    function 
yylex6()
    {
        
$tokenMap = array (
              
=> 0,
              
=> 0,
              
=> 0,
              
=> 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return 
false// end of input
        
}
        
$yy_global_pattern "/^(\.)|^(\})|^(\{\$)|^([^.{}"'s]+)/";

        do {
            if (preg_match($yy_global_pattern, substr($this->_input, $this->_counter), $yymatches)) {
                $yysubmatches = $yymatches;
                $yymatches = array_filter($yymatches, '
strlen'); // remove empty sub-patterns
                if (!count($yymatches)) {
                    throw new Exception('
Errorlexing failed because a rule matched' .
                        '
an empty string.  Input "' . substr($this->_input,
                        
$this->_counter, 5) . '... state CURLY_VAR_INNER');
                }
                next(
$yymatches); // skip global match
                
$this->token = key($yymatches); // token number
                if (
$tokenMap[$this->token]) {
                    // extract sub-patterns for passing to lex function
                    
$yysubmatches = array_slice($yysubmatches$this->token + 1,
                        
$tokenMap[$this->token]);
                } else {
                    
$yysubmatches = array();
                }
                
$this->value = current($yymatches); // token value
                
$r = $this->{'yy_r6_' . $this->token}($yysubmatches);
                if (
$r === null) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value, "n");
                    // accept this token
                    return true;
                } elseif (
$r === true) {
                    // we have changed state
                    // process this token in the new state
                    return 
$this->yylex();
                } elseif (
$r === false) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value, "n");
                    if (
$this->_counter >= strlen($this->_input)) {
                        return false; // end of input
                    }
                    // skip this token
                    continue;
                } else {                    
$yy_yymore_patterns = array(
        1 => array(0, "
^(\})|^(\{\$)|^([^.{}"'s]+)"),
        
=> array(0"^(\{\$)|^([^.{}"'s]+)"),
        3 => array(0, "^([^.{}"'
s]+)"),
        4 => array(0, ""),
    );

                    // yymore is needed
                    do {
                        if (!strlen(
$yy_yymore_patterns[$this->token][1])) {
                            throw new Exception('cannot do yymore for the last token');
                        }
                        
$yysubmatches = array();
                        if (preg_match('/' . 
$yy_yymore_patterns[$this->token][1] . '/',
                              substr(
$this->_input$this->_counter), $yymatches)) {
                            
$yysubmatches = $yymatches;
                            
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
                            next(
$yymatches); // skip global match
                            
$this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            
$this->value = current($yymatches); // token value
                            
$this->line = substr_count($this->value, "n");
                            if (
$tokenMap[$this->token]) {
                                // extract sub-patterns for passing to lex function
                                
$yysubmatches = array_slice($yysubmatches$this->token + 1,
                                    
$tokenMap[$this->token]);
                            } else {
                                
$yysubmatches = array();
                            }
                        }
                        
$r = $this->{'yy_r6_' . $this->token}($yysubmatches);
                    } while (
$r !== null && !is_bool($r));
                    if (
$r === true) {
                        // we have changed state
                        // process this token in the new state
                        return 
$this->yylex();
                    } elseif (
$r === false) {
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value, "n");
                        if (
$this->_counter >= strlen($this->_input)) {
                            return false; // end of input
                        }
                        // skip this token
                        continue;
                    } else {
                        // accept
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value, "n");
                        return true;
                    }
                }
            } else {
                throw new Exception('Unexpected input at line' . 
$this->line .
                    ': ' . 
$this->_input[$this->_counter]);
            }
            break;
        } while (true);

    } // end function


    const CURLY_VAR_INNER = 6;
    function yy_r6_1(
$yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::CURLY_ARRAY_DIM);
    }
    function yy_r6_2(
$yy_subpatterns)
    {

    
$this->yypopstate();
    return true;
    }
    function yy_r6_3(
$yy_subpatterns)
    {

    
$this->yypushstate(self::CURLY_START);
    return true;
    }
    function yy_r6_4(
$yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::CURLY_VAR_KEY, $this->value);
    }



    function yylex7()
    {
        
$tokenMap = array (
              1 => 1,
              3 => 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return false; // end of input
        }
        
$yy_global_pattern = "/^(\{xen:([a-zA-Z0-9_]+)[ nrt]+)|^(\})/";

        do {
            if (preg_match(
$yy_global_pattern, substr($this->_input$this->_counter), $yymatches)) {
                
$yysubmatches = $yymatches;
                
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
                if (!count(
$yymatches)) {
                    throw new Exception('Error: lexing failed because a rule matched' .
                        'an empty string.  Input "' . substr($this->_input,
                        $this->_counter, 5) . '
... state CURLY_FUNCTION_START');
                }
                next($yymatches); // skip global match
                $this->token = key($yymatches); // token number
                if ($tokenMap[$this->token]) {
                    // extract sub-patterns for passing to lex function
                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
                        $tokenMap[$this->token]);
                } else {
                    $yysubmatches = array();
                }
                $this->value = current($yymatches); // token value
                $r = $this->{'
yy_r7_' . $this->token}($yysubmatches);
                if ($r === null) {
                    $this->_counter += strlen($this->value);
                    $this->line += substr_count($this->value, "n");
                    // accept this token
                    return true;
                } elseif ($r === true) {
                    // we have changed state
                    // process this token in the new state
                    return $this->yylex();
                } elseif ($r === false) {
                    $this->_counter += strlen($this->value);
                    $this->line += substr_count($this->value, "n");
                    if ($this->_counter >= strlen($this->_input)) {
                        return false; // end of input
                    }
                    // skip this token
                    continue;
                } else {                    $yy_yymore_patterns = array(
        1 => array(0, "^(\})"),
        3 => array(0, ""),
    );

                    // yymore is needed
                    do {
                        if (!strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new Exception('
cannot do yymore for the last token');
                        }
                        $yysubmatches = array();
                        if (preg_match('
/' . $yy_yymore_patterns[$this->token][1] . '/',
                              substr($this->_input, $this->_counter), $yymatches)) {
                            $yysubmatches = $yymatches;
                            $yymatches = array_filter($yymatches, '
strlen'); // remove empty sub-patterns
                            next($yymatches); // skip global match
                            $this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            $this->value = current($yymatches); // token value
                            $this->line = substr_count($this->value, "n");
                            if ($tokenMap[$this->token]) {
                                // extract sub-patterns for passing to lex function
                                $yysubmatches = array_slice($yysubmatches, $this->token + 1,
                                    $tokenMap[$this->token]);
                            } else {
                                $yysubmatches = array();
                            }
                        }
                        $r = $this->{'
yy_r7_' . $this->token}($yysubmatches);
                    } while ($r !== null && !is_bool($r));
                    if ($r === true) {
                        // we have changed state
                        // process this token in the new state
                        return $this->yylex();
                    } elseif ($r === false) {
                        $this->_counter += strlen($this->value);
                        $this->line += substr_count($this->value, "n");
                        if ($this->_counter >= strlen($this->_input)) {
                            return false; // end of input
                        }
                        // skip this token
                        continue;
                    } else {
                        // accept
                        $this->_counter += strlen($this->value);
                        $this->line += substr_count($this->value, "n");
                        return true;
                    }
                }
            } else {
                throw new Exception('
Unexpected input at line' . $this->line .
                    '
' . $this->_input[$this->_counter]);
            }
            break;
        } while (true);

    } // end function


    const CURLY_FUNCTION_START = 7;
    function yy_r7_1($yy_subpatterns)
    {

    $this->_addMatch(XenForo_Template_Compiler_Parser::CURLY_FUNCTION, $yy_subpatterns[0]);

    $this->yypushstate(self::CURLY_FUNCTION_INNER);
    }
    function yy_r7_3($yy_subpatterns)
    {

    $this->yypopstate();
    return true;
    }



    function yylex8()
    {
        $tokenMap = array (
              1 => 0,
              2 => 0,
              3 => 0,
              4 => 0,
              5 => 0,
              6 => 0,
              7 => 0,
              8 => 0,
            );
        if ($this->_counter >= strlen($this->_input)) {
            return false; // end of input
        }
        $yy_global_pattern = "/^(\})|^(\{)|^([ nrt]+)|^(\$[a-zA-Z_][a-zA-Z0-9_.-]*)|^([a-zA-Z0-9_$./:-]+)|^(,)|^(")|^('
)/";

        do {
            if (preg_match(
$yy_global_pattern, substr($this->_input$this->_counter), $yymatches)) {
                
$yysubmatches = $yymatches;
                
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
                if (!count(
$yymatches)) {
                    throw new Exception('Error: lexing failed because a rule matched' .
                        'an empty string.  Input "' . substr($this->_input,
                        $this->_counter, 5) . '
... state CURLY_FUNCTION_INNER');
                }
                next($yymatches); // skip global match
                $this->token = key($yymatches); // token number
                if ($tokenMap[$this->token]) {
                    // extract sub-patterns for passing to lex function
                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
                        $tokenMap[$this->token]);
                } else {
                    $yysubmatches = array();
                }
                $this->value = current($yymatches); // token value
                $r = $this->{'
yy_r8_' . $this->token}($yysubmatches);
                if ($r === null) {
                    $this->_counter += strlen($this->value);
                    $this->line += substr_count($this->value, "n");
                    // accept this token
                    return true;
                } elseif ($r === true) {
                    // we have changed state
                    // process this token in the new state
                    return $this->yylex();
                } elseif ($r === false) {
                    $this->_counter += strlen($this->value);
                    $this->line += substr_count($this->value, "n");
                    if ($this->_counter >= strlen($this->_input)) {
                        return false; // end of input
                    }
                    // skip this token
                    continue;
                } else {                    $yy_yymore_patterns = array(
        1 => array(0, "^(\{)|^([ nrt]+)|^(\$[a-zA-Z_][a-zA-Z0-9_.-]*)|^([a-zA-Z0-9_$./:-]+)|^(,)|^(")|^('
)"),
        2 => array(0, "
^([ nrt]+)|^(\$[a-zA-Z_][a-zA-Z0-9_.-]*)|^([a-zA-Z0-9_$./:-]+)|^(,)|^(")|^(')"),
        
=> array(0"^(\$[a-zA-Z_][a-zA-Z0-9_.-]*)|^([a-zA-Z0-9_$./:-]+)|^(,)|^(")|^(')"),
        4 => array(0, "^([a-zA-Z0-9_$./:-]+)|^(,)|^(")|^('
)"),
        5 => array(0, "
^(,)|^(")|^(')"),
        
=> array(0"^(")|^(')"),
        7 => array(0, "^('
)"),
        8 => array(0, ""),
    );

                    // yymore is needed
                    do {
                        if (!strlen(
$yy_yymore_patterns[$this->token][1])) {
                            throw new Exception('cannot do yymore for the last token');
                        }
                        
$yysubmatches = array();
                        if (preg_match('/' . 
$yy_yymore_patterns[$this->token][1] . '/',
                              substr(
$this->_input$this->_counter), $yymatches)) {
                            
$yysubmatches = $yymatches;
                            
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
                            next(
$yymatches); // skip global match
                            
$this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            
$this->value = current($yymatches); // token value
                            
$this->line = substr_count($this->value, "n");
                            if (
$tokenMap[$this->token]) {
                                // extract sub-patterns for passing to lex function
                                
$yysubmatches = array_slice($yysubmatches$this->token + 1,
                                    
$tokenMap[$this->token]);
                            } else {
                                
$yysubmatches = array();
                            }
                        }
                        
$r = $this->{'yy_r8_' . $this->token}($yysubmatches);
                    } while (
$r !== null && !is_bool($r));
                    if (
$r === true) {
                        // we have changed state
                        // process this token in the new state
                        return 
$this->yylex();
                    } elseif (
$r === false) {
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value, "n");
                        if (
$this->_counter >= strlen($this->_input)) {
                            return false; // end of input
                        }
                        // skip this token
                        continue;
                    } else {
                        // accept
                        
$this->_counter += strlen($this->value);
                        
$this->line += substr_count($this->value, "n");
                        return true;
                    }
                }
            } else {
                throw new Exception('Unexpected input at line' . 
$this->line .
                    ': ' . 
$this->_input[$this->_counter]);
            }
            break;
        } while (true);

    } // end function


    const CURLY_FUNCTION_INNER = 8;
    function yy_r8_1(
$yy_subpatterns)
    {

    
$this->yypopstate();
    return true;
    }
    function yy_r8_2(
$yy_subpatterns)
    {

    
$this->yypushstate(self::CURLY_START);
    return true;
    }
    function yy_r8_3(
$yy_subpatterns)
    {

    return false;
    }
    function yy_r8_4(
$yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::SIMPLE_VARIABLE, $this->value);
    }
    function yy_r8_5(
$yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::LITERAL, $this->value);
    }
    function yy_r8_6(
$yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::CURLY_ARG_SEP);
    }
    function yy_r8_7(
$yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::DOUBLE_QUOTE);

    
$this->yypushstate(self::DOUBLE_QUOTED);
    }
    function yy_r8_8(
$yy_subpatterns)
    {

    
$this->_addMatch(XenForo_Template_Compiler_Parser::SINGLE_QUOTE);

    
$this->yypushstate(self::SINGLE_QUOTED);
    }



    function yylex9()
    {
        
$tokenMap = array (
              1 => 0,
              2 => 0,
              3 => 0,
              4 => 0,
              5 => 0,
            );
        if (
$this->_counter >= strlen($this->_input)) {
            return false; // end of input
        }
        
$yy_global_pattern = "/^(\{\$)|^(\{xen:)|^(\{)|^(")|^([^{"]+)/";

        do {
            if (preg_match(
$yy_global_pattern, substr($this->_input$this->_counter), $yymatches)) {
                
$yysubmatches = $yymatches;
                
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
                if (!count(
$yymatches)) {
                    throw new Exception('Error: lexing failed because a rule matched' .
                        'an empty string.  Input "' . substr($this->_input,
                        $this->_counter, 5) . '
... state DOUBLE_QUOTED');
                }
                next($yymatches); // skip global match
                $this->token = key($yymatches); // token number
                if ($tokenMap[$this->token]) {
                    // extract sub-patterns for passing to lex function
                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
                        $tokenMap[$this->token]);
                } else {
                    $yysubmatches = array();
                }
                $this->value = current($yymatches); // token value
                $r = $this->{'
yy_r9_' . $this->token}($yysubmatches);
                if ($r === null) {
                    $this->_counter += strlen($this->value);
                    $this->line += substr_count($this->value, "n");
                    // accept this token
                    return true;
                } elseif ($r === true) {
                    // we have changed state
                    // process this token in the new state
                    return $this->yylex();
                } elseif ($r === false) {
                    $this->_counter += strlen($this->value);
                    $this->line += substr_count($this->value, "n");
                    if ($this->_counter >= strlen($this->_input)) {
                        return false; // end of input
                    }
                    // skip this token
                    continue;
                } else {                    $yy_yymore_patterns = array(
        1 => array(0, "^(\{xen:)|^(\{)|^(")|^([^{"]+)"),
        2 => array(0, "^(\{)|^(")|^([^{"]+)"),
        3 => array(0, "^(")|^([^{"]+)"),
        4 => array(0, "^([^{"]+)"),
        5 => array(0, ""),
    );

                    // yymore is needed
                    do {
                        if (!strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new Exception('
cannot do yymore for the last token');
                        }
                        $yysubmatches = array();
                        if (preg_match('
/' . $yy_yymore_patterns[$this->token][1] . '/',
                              substr($this->_input, $this->_counter), $yymatches)) {
                            $yysubmatches = $yymatches;
                            $yymatches = array_filter($yymatches, '
strlen'); // remove empty sub-patterns
                            next($yymatches); // skip global match
                            $this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            $this->value = current($yymatches); // token value
                            $this->line = substr_count($this->value, "n");
                            if ($tokenMap[$this->token]) {
                                // extract sub-patterns for passing to lex function
                                $yysubmatches = array_slice($yysubmatches, $this->token + 1,
                                    $tokenMap[$this->token]);
                            } else {
                                $yysubmatches = array();
                            }
                        }
                        $r = $this->{'
yy_r9_' . $this->token}($yysubmatches);
                    } while ($r !== null && !is_bool($r));
                    if ($r === true) {
                        // we have changed state
                        // process this token in the new state
                        return $this->yylex();
                    } elseif ($r === false) {
                        $this->_counter += strlen($this->value);
                        $this->line += substr_count($this->value, "n");
                        if ($this->_counter >= strlen($this->_input)) {
                            return false; // end of input
                        }
                        // skip this token
                        continue;
                    } else {
                        // accept
                        $this->_counter += strlen($this->value);
                        $this->line += substr_count($this->value, "n");
                        return true;
                    }
                }
            } else {
                throw new Exception('
Unexpected input at line' . $this->line .
                    '
' . $this->_input[$this->_counter]);
            }
            break;
        } while (true);

    } // end function


    const DOUBLE_QUOTED = 9;
    function yy_r9_1($yy_subpatterns)
    {

    $this->yypushstate(self::CURLY_START);
    return true;
    }
    function yy_r9_2($yy_subpatterns)
    {

    $this->yypushstate(self::CURLY_START);
    return true;
    }
    function yy_r9_3($yy_subpatterns)
    {

    $this->_addMatch(XenForo_Template_Compiler_Parser::LITERAL, $this->value);
    }
    function yy_r9_4($yy_subpatterns)
    {

    $this->_addMatch(XenForo_Template_Compiler_Parser::DOUBLE_QUOTE);

    $this->yypopstate();
    }
    function yy_r9_5($yy_subpatterns)
    {

    $this->_addMatch(XenForo_Template_Compiler_Parser::LITERAL, $this->value);
    }



    function yylex10()
    {
        $tokenMap = array (
              1 => 0,
              2 => 0,
              3 => 0,
              4 => 0,
              5 => 0,
            );
        if ($this->_counter >= strlen($this->_input)) {
            return false; // end of input
        }
        $yy_global_pattern = "/^(\{\$)|^(\{xen:)|^(\{)|^('
)|^([^{']+)/";

        do {
            if (preg_match($yy_global_pattern, substr($this->_input, $this->_counter), $yymatches)) {
                $yysubmatches = $yymatches;
                $yymatches = array_filter($yymatches, '
strlen'); // remove empty sub-patterns
                if (!count($yymatches)) {
                    throw new Exception('
Errorlexing failed because a rule matched' .
                        '
an empty string.  Input "' . substr($this->_input,
                        
$this->_counter, 5) . '... state SINGLE_QUOTED');
                }
                next(
$yymatches); // skip global match
                
$this->token = key($yymatches); // token number
                if (
$tokenMap[$this->token]) {
                    // extract sub-patterns for passing to lex function
                    
$yysubmatches = array_slice($yysubmatches$this->token + 1,
                        
$tokenMap[$this->token]);
                } else {
                    
$yysubmatches = array();
                }
                
$this->value = current($yymatches); // token value
                
$r = $this->{'yy_r10_' . $this->token}($yysubmatches);
                if (
$r === null) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value, "n");
                    // accept this token
                    return true;
                } elseif (
$r === true) {
                    // we have changed state
                    // process this token in the new state
                    return 
$this->yylex();
                } elseif (
$r === false) {
                    
$this->_counter += strlen($this->value);
                    
$this->line += substr_count($this->value, "n");
                    if (
$this->_counter >= strlen($this->_input)) {
                        return false; // end of input
                    }
                    // skip this token
                    continue;
                } else {                    
$yy_yymore_patterns = array(
        1 => array(0, "
^(\{xen:)|^(\{)|^(')|^([^{']+)"),
        2 => array(0, "
^(\{)|^(')|^([^{']+)"),
        3 => array(0, "
^(')|^([^{']+)"),
        4 => array(0, "
^([^{']+)"),
        5 => array(0, ""),
    );

                    // yymore is needed
                    do {
                        if (!strlen($yy_yymore_patterns[$this->token][1])) {
                            throw new Exception('
cannot do yymore for the last token');
                        }
                        $yysubmatches = array();
                        if (preg_match('
/' . $yy_yymore_patterns[$this->token][1] . '/',
                              substr($this->_input, $this->_counter), $yymatches)) {
                            $yysubmatches = $yymatches;
                            $yymatches = array_filter($yymatches, '
strlen'); // remove empty sub-patterns
                            next($yymatches); // skip global match
                            $this->token += key($yymatches) + $yy_yymore_patterns[$this->token][0]; // token number
                            $this->value = current($yymatches); // token value
                            $this->line = substr_count($this->value, "n");
                            if ($tokenMap[$this->token]) {
                                // extract sub-patterns for passing to lex function
                                $yysubmatches = array_slice($yysubmatches, $this->token + 1,
                                    $tokenMap[$this->token]);
                            } else {
                                $yysubmatches = array();
                            }
                        }
                        $r = $this->{'
yy_r10_' . $this->token}($yysubmatches);
                    } while ($r !== null && !is_bool($r));
                    if ($r === true) {
                        // we have changed state
                        // process this token in the new state
                        return $this->yylex();
                    } elseif ($r === false) {
                        $this->_counter += strlen($this->value);
                        $this->line += substr_count($this->value, "n");
                        if ($this->_counter >= strlen($this->_input)) {
                            return false; // end of input
                        }
                        // skip this token
                        continue;
                    } else {
                        // accept
                        $this->_counter += strlen($this->value);
                        $this->line += substr_count($this->value, "n");
                        return true;
                    }
                }
            } else {
                throw new Exception('
Unexpected input at line' . $this->line .
                    '
' . $this->_input[$this->_counter]);
            }
            break;
        } while (true);

    } // end function


    const SINGLE_QUOTED = 10;
    function yy_r10_1($yy_subpatterns)
    {

    $this->yypushstate(self::CURLY_START);
    return true;
    }
    function yy_r10_2($yy_subpatterns)
    {

    $this->yypushstate(self::CURLY_START);
    return true;
    }
    function yy_r10_3($yy_subpatterns)
    {

    $this->_addMatch(XenForo_Template_Compiler_Parser::LITERAL, $this->value);
    }
    function yy_r10_4($yy_subpatterns)
    {

    $this->_addMatch(XenForo_Template_Compiler_Parser::SINGLE_QUOTE);

    $this->yypopstate();
    }
    function yy_r10_5($yy_subpatterns)
    {

    $this->_addMatch(XenForo_Template_Compiler_Parser::LITERAL, $this->value);
    }


}
Онлайн: 0
Реклама