C:\xampp2_not used\phpMyAdmin\vendor\twig\extensions\lib\Twig\Extensions\SimpleTokenParser.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php

/*
 * This file is part of Twig.
 *
 * (c) 2010 Fabien Potencier
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

@trigger_error('The grammar feature is deprecated since version 1.5 and will be removed in 2.0.'E_USER_DEPRECATED);

/**
 * @deprecated since version 1.5
 */
abstract class Twig_Extensions_SimpleTokenParser extends Twig_TokenParser
{
    
/**
     * Parses a token and returns a node.
     *
     * @param Twig_Token $token A Twig_Token instance
     *
     * @return Twig_Node A Twig_Node instance
     */
    
public function parse(Twig_Token $token)
    {
        
$grammar $this->getGrammar();
        if (!
is_object($grammar)) {
            
$grammar self::parseGrammar($grammar);
        }

        
$grammar->setParser($this->parser);
        
$values $grammar->parse($token);

        return 
$this->getNode($values$token->getLine());
    }

    
/**
     * Gets the grammar as an object or as a string.
     *
     * @return string|Twig_Extensions_Grammar A Twig_Extensions_Grammar instance or a string
     */
    
abstract protected function getGrammar();

    
/**
     * Gets the nodes based on the parsed values.
     *
     * @param array $values An array of values
     * @param int   $line   The parser line
     */
    
abstract protected function getNode(array $values$line);

    protected function 
getAttribute($node$attribute$arguments = array(), $type Twig_Node_Expression_GetAttr::TYPE_ANY$line = -1)
    {
        return new 
Twig_Node_Expression_GetAttr(
            
$node instanceof Twig_Node $node : new Twig_Node_Expression_Name($node$line),
            
$attribute instanceof Twig_Node $attribute : new Twig_Node_Expression_Constant($attribute$line),
            
$arguments instanceof Twig_Node $arguments : new Twig_Node($arguments),
            
$type,
            
$line
        
);
    }

    protected function 
call($node$attribute$arguments = array(), $line = -1)
    {
        return 
$this->getAttribute($node$attribute$argumentsTwig_Node_Expression_GetAttr::TYPE_METHOD$line);
    }

    protected function 
markAsSafe(Twig_Node $node$line = -1)
    {
        return new 
Twig_Node_Expression_Filter(
            
$node,
            new 
Twig_Node_Expression_Constant('raw'$line),
            new 
Twig_Node(),
            
$line
        
);
    }

    protected function 
output(Twig_Node $node$line = -1)
    {
        return new 
Twig_Node_Print($node$line);
    }

    protected function 
getNodeValues(array $values)
    {
        
$nodes = array();
        foreach (
$values as $value) {
            if (
$value instanceof Twig_Node) {
                
$nodes[] = $value;
            }
        }

        return 
$nodes;
    }

    public static function 
parseGrammar($str$main true)
    {
        static 
$cursor;

        if (
true === $main) {
            
$cursor 0;
            
$grammar = new Twig_Extensions_Grammar_Tag();
        } else {
            
$grammar = new Twig_Extensions_Grammar_Optional();
        }

        while (
$cursor strlen($str)) {
            if (
preg_match('/\s+/A'$str$matchnull$cursor)) {
                
$cursor += strlen($match[0]);
            } elseif (
preg_match('/<(\w+)(?:\:(\w+))?>/A'$str$matchnull$cursor)) {
                
$class sprintf('Twig_Extensions_Grammar_%s'ucfirst(isset($match[2]) ? $match[2] : 'Expression'));
                if (!
class_exists($class)) {
                    throw new 
Twig_Error_Runtime(sprintf('Unable to understand "%s" in grammar (%s class does not exist)'$match[0], $class));
                }
                
$grammar->addGrammar(new $class($match[1]));
                
$cursor += strlen($match[0]);
            } elseif (
preg_match('/\w+/A'$str$matchnull$cursor)) {
                
$grammar->addGrammar(new Twig_Extensions_Grammar_Constant($match[0]));
                
$cursor += strlen($match[0]);
            } elseif (
preg_match('/,/A'$str$matchnull$cursor)) {
                
$grammar->addGrammar(new Twig_Extensions_Grammar_Constant($match[0], Twig_Token::PUNCTUATION_TYPE));
                
$cursor += strlen($match[0]);
            } elseif (
preg_match('/\[/A'$str$matchnull$cursor)) {
                
$cursor += strlen($match[0]);
                
$grammar->addGrammar(self::parseGrammar($strfalse));
            } elseif (
true !== $main && preg_match('/\]/A'$str$matchnull$cursor)) {
                
$cursor += strlen($match[0]);

                return 
$grammar;
            } else {
                throw new 
Twig_Error_Runtime(sprintf('Unable to parse grammar "%s" near "...%s..."'$strsubstr($str$cursor10)));
            }
        }

        return 
$grammar;
    }
}
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586