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] =>
)
)
)