なんとなくスクリプト言語を作ってみたくなったので、東方のような弾幕ゲーで敵の行動,弾幕パターンを記述するためのスクリプト言語を作ってみました。 (最近のゲーム業界ではわざわざDSLを作るより、LuaやHaxeのような汎用的なスクリプト言語と組み合わせるのが普通みたいですが) 近年コンパイラ基盤の普及で、比較的コンパイラ開発の敷居は下がってると思いますが、せっかくなので今回はLLVMなどのコンパイラ基盤を使わず、フロントエンドから バックエンド,インタプリタまで全て自力でフルスクラッチ開発してみました。 またパーサージェネレーターなども一切使っていません。 github.com フロントエンド 文法はLL(k)のような固定長ではなく任意長先読みで、パックラット構文解析器を実装しました。例えば敵の弾幕スクリプトは以下のように書きます。 let count=0; let cx=GetCenter