Changeset 1441 for trunk


Ignore:
Timestamp:
2013-11-06T16:45:19+01:00 (6 months ago)
Author:
moo
Message:

make sample work for all beside decompiler

Location:
trunk/devel
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/devel/run

    r1416 r1441  
    130130 
    131131if [[ $# -eq 0 ]]; then 
    132     set -- $action "${args[@]}" 
     132    set -- "${args[@]}" 
    133133fi 
    134134 
     
    234234 
    235235    if [[ -z $1 ]]; then 
    236         set -- devel.php 
     236        set -- devel/sample.cpp.php 
    237237    fi 
    238238 
    239239    cmd=() 
     240    phpApp=() 
    240241    tracer=() 
    241242 
    242243    # run utils {{{1 
    243244    case "$1" in 
    244     dc) 
    245         shift 
    246         case "$1" in 
    247         *.cpp.php) 
    248             < "$1" \ 
    249             sed -r -e 's#__#____#g' \ 
    250             | cpp -C -P -traditional-cpp -DPHP_VERSION=$phpVersion \ 
    251             | sed -r -e 's#^ +##g' -e 's#\t +#\t#g' -e 's#____#__#g' > sample.php || exit $? 
    252             shift 
    253             ./php-cli -c devel.ini ./bin/phpdc.phpr sample.php "$@" | tee decompiled.php 
    254             ;; 
    255         *) 
    256             ./php-cli -c devel.ini ./bin/phpdc.phpr "$@" | tee decompiled.php 
    257             ;; 
    258         esac 
    259         return 
    260         ;; 
    261245    retest) 
    262246        shift 
     
    319303    *) 
    320304        case "$1" in 
     305        dc) 
     306            shift 
     307            cmd=(./php-cli -c devel.ini) 
     308            phpApp=(./bin/phpdc.phpr) 
     309            ;; 
    321310        dop) 
    322311            shift 
    323312            cmd=(./php-cli -c devel.ini) 
    324             set -- ./bin/phpdop.phpr "$@" 
     313            phpApp=(./bin/phpdop.phpr) 
    325314            ;; 
    326315        fcgi) 
     
    342331    esac 
    343332 
     333    # hack sample.cpp.php {{{1 
     334    case "$1" in 
     335    *.cpp.php) 
     336        < "$1" \ 
     337        sed -r -e 's#__#____#g' \ 
     338        | cpp -C -P -traditional-cpp -DPHP_VERSION=$phpVersion \ 
     339        | sed -r -e 's#^ +##g' -e 's#\t +#\t#g' -e 's#____#__#g' > devel.php || exit $? 
     340        shift 
     341        set -- devel.php "$@" 
     342        ;; 
     343    esac 
     344 
    344345    # run {{{1 
    345     commandLine=("${tracer[@]}" "${cmd[@]}" "$@") 
     346    set -- "${tracer[@]}" "${cmd[@]}" "${phpApp[@]}" "$@" 
    346347 
    347348    case "${cmd[0]}" in 
    348349    *php-fpm*) 
    349350        stopfpm 
    350         hiecho Starting fpm "${commandLine[@]}" ... 
    351         "${commandLine[@]}" 
     351        hiecho Starting fpm "$@" ... 
     352        "$@" | tee output.php 
    352353        echo -n "Ctrl-C to stop" 
    353354        trap cleanfpm SIGINT SIGTERM exit 
    354355        cat > /dev/null || true 
    355356        stopfpm 
     357        return 
    356358        ;; 
    357359    *) 
    358         hiecho "${commandLine[@]}" 
    359         "${commandLine[@]}" 
     360        hiecho "$@" 
     361        "$@" | tee output.php 
    360362        ;; 
    361363    esac 
  • trunk/devel/sample.cpp.php

    r1436 r1441  
    1818 
    1919namespace ns; 
     20#define _Exception \Exception 
    2021#endif 
    2122 
     
    3132        CONST_VALUE => CONST_VALUE 
    3233        ); 
     34    static public $classProp; 
    3335    static public $static_const1 = CONST_VALUE; 
    3436    static public $static_const2 = self::CONST_VALUE; 
     
    6264    /** doc */ 
    6365    protected $protected_property = array(2, 'str'); 
     66    public $array = array(); 
    6467#else 
    6568    var $property = array( 
     
    7275    /** doc */ 
    7376#endif 
    74     PublicMethod function __construct($a, $b) 
     77    PublicMethod function f1() 
     78    { 
     79    } 
     80 
     81    PublicMethod function f2() 
     82    { 
     83    } 
     84 
     85    PublicMethod function __construct($arg1, $arg2) 
    7586    { 
    7687        static $array = array( 
     
    7990            CONST_VALUE => CONST_VALUE 
    8091            ); 
    81         static $a = 1; 
     92        static $static = 1; 
    8293        static $str = 'string'; 
    8394        echo CONST_VALUE; 
     
    8697        empty(ClassName::$classProp); 
    8798        isset(ClassName::$classProp); 
    88         unset(ClassName::$classProp); 
    8999        ClassName::$classProp = 1; 
    90100        echo ClassName::$classProp; 
    91101#endif 
    92         empty($obj->objProp); 
    93         isset($obj->objProp); 
    94 #if PHP_VERSION >= 500 
    95         unset($obj->objProp); 
    96 #endif 
    97         $obj->objProp = 1; 
    98         echo $obj->objProp; 
     102        $object = $this; 
     103        $object->a = 1; 
     104        $object->b = 2; 
     105        $object->prop = 'prop'; 
     106        empty($object->objProp); 
     107        isset($object->objProp); 
     108#if PHP_VERSION >= 500 
     109        unset($object->objProp); 
     110#endif 
     111        $object->objProp = 1; 
     112        echo $object->objProp; 
    99113        empty($this->thisProp); 
    100114        isset($this->thisProp); 
     
    107121        unset($array['index']->valueProp); 
    108122#endif 
    109         unset($obj->array['index']); 
     123        unset($object->array['index']); 
    110124        unset($this->array['index']); 
    111125        empty($_GET['get']); 
     
    129143        unset($array['index']->indexProp); 
    130144#endif 
     145        $array['index'] = $object; 
    131146        $array['index']->indexProp = 1; 
    132147        echo $array['index']->indexProp; 
     148        $GLOBALS['var'] = $object; 
    133149        empty($GLOBALS['var']->indexProp); 
    134150        isset($GLOBALS['var']->indexProp); 
     
    138154        $GLOBALS['var']->indexProp = 1; 
    139155        echo $GLOBALS['var']->indexProp; 
    140         ClassName::__construct(); 
    141         ClassName::$func(); 
     156 
     157        if (0) { 
     158            ClassName::__construct(); 
     159        } 
     160 
     161        $method = 'method'; 
     162        ClassName::$method(); 
    142163        echo __CLASS__; 
    143164        echo __METHOD__; 
    144165        echo __FUNCTION__; 
    145         $this->methodCall(); 
    146 #if PHP_VERSION >= 500 
    147         throw new Exception(); 
    148         new Exception(); 
    149 #endif 
    150     } 
    151 #if PHP_VERSION >= 500 
    152  
    153     /** doc */ 
    154     abstract public function abastractMethod(); 
     166        $this->method(); 
     167#if PHP_VERSION >= 500 
     168        try { 
     169            throw new _Exception(); 
     170            new _Exception(); 
     171        } 
     172        catch (_Exception $e) { 
     173        } 
     174#endif 
     175 
     176        $a = 1; 
     177        $b = $c = 2; 
     178        $a = $b + $c; 
     179        $a = $b + 1; 
     180        $a = 1 + $b; 
     181        $a = $b - $c; 
     182        $a = $b * $c; 
     183        $a = $b / $c; 
     184        $a = $b % $c; 
     185        $a = $b . $c; 
     186        $a = $b = $c; 
     187        $a = $b & $c; 
     188        $a = $b | $c; 
     189        $a = $b ^ $c; 
     190        $a = ~$b; 
     191        $a = -$b; 
     192        $a = +$b; 
     193        $a = $b >> $c; 
     194        $a = $b >> $c; 
     195        $a = $b == $c; 
     196        $a = $b === $c; 
     197        $a = $b != $c; 
     198        $a = $b < $c; 
     199        $a = $b <= $c; 
     200        $a = $b <= $c; 
     201        $a = $b++; 
     202        $a = ++$b; 
     203        $a = $object->b++; 
     204        $a = ++$object->b; 
     205        $a = $b--; 
     206        $a = --$b; 
     207        $a = $object->b--; 
     208        $a = --$object->b; 
     209        $a = !$b; 
     210        $a = $b === $c; 
     211        $a = $b !== $c; 
     212        $a = $b << 2; 
     213        $a = $b >> 3; 
     214        $a += $b; 
     215        $a -= $b; 
     216        $a *= $b; 
     217        $a /= $b; 
     218        $a <<= $b; 
     219        $a >>= $b; 
     220        $a &= $b; 
     221        $a |= $b; 
     222        $a .= $b; 
     223        $a %= $b; 
     224        $a ^= $b; 
     225        $a = 'a' . 'b'; 
     226        $a = 'a' . 'abc'; 
     227        @f1(); 
     228        print('1'); 
     229        $array = array('index' => 1); 
     230        $a = $array['index']; 
     231        $a = $object->prop; 
     232        $a = $this->prop; 
     233        $array['index'] = 1; 
     234        $object->prop = 1; 
     235        $this->prop = 1; 
     236        $a = isset($b); 
     237        $a = empty($b); 
     238        unset($b); 
     239        $b = 1; 
     240        $a = isset($array['index']); 
     241        $a = empty($array['index']); 
     242        unset($array['index']); 
     243        $a = isset($object->prop); 
     244        $a = empty($object->prop); 
     245#if PHP_VERSION >= 500 
     246        unset($object->prop); 
     247#endif 
     248        $a = isset($this->prop); 
     249        $a = empty($this->prop); 
     250#if PHP_VERSION >= 500 
     251        unset($this->prop); 
     252        $a = isset(ClassName::$prop); 
     253        $a = empty(ClassName::$prop); 
     254#endif 
     255        $a = (int) $b; 
     256        $a = (double) $b; 
     257        $a = (string) $b; 
     258        $a = (array) $b; 
     259        $a = (object) $b; 
     260        $a = (bool) $b; 
     261        $a = (unset) $b; 
     262        $a = (array) $b; 
     263        $a = (object) $b; 
     264        $a = ($b ? $c : $d); 
     265        $a = (f1() ? f2() : f3()); 
     266        ($a = $b) xor $c; 
     267        ($a = $b) and $c; 
     268        ($a = $b) or $c; 
     269        $a = $b && $c; 
     270        $a = $b || $c; 
     271#if PHP_VERSION >= 530 
     272        echo $this::CONST_VALUE; 
     273        echo $object::CONST_VALUE; 
     274        echo CONST_VALUE; 
     275        $this::method(); 
     276        $object::method(); 
     277        $a = $b ?: $d; 
     278        $a = ($b ?: $d) + $c; 
     279        $a = f1() ?: f2(); 
     280        $a = ClassName::f1() ?: ClassName::f2(); 
     281        $a = ($b ? $c : $d); 
     282        $a = ($b ? $c : $d) + $c; 
     283        $a = (f1() ? f3() : f2()); 
     284 
     285        if ($b ?: $d) { 
     286            echo 'if ($b ?: $d)'; 
     287        } 
     288 
     289        if (($b ?: $d) + $c) { 
     290            echo 'if (($b ?: $d) + $c)'; 
     291        } 
     292 
     293        if (f1() ?: f2()) { 
     294            echo 'if (f1() ?: f2())'; 
     295        } 
     296#endif 
     297    } 
     298 
     299    public function __destruct() 
     300    { 
     301    } 
     302#if PHP_VERSION >= 500 
     303 
     304    /** doc */ 
     305    abstract public function abstractMethod(); 
    155306#endif 
    156307 
     
    195346#endif 
    196347 
    197 function f1($f) 
     348function f1() 
     349{ 
     350} 
     351 
     352function f2() 
     353{ 
     354} 
     355 
     356function f3() 
     357{ 
     358} 
     359 
     360function generator($f) 
    198361{ 
    199362    echo __FUNCTION__; 
     
    214377    public function __construct() 
    215378    { 
    216         parent::__construct(); 
     379        parent::__construct('a', 'b'); 
    217380    } 
    218381 
     
    220383    { 
    221384        parent::__destruct(); 
    222         functionCall(); 
    223385    } 
    224386 
     
    228390    } 
    229391 
     392    public function abstractMethod() 
     393    { 
     394    } 
     395 
     396    public function nothing() 
     397    { 
     398    } 
     399 
    230400    public function __toString() 
    231401    { 
     
    263433} 
    264434#endif 
     435 
     436define('CONST_VALUE', 'const value'); 
     437$late = isset($_ENV['LATE']); 
    265438 
    266439if ($late) { 
     
    282455echo "\r"; 
    283456echo "\n"; 
    284 echo str_replace(array('a' => 'a', 'b' => 'c'), 'b'); 
    285 $object = new ClassName(); 
     457var_dump(array('a' => 'a', 'b' => 'c'), 'b'); 
     458$object = new Child(); 
     459$className = 'ns\\Child'; 
    286460$object = new $className(); 
    287461#if PHP_VERSION >= 500 
    288 $result = $object instanceof ClassName; 
     462$result = $object instanceof Child; 
    289463$cloned = clone $object; 
    290464#endif 
    291 $a = 1; 
    292 $a = $b + $c; 
    293 $a = $b + 1; 
    294 $a = 1 + $b; 
    295 $a = $b - $c; 
    296 $a = $b * $c; 
    297 $a = $b / $c; 
    298 $a = $b % $c; 
    299 $a = $b . $c; 
    300 $a = $b = $c; 
    301 $a = $b & $c; 
    302 $a = $b | $c; 
    303 $a = $b ^ $c; 
    304 $a = ~$b; 
    305 $a = -$b; 
    306 $a = +$b; 
    307 $a = $b >> $c; 
    308 $a = $b >> $c; 
    309 $a = $b == $c; 
    310 $a = $b === $c; 
    311 $a = $b != $c; 
    312 $a = $b < $c; 
    313 $a = $b <= $c; 
    314 $a = $b <= $c; 
    315 $a = $b++; 
    316 $a = ++$b; 
    317 $a = $obj->b++; 
    318 $a = ++$obj->b; 
    319 $a = $b--; 
    320 $a = --$b; 
    321 $a = $obj->b--; 
    322 $a = --$obj->b; 
    323 $a = !$b; 
    324 $a = $b === $c; 
    325 $a = $b !== $c; 
    326 $a = $b << 2; 
    327 $a = $b >> 3; 
    328 $a += $b; 
    329 $a -= $b; 
    330 $a *= $b; 
    331 $a /= $b; 
    332 $a <<= $b; 
    333 $a >>= $b; 
    334 $a &= $b; 
    335 $a |= $b; 
    336 $a .= $b; 
    337 $a %= $b; 
    338 $a ^= $b; 
    339 $a = 'a' . 'b'; 
    340 $a = 'a' . 'abc'; 
    341 @f1(); 
    342 print('1'); 
    343 $a = $array['index']; 
    344 $a = $object->prop; 
    345 $a = $this->prop; 
    346 $array['index'] = 1; 
    347 $object->prop = 1; 
    348 $this->prop = 1; 
    349 $a = isset($b); 
    350 $a = empty($b); 
    351 unset($b); 
    352 $a = isset($array['index']); 
    353 $a = empty($array['index']); 
    354 unset($array['index']); 
    355 $a = isset($object->prop); 
    356 $a = empty($object->prop); 
    357 #if PHP_VERSION >= 500 
    358 unset($object->prop); 
    359 #endif 
    360 $a = isset($this->prop); 
    361 $a = empty($this->prop); 
    362 #if PHP_VERSION >= 500 
    363 unset($this->prop); 
    364 $a = isset(ClassName::$prop); 
    365 $a = empty(ClassName::$prop); 
    366 unset(ClassName::$prop); 
    367 #endif 
    368 $a = (int) $b; 
    369 $a = (double) $b; 
    370 $a = (string) $b; 
    371 $a = (array) $b; 
    372 $a = (object) $b; 
    373 $a = (bool) $b; 
    374 $a = (unset) $b; 
    375 $a = (array) $b; 
    376 $a = (object) $b; 
    377 $a = ($b ? $c : $d); 
    378 $a = (f1() ? f2() : f3()); 
    379 ($a = $b) xor $c; 
    380 ($a = $b) and $c; 
    381 ($a = $b) or $c; 
    382 $a = $b && $c; 
    383 $a = $b || $c; 
    384465#if PHP_VERSION >= 500 
    385466 
     
    419500#endif 
    420501 
    421 if (if_()) { 
     502if ('if()') { 
    422503    echo 'if'; 
    423504 
    424     if (innerIf_()) { 
     505    if ('innerIf()') { 
    425506        echo 'if innerIf'; 
    426507    } 
    427508} 
    428 else if (elseif_()) { 
     509else if ('elseif_()') { 
    429510    echo 'else if'; 
    430511 
    431     if (innerIf_()) { 
     512    if ('innerIf_()') { 
    432513        echo 'if innerIf'; 
    433514    } 
    434515} 
    435516else { 
    436     if (innerIf_()) { 
     517    if ('innerIf_()') { 
    437518        echo 'if innerIf'; 
    438519    } 
     
    456537} 
    457538 
     539$array = array( 
     540        array('a' => 'b') 
     541        ); 
    458542foreach ($array as $value) { 
    459543    foreach ($value as $key => $value) { 
     
    464548} 
    465549 
    466 switch ($normalSwitch) { 
     550switch ('$normalSwitch') { 
    467551case 'case1': 
    468552    echo 'case1'; 
    469553 
    470     switch ($nestedSwitch) { 
     554    switch ('$nestedSwitch') { 
    471555    case 1: 
    472556    } 
     
    479563 
    480564default: 
    481     switch ($nestedSwitch) { 
     565    switch ('$nestedSwitch') { 
    482566    case 1: 
    483567    } 
     
    487571} 
    488572 
    489 switch ($switchWithoutDefault) { 
     573switch ('$switchWithoutDefault') { 
    490574case 'case1': 
    491575    echo 'case1'; 
     
    497581} 
    498582 
    499 switch ($switchWithMiddleDefault) { 
     583switch ('$switchWithMiddleDefault') { 
    500584case 'case1': 
    501585    echo 'case1'; 
     
    511595} 
    512596 
    513 switch ($switchWithInitialDefault) { 
     597switch ('$switchWithInitialDefault') { 
    514598default: 
    515599    echo 'default'; 
     
    525609} 
    526610 
    527 switch (emptySwitch()) { 
    528 } 
    529  
    530 switch (defaultSwitch()) { 
     611switch ('emptySwitch()') { 
     612} 
     613 
     614switch ('defaultSwitch()') { 
    531615default: 
    532616} 
     
    536620} 
    537621 
    538 while (1) { 
     622$a = true; 
     623while ($a) { 
    539624    declare (ticks=1) { 
    540625        echo 2; 
    541626    } 
     627    $a = false; 
    542628} 
    543629 
     
    549635echo __LINE__; 
    550636#if PHP_VERSION >= 530 
    551 echo 'PHP 5.3+ code testing'; 
    552 const CONST_VALUE = 1; 
    553 echo $this::CONST_VALUE; 
    554 echo $a::CONST_VALUE; 
    555 echo CONST_VALUE; 
    556 $this::__construct(); 
    557 $obj::__construct(); 
    558 $a = $b ?: $d; 
    559 $a = ($b ?: $d) + $c; 
    560 $a = f1() ?: f2(); 
    561 $a = C::f1() ?: C::f2(); 
    562 $a = ($b ? $c : $d); 
    563 $a = ($b ? $c : $d) + $c; 
    564 $a = (f1() ? f3() : f2()); 
    565  
    566 if ($b ?: $d) { 
    567     echo 'if ($b ?: $d)'; 
    568 } 
    569  
    570 if (($b ?: $d) + $c) { 
    571     echo 'if (($b ?: $d) + $c)'; 
    572 } 
    573  
    574 if (f1() ?: f2()) { 
    575     echo 'if (f1() ?: f2())'; 
    576 } 
    577  
    578637echo 'goto a'; 
    579638goto a; 
Note: See TracChangeset for help on using the changeset viewer.