# If statements 0) { echo "Yes"; } if ($a==0) { echo "bad"; } else { echo "good"; } if ($a==0) { echo "bad"; } elseif ($a==3) { echo "bad"; } else { echo "good"; } ==> Template( TextInterpolation(PhpOpen), IfStatement(if, ParenthesizedExpression(BinaryExpression( VariableName, CompareOp, Integer)), Block(EchoStatement(echo,String))), IfStatement(if, ParenthesizedExpression(BinaryExpression( VariableName, CompareOp, Integer)), Block(EchoStatement(echo,String)), else, Block(EchoStatement(echo,String))), IfStatement(if, ParenthesizedExpression(BinaryExpression( VariableName, CompareOp, Integer)), Block(EchoStatement(echo,String)), elseif, ParenthesizedExpression(BinaryExpression(VariableName,CompareOp,Integer)), Block(EchoStatement(echo,String)), else, Block(EchoStatement(echo,String)))) # Alternative if statements Template( TextInterpolation(PhpOpen), IfStatement(if, ParenthesizedExpression(VariableName), EchoStatement(echo,Integer), else, EchoStatement(echo,Integer)), IfStatement(if, ParenthesizedExpression(VariableName), ColonBlock( EchoStatement(echo,Integer), EchoStatement(echo,Integer)), else, ColonBlock(EchoStatement(echo,Integer)), endif)) # While statements Template( TextInterpolation(PhpOpen), WhileStatement(while, ParenthesizedExpression(BinaryExpression(VariableName,CompareOp,Integer)), Block( EchoStatement(echo,VariableName), ExpressionStatement(UpdateExpression(VariableName, ArithOp))))) # Alternative while statements Template( TextInterpolation(PhpOpen), WhileStatement(while, ParenthesizedExpression(BinaryExpression(VariableName, CompareOp, Integer)), EchoStatement(echo,UpdateExpression(VariableName, ArithOp))), WhileStatement(while, ParenthesizedExpression(BinaryExpression(VariableName, CompareOp, Integer)), ColonBlock( EchoStatement(echo,UpdateExpression(ArithOp, VariableName)), EchoStatement(echo,VariableName)), endwhile)) # For statements Template( TextInterpolation(PhpOpen), ForStatement(for, ForSpec( AssignmentExpression(VariableName, AssignOp, Integer), BinaryExpression(VariableName, CompareOp, Integer), UpdateExpression(VariableName, ArithOp)), EchoStatement(echo,VariableName)), ForStatement(for, ForSpec( AssignmentExpression(VariableName, AssignOp, Integer), BinaryExpression(VariableName, CompareOp, Integer), UpdateExpression(VariableName, ArithOp)), ColonBlock(EchoStatement(echo,VariableName)), endfor)) # Switch statements ==> Template( TextInterpolation(PhpOpen), SwitchStatement(switch, ParenthesizedExpression(VariableName), Block( CaseStatement(case, Integer, EchoStatement(echo,String), BreakStatement(break)), CaseStatement(case, Integer, EchoStatement(echo,String), BreakStatement(break)), DefaultStatement(default, EchoStatement(echo,String), BreakStatement(break)))), TextInterpolation(PhpClose)) # Alternative switch statements Template( TextInterpolation(PhpOpen), SwitchStatement(switch, ParenthesizedExpression(VariableName), ColonBlock( CaseStatement(case, Integer, EchoStatement(echo,Integer), BreakStatement(break)), CaseStatement(case, Integer, EchoStatement(echo,Integer), BreakStatement(break)), DefaultStatement(default, EchoStatement(echo,Integer), BreakStatement(break))) endswitch)) # Include statement Template( TextInterpolation(PhpOpen), ExpressionStatement(IncludeExpression(include, String))) # Do-while statements 0); ==> Template( TextInterpolation(PhpOpen), DoStatement(do, Block( EchoStatement(echo,VariableName), ExpressionStatement(UpdateExpression(VariableName, ArithOp))), while, ParenthesizedExpression(BinaryExpression(VariableName, CompareOp, Integer)))) # Try statements getException(); print "\n"; } ==> Template( TextInterpolation(PhpOpen), TryStatement( try, Block, catch, CatchDeclarator(NamedType(Name)), Block, catch, CatchDeclarator(UnionType(NamedType(Name), LogicOp, NamedType(Name)), VariableName), Block, finally, Block), TryStatement( try, Block(ExpressionStatement(CallExpression(Name,ArgList))), catch, CatchDeclarator(NamedType(Name), VariableName), Block( ExpressionStatement(PrintIntrinsic(print, BinaryExpression( String, ConcatOp, CallExpression(MemberExpression(VariableName,Name),ArgList)))), ExpressionStatement(PrintIntrinsic(print, String(EscapeSequence)))))) # Foreach statements $value); foreach($a as $b): echo $a; echo $b; endforeach; ==> Template( TextInterpolation(PhpOpen), ForeachStatement(foreach, ForSpec(VariableName, as, SubscriptExpression(VariableName, Integer)), Block( EchoStatement(echo,BinaryExpression( SubscriptExpression(VariableName, Integer), ConcatOp, String(EscapeSequence))))), ForeachStatement(foreach, ForSpec(VariableName, as, Pair(VariableName, VariableName)), EmptyStatement), ForeachStatement(foreach, ForSpec(VariableName, as, VariableName), ColonBlock( EchoStatement(echo,VariableName), EchoStatement(echo,VariableName)), endforeach)) # Case insensitive keywords Template( TextInterpolation(PhpOpen), ForeachStatement(foreach, ForSpec(VariableName, as, VariableName), Block( DoStatement(do, Block( IfStatement(if, ParenthesizedExpression(VariableName), Block(ExpressionStatement(CallExpression(Name, ArgList))), else, Block(ExpressionStatement(CallExpression(Name, ArgList))))), while, ParenthesizedExpression(VariableName))))) # Accessing Constants Template( TextInterpolation(PhpOpen), EchoStatement(echo, Name ), EchoStatement(echo, SubscriptExpression( Name, Integer ) ) )