* KH-FDPL の結論
-(by [[K]], 2016.10.25)

** (1)
-KH-FDPLはいわば#defineだけで機械語(とはいわないまでも、単純なアセンブラみたいな言語)に置換することを目指していた。
-しかし#defineでは以下みたいなことができる。
 #define FOR(a, b, c)  for (a = b; a < c; a++) {
 #define NEXT          }
-こういうことをされると、中カッコの入れ子関係は処理系には容易にはわからなくなってしまう。それでいいのか。
-正常に動く場合はいいかもしれないけど、エラーがある場合はどうなのか。もはや要領を得ないエラーしか出せないのではないか?

** (2)
-次の問題。
 #define a + b  ADD(a, b)
-たとえばこういう記述ルールを書きたいのだけど、果たしてこれは可能なのか。例えばこういうのを考えてみる。
 (1+2)+3
-もしカッコを特別扱いしないのであればこれは、ADD((1,2)+3)になりはしないか?
-これを避けるにはどの#defineから適用するかを決定したり、どこで語が切れるのか、カッコは複数の語をひとかたまりにすることができることを、固定されたルールにする必要がある。

** (3)
-そんなこんなで、とにかく#defineでカッコの合計数が増減するのはいけないことだと思った。それで、
 #define FOR a=b TO c d NEXT    for (a = b; a < c; a++) { d }
-とすることを思いついたのだけど、この場合、FORを入れ子にされても対応関係がちゃんととれるのか?
 FOR i=0 TO 10
   FOR i=0 TO 10
     hoge
   NEXT
 NEXT
-最初のFORが最初のNEXTと対応しないなんてどうしてわかるだろう。
-だめだ。全然だめだ。

** (4)
-結局、()や{}は単純な置換によってどうこうできるものじゃないんだ。ここをどうにかしようと思ったのが敗因だ。
-構文を超越できる#defineは悪なんだ。これを一切許さないようにしたほうがいいくらいなんだ。
-そうとも、#defineなんて引数が複数回評価されてしまうことがあったりして、諸悪の根源だ。
-よし#define的なものを一切許さない言語を作ろう。それでどこまでできるかを考えよう。→[[Essen]]

* KH-FDPLのWikiについて
-ということで、KH-FDPLは終了したわけですが、しかしKH-FDPLのWikiの中には、すでに[[persistent_C]]が居候しており、さらに[[Essen]]や[[uxf]]も間借りしていて、Wikiだけが使われ続ける状態になっています。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS