==>
Template(
TextInterpolation(PhpOpen),
EchoStatement(echo,String),
TextInterpolation(PhpClose, Text))
# interpolated text in middle
==>
Template(
TextInterpolation(PhpOpen),
EchoStatement(echo,String),
TextInterpolation(PhpClose, Text, PhpOpen),
EchoStatement(echo,String),
TextInterpolation(PhpClose))
# short open tag: On
echo "Used a short tag\n";
?>
Finished
==>
Template(
TextInterpolation(PhpOpen),
EchoStatement(echo,String(EscapeSequence)),
TextInterpolation(PhpClose, Text))
# short open tag: Off
one
= $a ?>
two
$b=3; ?>
= "{$b}" ?>
==>
Template(
TextInterpolation(Text,PhpOpen),
ExpressionStatement(AssignmentExpression(VariableName, AssignOp, String)),
TextInterpolation(PhpClose,Text,PhpOpen),
ExpressionStatement(VariableName),
TextInterpolation(PhpClose,Text,PhpOpen),
ExpressionStatement(AssignmentExpression(VariableName, AssignOp, Integer)),
TextInterpolation(PhpClose,Text,PhpOpen),
EchoStatement(echo,String(Interpolation(VariableName))),
TextInterpolation(PhpClose,Text,PhpOpen),
ExpressionStatement(String(Interpolation(VariableName))),
TextInterpolation(PhpClose))
# Single line php comment
Template(
TextInterpolation(Text, PhpOpen),
LineComment,
TextInterpolation(PhpClose, Text, PhpOpen),
LineComment,
LineComment,
EchoStatement(echo,String))
# Single line comment without any content
Template(
TextInterpolation(PhpOpen),
LineComment,
LineComment,
IfStatement(if,
ParenthesizedExpression(
UnaryExpression(LogicOp, CallExpression(Name,ArgList(String)))
),
Block(EchoStatement(echo,VariableName))
)
)
# Closing tags before the first PHP tag
a ?> b
Template(
TextInterpolation(Text, PhpOpen),
ExpressionStatement(Name))
# Text ends in a less-than char
foo<
==>
Template(Text)