Pascal風の簡易言語 Duskul に関する資料です。
Duskulはプロジェクト演習の課題として設計された言語で、言語処理系を題材に、 より本格的な C言語の学習を行うことを目的としています。 C言語による、N. Wirthの PL/0 の「リバイバル」と言えるでしょう。
再帰呼び出しも可能な Pascal風言語を、インタプリタ方式で実行可能です。 扱えるデータ型は整数型だけで、配列も存在しませんが、 ソースコードを改造して機能を追加できます。
言語処理系の開発ではなく、アドバンストなC言語の学習が主眼ですので、 すべてをわざわざC言語で記述してあります。 特別なライブラリや yacc/lex などは必要としません。
ソースプログラムはすべて C言語で、ヘッダ、コメント行もすべて含めて2516行と なっています。独力、あるいは数人で改良するには適当な規模です。 なお、演習で利用することを考え、必要以上のコメントは付いていません。
Duskul処理系は、各種Unix系OS上での動作を確認しています(*1)。 基本的に Cコンパイラ(C11準拠)と標準ライブラリがあればコンパイルできる はずです。
(*1) macOS High Sierra から Big Surまで、Power PC上の Mac OS 10.5 Leopard、 さらに Ubuntu などの各種Linux。
(1) 掛け算の九九の表を印刷するプログラム例です。
proc main() for var i = 1 to 9 do for var j = 1 to 9 do var m m = i*j if m < 10 then print(" ") end print(" ", m) end println() // 改行する end end
(2) 「ハノイの塔」のプログラムです。
proc hanoi(a, b, c, n) if n <= 0 then return end call hanoi(a, c, b, n - 1) println(a, " -> ", b) call hanoi(c, b, a, n - 1) end proc main() var n println("円盤の枚数を入力") input(n) call hanoi(1, 2, 3, n) end
Duskul のソフトウェアおよびそれに付随するドキュメント、サンプルプログラムに関する 著作権は荻原剛志に属しています。
ただし、内容に変更を加えて再配布を行うのでない限り、利用許諾は必要ありません。 学校などの講義、演習で利用する場合、改変して利用しても構いません (ご一報頂ければ有り難いです)。
なお、本ソフトウェアを利用したことによって何らかの損害が発生した場合、作者は一切の責任を負いません。