Skip to content

Latest commit

 

History

History
281 lines (228 loc) · 13.6 KB

astparser.md

File metadata and controls

281 lines (228 loc) · 13.6 KB

astparser

astparser parses the input string to ast which can analysis user-defined tags.

input string:

$str = '<p>p_start<block>block_info<b>bold></b></block><block>info2</block>p_end</p>';

matched tokenmap:

$tokenMap = array(
    '<p>',
    'p_start',
    '<block>',
    'block_info',
    '<b>',
    'bold>',
    '</b>',
    'block_end',
    '</block>',
    '<block>',
    'info2',
    '</block>',
    'p_end',
    '</p>'
    );

The ast structure generated by the given input tokenmap or input string after the parser procedure,

parser result(var_dump()):


string(93) "(<p>p_start(<block>block_info(<b>bold></b>)block_end</block>)(<block>info2</block>)p_end</p>)"

ast result(print_r()):

Array
(
    [0] => BinaryExprAST Object
        (
            [startTag:protected] => TagExprAST Object
                (
                    [tagMeta:protected] => TokenMeta Object
                        (
                            [tokenSymbol:protected] => p
                            [tokenTag:protected] => <p>
                            [tokenValue:protected] => <p>
                            [tokenGroup:protected] => 1
                            [tokenPriority:protected] => 255
                            [tokenPos:protected] => 
                        )

                    [tagRule:protected] => Rule Object
                        (
                            [fontRule:protected] => 
                            [positionRule:protected] => 
                            [listRule:protected] => 
                        )

                )

            [block:protected] => BlockExprAST Object
                (
                    [lhsVar:protected] => 
                    [binary:protected] => BinaryExprAST Object
                        (
                            [startTag:protected] => TagExprAST Object
                                (
                                    [tagMeta:protected] => TokenMeta Object
                                        (
                                            [tokenSymbol:protected] => block
                                            [tokenTag:protected] => <block>
                                            [tokenValue:protected] => <block>
                                            [tokenGroup:protected] => 1
                                            [tokenPriority:protected] => 254
                                            [tokenPos:protected] => 
                                        )

                                    [tagRule:protected] => Rule Object
                                        (
                                            [fontRule:protected] => 
                                            [positionRule:protected] => 
                                            [listRule:protected] => 
                                        )

                                )

                            [block:protected] => BlockExprAST Object
                                (
                                    [lhsVar:protected] => VariableExprAST Object
                                        (
                                            [varible:protected] => DVariable Object
                                                (
                                                    [vari:DVariable:private] => p_start
                                                    [fontRule:DVariable:private] => 
                                                )

                                        )

                                    [binary:protected] => BinaryExprAST Object
                                        (
                                            [startTag:protected] => TagExprAST Object
                                                (
                                                    [tagMeta:protected] => TokenMeta Object
                                                        (
                                                            [tokenSymbol:protected] => block
                                                            [tokenTag:protected] => <block>
                                                            [tokenValue:protected] => <block>
                                                            [tokenGroup:protected] => 1
                                                            [tokenPriority:protected] => 254
                                                            [tokenPos:protected] => 
                                                        )

                                                    [tagRule:protected] => Rule Object
                                                        (
                                                            [fontRule:protected] => 
                                                            [positionRule:protected] => 
                                                            [listRule:protected] => 
                                                        )

                                                )

                                            [block:protected] => BlockExprAST Object
                                                (
                                                    [lhsVar:protected] => VariableExprAST Object
                                                        (
                                                            [varible:protected] => DVariable Object
                                                                (
                                                                    [vari:DVariable:private] => block_info
                                                                    [fontRule:DVariable:private] => 
                                                                )

                                                        )

                                                    [binary:protected] => BinaryExprAST Object
                                                        (
                                                            [startTag:protected] => TagExprAST Object
                                                                (
                                                                    [tagMeta:protected] => TokenMeta Object
                                                                        (
                                                                            [tokenSymbol:protected] => b
                                                                            [tokenTag:protected] => <b>
                                                                            [tokenValue:protected] => <b>
                                                                            [tokenGroup:protected] => 1
                                                                            [tokenPriority:protected] => 253
                                                                            [tokenPos:protected] => 
                                                                        )

                                                                    [tagRule:protected] => Rule Object
                                                                        (
                                                                            [fontRule:protected] => 
                                                                            [positionRule:protected] => 
                                                                            [listRule:protected] => 
                                                                        )

                                                                )

                                                            [block:protected] => BlockExprAST Object
                                                                (
                                                                    [lhsVar:protected] => VariableExprAST Object
                                                                        (
                                                                            [varible:protected] => DVariable Object
                                                                                (
                                                                                    [vari:DVariable:private] => bold>
                                                                                    [fontRule:DVariable:private] => 
                                                                                )

                                                                        )

                                                                    [binary:protected] => 
                                                                    [rhsVar:protected] => 
                                                                )

                                                            [endTag:protected] => TagExprAST Object
                                                                (
                                                                    [tagMeta:protected] => TokenMeta Object
                                                                        (
                                                                            [tokenSymbol:protected] => b
                                                                            [tokenTag:protected] => </b>
                                                                            [tokenValue:protected] => </b>
                                                                            [tokenGroup:protected] => 1
                                                                            [tokenPriority:protected] => 253
                                                                            [tokenPos:protected] => 
                                                                        )

                                                                    [tagRule:protected] => 
                                                                )

                                                        )

                                                    [rhsVar:protected] => VariableExprAST Object
                                                        (
                                                            [varible:protected] => DVariable Object
                                                                (
                                                                    [vari:DVariable:private] => block_end
                                                                    [fontRule:DVariable:private] => 
                                                                )

                                                        )

                                                )

                                            [endTag:protected] => TagExprAST Object
                                                (
                                                    [tagMeta:protected] => TokenMeta Object
                                                        (
                                                            [tokenSymbol:protected] => block
                                                            [tokenTag:protected] => </block>
                                                            [tokenValue:protected] => </block>
                                                            [tokenGroup:protected] => 1
                                                            [tokenPriority:protected] => 254
                                                            [tokenPos:protected] => 
                                                        )

                                                    [tagRule:protected] => 
                                                )

                                        )

                                    [rhsVar:protected] => 
                                )

                            [endTag:protected] => TagExprAST Object
                                (
                                    [tagMeta:protected] => TokenMeta Object
                                        (
                                            [tokenSymbol:protected] => block
                                            [tokenTag:protected] => </block>
                                            [tokenValue:protected] => </block>
                                            [tokenGroup:protected] => 1
                                            [tokenPriority:protected] => 254
                                            [tokenPos:protected] => 
                                        )

                                    [tagRule:protected] => 
                                )

                        )

                    [rhsVar:protected] => VariableExprAST Object
                        (
                            [varible:protected] => DVariable Object
                                (
                                    [vari:DVariable:private] => p_end
                                    [fontRule:DVariable:private] => 
                                )

                        )

                )

            [endTag:protected] => TagExprAST Object
                (
                    [tagMeta:protected] => TokenMeta Object
                        (
                            [tokenSymbol:protected] => p
                            [tokenTag:protected] => </p>
                            [tokenValue:protected] => </p>
                            [tokenGroup:protected] => 1
                            [tokenPriority:protected] => 255
                            [tokenPos:protected] => 
                        )

                    [tagRule:protected] => 
                )

        )

)