Changeset 1334 in svn


Ignore:
Timestamp:
2013-07-19T07:03:07+02:00 (2 years ago)
Author:
Xuefer
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.