Changeset 1334


Ignore:
Timestamp:
2013-07-19T07:03:07+02:00 (17 months ago)
Author:
moo
Message:

devel: use cpp to generate samples for different php version

Location:
trunk
Files:
1 deleted
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/devel/run

    r1324 r1334  
    242242    dc) 
    243243        shift 
    244         ./php-cli -c devel.ini ./bin/phpdc.phpr $@ | tee decompiled.php 
     244        case "$1" in 
     245        *.cpp.php) 
     246            cpp -C -P -traditional-cpp -DPHP_VERSION=$phpVersion $1 \ 
     247            | sed -r -e 's#^ +##g' -e 's#\t +#\t#g' -e 's#____#__#g' > sample.php || exit $? 
     248            shift 
     249            ./php-cli -c devel.ini ./bin/phpdc.phpr sample.php "$@" | tee decompiled.php 
     250            ;; 
     251        *) 
     252            ./php-cli -c devel.ini ./bin/phpdc.phpr "$@" | tee decompiled.php 
     253            ;; 
     254        esac 
    245255        return 
    246256        ;; 
     
    348358 
    349359for phpbasename in "${dirs[@]}"; do 
     360    phpVersion=${phpbasename%%-*} 
     361    phpVersion=${phpVersion##php} 
     362    phpVersion=${phpVersion/./} 
     363    case "$phpVersion" in 
     364    ??) phpVersion="${phpVersion}0";; 
     365    ?) phpVersion="${phpVersion}00";; 
     366    esac 
     367 
    350368    # devel actions 
    351369    case "$1" in 
  • trunk/mod_disassembler/sample.cpp.php

    r1331 r1334  
    11<?php 
    2  
    3 /* >= PHP 5.3 
     2#if PHP_VERSION >= 500 
     3#   define ClassClassName ClassName 
     4#   define PublicMethod public 
     5#else 
     6#   define ClassClassName classname 
     7#   define PublicMethod 
     8#   define abstract 
     9#   define innerIf_ innerif_ 
     10#   define emptySwitch emptyswitch 
     11#   define defaultSwitch defaultswitch 
     12#endif 
     13#if PHP_VERSION >= 520 
     14#else 
     15#   define __callStatic __callstatic 
     16#   define __toString __tostring 
     17#endif 
     18#if PHP_VERSION >= 530 
     19 
    420namespace ns; 
    5 // */ 
    6  
    7 abstract class ClassName 
     21#endif 
     22 
     23abstract class ClassClassName 
    824{ 
     25#if PHP_VERSION >= 500 
    926    const CONST_VALUE = 'A constant value'; 
    1027 
     
    3148    /** doc */ 
    3249    protected $protected_property = array(2, 'str'); 
    33  
    34     /** doc */ 
    35     public function __construct($a, $b) 
     50#else 
     51    var $property = array( 
     52        array('array'), 
     53        'str' 
     54        ); 
     55#endif 
     56 
     57#if PHP_VERSION >= 500 
     58    /** doc */ 
     59#endif 
     60    PublicMethod function __construct($a, $b) 
    3661    { 
    3762        echo CONST_VALUE; 
     63#if PHP_VERSION >= 500 
    3864        echo ClassName::CONST_VALUE; 
    3965        empty(ClassName::$classProp); 
     
    4268        ClassName::$classProp = 1; 
    4369        echo ClassName::$classProp; 
     70#endif 
    4471        empty($obj->objProp); 
    4572        isset($obj->objProp); 
     73#if PHP_VERSION >= 500 
    4674        unset($obj->objProp); 
     75#endif 
    4776        $obj->objProp = 1; 
    4877        echo $obj->objProp; 
    4978        empty($this->thisProp); 
    5079        isset($this->thisProp); 
     80#if PHP_VERSION >= 500 
    5181        unset($this->thisProp); 
     82#endif 
    5283        $this->thisProp = 1; 
    5384        echo $this->thisProp; 
     85#if PHP_VERSION >= 500 
    5486        unset($array['index']->valueProp); 
     87#endif 
    5588        unset($obj->array['index']); 
    5689        unset($this->array['index']); 
     
    72105        empty($array['index']->indexProp); 
    73106        isset($array['index']->indexProp); 
     107#if PHP_VERSION >= 500 
    74108        unset($array['index']->indexProp); 
     109#endif 
    75110        $array['index']->indexProp = 1; 
    76111        echo $array['index']->indexProp; 
    77112        empty($GLOBALS['var']->indexProp); 
    78113        isset($GLOBALS['var']->indexProp); 
     114#if PHP_VERSION >= 500 
    79115        unset($GLOBALS['var']->indexProp); 
     116#endif 
    80117        $GLOBALS['var']->indexProp = 1; 
    81118        echo $GLOBALS['var']->indexProp; 
    82     } 
     119        ClassName::__construct(); 
     120        echo __CLASS__; 
     121        echo __METHOD__; 
     122        echo __FUNCTION__; 
     123        $this->methodCall(); 
     124#if PHP_VERSION >= 500 
     125        throw new Exception(); 
     126        new Exception(); 
     127#endif 
     128    } 
     129#if PHP_VERSION >= 500 
    83130 
    84131    /** doc */ 
    85132    abstract public function abastractMethod(); 
    86  
    87     /** doc */ 
    88     public function method($a = NULL, $b = NULL) 
    89     { 
    90     } 
    91  
    92     /** doc */ 
    93     public function publicMethod(ClassName $a = NULL, $b = 2) 
    94     { 
    95     } 
     133#endif 
     134 
     135#if PHP_VERSION >= 500 
     136    /** doc */ 
     137#endif 
     138    PublicMethod function method($a = NULL, $b = NULL) 
     139    { 
     140    } 
     141#if PHP_VERSION >= 500 
    96142 
    97143    /** doc */ 
     
    117163        return 'private'; 
    118164    } 
    119 } 
     165#endif 
     166} 
     167#if PHP_VERSION >= 500 
    120168 
    121169interface IInterface 
     
    123171    public function nothing(); 
    124172} 
     173#endif 
    125174 
    126175function f1($f) 
     
    128177    echo __FUNCTION__; 
    129178    echo $f; 
     179#if PHP_VERSION > 550 
    130180 
    131181    foreach ($a as $b) { 
     
    134184 
    135185    yield($f); 
    136 } 
     186#endif 
     187} 
     188#if PHP_VERSION >= 500 
    137189 
    138190final class Child extends ClassName implements IInterface 
     
    141193    { 
    142194        parent::__construct(); 
    143         ClassName::__construct(); 
    144         echo __CLASS__; 
    145         echo __METHOD__; 
    146         echo __FUNCTION__; 
    147         throw new Exception(); 
    148         $this->methodCall(); 
    149195    } 
    150196 
     
    194240    } 
    195241} 
     242#endif 
    196243 
    197244if ($late) { 
    198245    class LateBindingClass 
    199246    { 
    200         public function __construct() 
     247        PublicMethod function __construct() 
    201248        { 
    202249        } 
     
    216263$object = new ClassName(); 
    217264$object = new $className(); 
     265#if PHP_VERSION >= 500 
    218266$result = $object instanceof ClassName; 
    219267$cloned = clone $object; 
     268#endif 
    220269$a = 1; 
    221270$a = $b + $c; 
     
    284333$a = isset($object->prop); 
    285334$a = empty($object->prop); 
     335#if PHP_VERSION >= 500 
    286336unset($object->prop); 
     337#endif 
    287338$a = isset($this->prop); 
    288339$a = empty($this->prop); 
     340#if PHP_VERSION >= 500 
    289341unset($this->prop); 
    290342$a = isset(ClassName::$prop); 
    291343$a = empty(ClassName::$prop); 
    292344unset(ClassName::$prop); 
     345#endif 
    293346$a = (int) $b; 
    294347$a = (double) $b; 
     
    307360$a = $b && $c; 
    308361$a = $b || $c; 
     362#if PHP_VERSION >= 500 
    309363 
    310364do { 
     
    318372            echo $e; 
    319373        } 
     374#if PHP_VERSION >= 550 
     375        finally { 
     376            echo 'inner finally'; 
     377        } 
     378#endif 
    320379 
    321380        echo 'outer try 2'; 
     
    324383        echo $e; 
    325384    } 
     385#if PHP_VERSION >= 550 
     386    finally { 
     387        echo 'outer finally'; 
     388    } 
     389#endif 
    326390} while (0); 
     391#endif 
    327392 
    328393if (if_()) { 
     
    435500} 
    436501 
    437 switch (emptySwitch()) { 
     502switch (defaultSwitch()) { 
    438503default: 
    439504} 
     
    453518include 'include.php'; 
    454519include_once 'include_once.php'; 
    455 echo __FILE__; 
    456 echo __LINE__; 
    457  
    458 /* 
     520echo ____FILE____; 
     521echo ____LINE____; 
     522#if PHP_VERSION >= 530 
    459523echo 'PHP 5.3+ code testing'; 
    460524const CONST_VALUE = 1; 
     
    514578    $total += $pricePerItem * $quantity * ($tax + 1); 
    515579}; 
    516 // */ 
     580#endif 
    517581exit(); 
    518582 
Note: See TracChangeset for help on using the changeset viewer.