zephir开发的扩展“wudimei框架”之模板词法扫描

写了个测试的例子:

<?php

use Wudimei\View\Lexer;

$c = '[test'."\r\n" . ']{{[name]}}['."\r"." ]{%[ if name== '' ]%}[ no name ]{%[ endif ]%}[ end" . "\nend ] {# \n comment \n #}[end]";
$l =new Lexer();
$l->scan('a.php', $c );

目前也只是做了按界定符切分字符串,暂时区分了文本类型、界定符、变量内容、代码块内容、注释内容。输出的结果是:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 0
            [3] => [test
]
            [4] => 8
            [5] => 1
            [6] => Array
                (
                )

        )

    [1] => Array
        (
            [0] => 2
            [1] => 2
            [2] => 8
            [3] => {{
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [2] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 10
            [3] => [name]
            [4] => 6
            [5] => 3
            [6] => Array
                (
                )

        )

    [3] => Array
        (
            [0] => 2
            [1] => 10
            [2] => 16
            [3] => }}
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [4] => Array
        (
            [0] => 2
            [1] => 12
            [2] => 18
            [3] => [
 ]
            [4] => 4
            [5] => 1
            [6] => Array
                (
                )

        )

    [5] => Array
        (
            [0] => 3
            [1] => 3
            [2] => 22
            [3] => {%
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [6] => Array
        (
            [0] => 3
            [1] => 5
            [2] => 24
            [3] => [ if name== '' ]
            [4] => 16
            [5] => 4
            [6] => Array
                (
                )

        )

    [7] => Array
        (
            [0] => 3
            [1] => 21
            [2] => 40
            [3] => %}
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [8] => Array
        (
            [0] => 3
            [1] => 23
            [2] => 42
            [3] => [ no name ]
            [4] => 11
            [5] => 1
            [6] => Array
                (
                )

        )

    [9] => Array
        (
            [0] => 3
            [1] => 34
            [2] => 53
            [3] => {%
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [10] => Array
        (
            [0] => 3
            [1] => 36
            [2] => 55
            [3] => [ endif ]
            [4] => 9
            [5] => 4
            [6] => Array
                (
                )

        )

    [11] => Array
        (
            [0] => 3
            [1] => 45
            [2] => 64
            [3] => %}
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [12] => Array
        (
            [0] => 3
            [1] => 47
            [2] => 66
            [3] => [ end
end ] 
            [4] => 12
            [5] => 1
            [6] => Array
                (
                )

        )

    [13] => Array
        (
            [0] => 4
            [1] => 7
            [2] => 78
            [3] => {#
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [14] => Array
        (
            [0] => 4
            [1] => 9
            [2] => 80
            [3] =>  
 comment 
 
            [4] => 13
            [5] => 5
            [6] => Array
                (
                )

        )

    [15] => Array
        (
            [0] => 6
            [1] => 2
            [2] => 93
            [3] => #}
            [4] => 2
            [5] => 2
            [6] => Array
                (
                )

        )

    [16] => Array
        (
            [0] => 6
            [1] => 4
            [2] => 95
            [3] => [end]
            [4] => 5
            [5] => 1
            [6] => Array
                (
                )

        )

)

猜你喜欢

转载自www.cnblogs.com/wudimei/p/9141158.html