プログラミング

C言語

【入門】プログラミング言語を自作する方法⑩|配列の実装とリファクタリング

プログラミング言語を作ってみた⑩。今回は自作言語「五右衛門」に配列を実装しました。配列の構文追加からAST生成、名前解決と型チェック、バイトコード生成、VMでの配列管理・要素の読み書きまで詳しく解説します。
C言語

【入門】プログラミング言語を自作する方法⑨|関数の実装

プログラミング言語を作ってみた⑨。今回は自作言語「五右衛門」に関数を実装しました。関数のパースやASTの生成、名前解決と型チェック、バイトコード生成、VMでの関数呼び出しや再帰処理について詳しく解説します。
C言語

【入門】プログラミング言語を自作する方法⑧|型システムと型チェックの実装

プログラミング言語を作ってみた⑧。今回は自作言語「五右衛門」に型システムと型チェックを実装しました。静的型付けを採用した五右衛門の型定義やASTへの型情報の付与、名前解決と連携した型チェック、文字列の出力処理について詳しく解説します。
C言語

【入門】プログラミング言語を自作する方法⑦|Parserのリファクタリングと名前解決の実装

プログラミング言語を作ってみた⑦。今回は自作言語「五右衛門」のParserをリファクタリングし、名前解決を実装しました。ASTを活用したParser・名前解決・コード生成の責務分離や、シンボルテーブルを使った変数の解決について詳しく解説します。
C言語

Zend Engineを読む② | 文字列が出力されるまで

PHPの実行エンジンであるZend Engineを解読!Lexer、Parser、Execute、zend_writeまでデバッグを仕込み、文字列が出力されるまでの処理の流れをトレース・解説します。
C言語

【入門】プログラミング言語を自作する方法⑥|変数スコープを実装する

プログラミング言語を作ってみた⑥。今回は自作言語「五右衛門」に変数スコープを実装しました。グローバル変数・ローカル変数のスコープ管理、コンパイラの実装、VMでのローカル変数管理の仕組みを詳しく解説します。
C言語

【入門】プログラミング言語を自作する方法⑤|for文・AST・自動テストでコンパイラを改善

プログラミング言語を作ってみた⑤。前回の続きです。今回は自作言語「五右衛門」にfor文を実装するとともに、AST(抽象構文木)の導入と自動テストを追加しました。コンパイラの設計改善や品質向上について解説します。
PHP

Zend Engineを読む① | php-srcをビルドする

PHPの実行エンジンであるZend Engineを読むための準備として、php-srcのビルド方法を解説します。buildconf、configure、makeの役割やデバッグビルドの手順も紹介します。
C言語

【入門】プログラミング言語を自作する方法④|if文・while文を実装して制御構文を作る

プログラミング言語を作ってみた④。前回の続きです。今回は自作言語「五右衛門」に if文・while文を実装しました。2パスコンパイルとバックパッチを用いて、JZやJMPによる制御構文を実現します。
PHP

PHPライブラリを作ってPackagist公開するまで

PHPライブラリを作ってPackagistに公開をしてみました。公開するまでの流れや、自動テストについてなど、開発サイクルを備忘録として残しておきます。