* acl4のもくじ
-(by [[K]], 2026.01.24)
** (0) 概要
-acl4はK(=川合)が作っているC言語用のライブラリです。主に自分の開発を楽にするために作っています。
-このプロジェクトでは「ライブラリ自作駆動開発」ということをやっています(造語)。
-''「自分でいい道具を作る → それを使ってさらにいい道具を作る → それを使って・・・」''というサイクルを繰り返して、短期間でたくさんの成果を上げる手法です。
-最近の成果(2026.04.25): &size(20){[[a4_p0007]]: プリプロセッサ処理をする関数を作ったら、いろんな言語が簡単に作れるかもしれない可能性が出てきました!};
-最近の成果(2026.05.04): &size(20){[[a4_p0008]]: プリプロセッサを使って、Cコンパイラ・アセンブラ・C言語のJITコンパイラを簡単に作りました};
-ライブラリ自作駆動開発:
--アプリケーションを作る際に、うまく汎用的に書けた関数を自作ライブラリに加えていく。
--アプリを作り直すときは、ライブラリを活用できるので、開発が速くなる。
--ライブラリは自分の財産。ここが大きくなれば、以降の開発は加速する。
-これを見て
--「acl4に出てきた〇〇みたいな関数は確かに便利かもしれないから、自分が普段使いしている言語に移植してみた」
--「acl4使ってこんなプログラム書いてみたよ」
--「〇〇関数のこの仕様は違う気がしたので、自分はこう作ってみた」
--「ライブラリ自作駆動開発をやってみました!」
-みたいに話が広がったら、公開してよかったなーと思います。
** (1) acl4ライブラリ( acl4v1 )
-[[a4_0016]]: 主要な標準関数をすべてインクルード、便利関数・便利マクロ、デバッグ支援関数(malloc_など)
-[[a4_0017]]: vector<char> を参考にして作った VecChr クラス(動的可変長配列)、簡単な Key-Value Store を提供する Set0 クラス
-[[a4_0018]]: トークンを切り出す Token0/Token1 クラス、かっこでくくられた構造を切り分ける parseArgs など
-[[a4_0019]]: VecChrに対するprintf・VecChrに対するファイル入出力関数
-[[a4_0020]]: プリプロセッサ用のクラス(SourceFiles、Eval、If)
-[[a4_0021]]: プリプロセッサ用の関数群(#define関係)
-[[a4_0022]]: プリプロセッサの main 関数など
-[[a4_0023]]: 簡易な仮想マシン関数 A4vm_exec0 など
-[[a4_t0002]]: (補助ライブラリ)WindowsのAPIを使ってグラフィックウィンドウを開いて描画
-[[a4_t0003]]: (補助ライブラリ)ミニコンパイラなど
//-[[a4_0001]]: static_, class_, errExit, コメント受付先の紹介 など
//-[[a4_0002]]: List (双方向リスト), malloc_, free_, realloc_ など
//-[[a4_0003]]: VecChrの基本関数群 (動的配列)
//-[[a4_0004]]: VecChr_printf, VecChr_readFile, VecChr_writeFile など
//-[[a4_0005]]: Set0 (シンプルな連想コンテナ)
//-[[a4_0006]]: Token1_get (トークンの頭出し)
//-[[a4_0007]]: parseArgs など (カッコ内の記述のパースを支援する)
//-[[a4_0008]]: VecChr_iniArg など (コマンドラインでファイルを指定する際の処理を簡略化)
//-[[a4_0009]]: Preprocessor_Define など (プリプロセッサの #define 処理を支援)
//-[[a4_0010]]: Preprocessor_If など (プリプロセッサの #if 処理を支援)
//-[[a4_0011]]: Preprocessor_SourceFile, SourceFiles など
//-[[a4_0012]]: Preprocessor_define5~7 など
//-[[a4_0013]]: Preprocessor_incl0, put0, line, main など(''プリプロセッサ完成''、サンプルは13行で作るプリプロセッサ!)
//-[[a4_0014]]: A4vm_exec0 など(C言語インタプリタなどを作る際に使う予定の仮想マシン、サンプル多数)
** (2) acl4を使ったプログラム例
-[[a4_p0007]]: プリプロセッサ処理をする関数を作ったら、いろんな言語が簡単に作れるかもしれない可能性が出てきました!
-[[a4_p0008]]: プリプロセッサを使って、Cコンパイラ・アセンブラ・C言語のJITコンパイラを簡単に作りました
//-[[a4_p0001]]: (~a4_0007) #defineしかできない簡易プリプロセッサ
//-[[a4_p0002]]: (~a4_0008) 45行の「式の評価」プログラム
//-[[a4_p0003]]: (~a4_0009) 上記2つをマージして、式の評価プログラムで#defineが使えます![119行]
//-[[a4_p0004]]: (~a4_0013) プリプロセッサを利用して短時間でアセンブラを作りました
//-[[a4_p0005]]: (~a4_0013) プリプロセッサを利用して短時間で仮想マシンを作りました
//-[[a4_p0006]]: (~a4_0013) プリプロセッサを利用して短時間でトランスパイラを作りました
** (3) 開発ログなど
-[[a4_log]]: acl4の開発ログ
-[[a4_comments]]: (開発ログ以外の)こめんと欄
-[[a4_links]]: acl4を使っている人、刺激を受けて自分なりのライブラリを作っている人の紹介
** (4) その他
//-[[a4_d0001]]: 現在開発中のプリプロセッサについて
//-[[a4_d0002]]: ここまでの開発速度について(a4_0001~0013)
//-[[a4_d0003]]: acl4v010のダウンロードページ
-(2026.04.11) [[a4_d0004]]: typedDef について
-(2026.04.15) [[a4_d0005]]: a_DbgObjInf の使い方
-(2026.05.06) https://essen.osask.jp/files/pr20260506b_acl4.pdf : 新しい言語の作り方
-(2026.05.06) https://essen.osask.jp/files/pr20260505b_acl4.pdf : 新しい言語の作り方
-(acl4v1のダウンロードページは近日中に準備します: それまでは [[a4_p0008]] の(8)で代用してください)
//** (5)
//-[[a25_acl4_log01]]: acl4の開発ログ #01 (←結構迷走していた時期)
//-[[a25_acl4_log02]]: acl4の開発ログ #02 (←結構迷走していた時期)
//-[[a25_acl4_log03]]: acl4の開発ログ #03 (←結構迷走していた時期)
//-[[a4_log04]]: acl4の開発ログ #04
//-[[a4_log05]]: acl4の開発ログ #05
//-[[a4_log06]]: acl4の開発ログ #06
//-[[a4_log07]]: acl4の開発ログ #07
//-[[a4_log08]]: acl4の開発ログ #08