タグ

ブックマーク / blog.freedom-man.com (2)

  • PHPでPHPを実装する

    この記事はPHP Advent Calendar 2019の3日目の記事です。 言語実装入門編として、PHPPHPを実装してみました。 AST生成はPHP-Parserに一任 バイトコードやバイナリ生成などはせず、Tree Walkなインタープリターとして実装 という感じで作っていきます。 実装したものはこちら↓ tzmfreedom/phphp composer global require tzmfreedom/phphp でもインストールできます HelloWorld まずは composer require nikic/php-parser してPHP-Parserを追加します。 基形はこんな感じになります。 <?php require_once 'vendor/autoload.php'; use PhpParser\ParserFactory; use PhpParser\

  • Xdebug, DBGPで簡易リモートデバッガを作る

    Xdebug, DBGPで簡易デバッガを作ってみました。 SimpleDebugger.php この記事はPHP Advent Calendar 2018の23日目の記事です。 Xdebug, DBGPの仕組みについて N番煎じくらいだと思いますが、改めて説明しますと、Xdebugが有効になったPHPを実行するとPHP(以下、クライアント)がDBGPプロトコルでリモートサーバに接続します。リモートサーバはクライアントに対してコマンドを送り、クライアントがコマンドに対応する処理を実行し、レスポンスを返すことで対話的にデバッグできるようになっています。 実装について DBGPはTCPなので、まずはTCPサーバを立ち上げます。 $socket = stream_socket_server("tcp://0.0.0.0:9000", $errno, $errstr); if (!$socket)

  • 1