khfdpl_result1
の編集
http://khfdpl.osask.jp/wiki/?khfdpl_result1
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2016_10
2016_11
2016_12
BracketName
Essen
Essen0
Essen1
Essen2
Essen3
Essen4
EssenMemo0001
EssenMemo0002
EssenMemo0003
EssenMemo0004
EssenMemo0005
EssenMemo0006
EssenMemo0007
EssenMemo0008
EssenMemo0009
EssenMemo0010
EssenMemo0011
EssenR2
EssenR2_ess03f
EssenR2_ess03h
EssenR2_ess03i
EssenR2_ideas
EssenR2_jit00
EssenR2_jit01
FormattingRules
FrontPage
Help
IP
InterWiki
InterWikiName
InterWikiSandBox
K
KHPC
KHPC_v000doc01
KHPC_v001doc01
KHPC_v002doc01
KHPC_v003doc01
MenuBar
OSC
OSC20181027
OSC20190222
OSC20191123
OSC20230401
OSC20230528
OSC20231021
OSC20240310
OSC20241026
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
SltVA
VariableArray
WikiEngines
WikiName
YukiWiki
advcal20161205
advcal20161206
advcal20161209
advcal20161210
advcal20161215
eoml0001
eoml0002
essen_ex01_0001
impressions
kcl_malloc
khfdpl_result1
members
memo0001
memo0002
note0001
note0002
note0003
note0004
note0005
note0006
oldworks
oldworks00
oldworks06
oldworks12
oldworks13
osaskjp_index
persistent_C
populars
pr20161105
pr20161105b
scsc
seccamp2017
spam_test
uxf
uxf_01
uxf_02
uxp
* 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]] ** (5) -でも今にして思えば、カッコや中カッコの規則を壊さない範囲でなら、置換方式で押し通すことも無理じゃない気がする。むしろその方がシンプル? -副作用があるかもしれない問題については、一度一時変数で受け取っておいて、その一時変数を使ってあれこれとやって、最後に一時変数を解放すればいいだけだと思う。 -じゃあ、KH-FDPLを見限ったのは早まった判断だったかも。 -Essenの中で復活させてみるかな・・・。 ** (6) -置換で頑張る方法だと、どうしてもコンパイラ的になる。そしてEssenは変数に型がないので、許されるすべての型のどれが来てもいいように、たくさんのifが必要になる。そうすると、コンパイルっぽいやりかたをするメリットはほとんどない。 * KH-FDPLのWikiについて -ということで、KH-FDPLは終了したわけですが、しかしKH-FDPLのWikiの中には、すでに[[persistent_C]]が居候しており、さらに[[Essen]]や[[uxf]]も間借りしていて、Wikiだけが使われ続ける状態になっています。
タイムスタンプを変更しない
* 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]] ** (5) -でも今にして思えば、カッコや中カッコの規則を壊さない範囲でなら、置換方式で押し通すことも無理じゃない気がする。むしろその方がシンプル? -副作用があるかもしれない問題については、一度一時変数で受け取っておいて、その一時変数を使ってあれこれとやって、最後に一時変数を解放すればいいだけだと思う。 -じゃあ、KH-FDPLを見限ったのは早まった判断だったかも。 -Essenの中で復活させてみるかな・・・。 ** (6) -置換で頑張る方法だと、どうしてもコンパイラ的になる。そしてEssenは変数に型がないので、許されるすべての型のどれが来てもいいように、たくさんのifが必要になる。そうすると、コンパイルっぽいやりかたをするメリットはほとんどない。 * KH-FDPLのWikiについて -ということで、KH-FDPLは終了したわけですが、しかしKH-FDPLのWikiの中には、すでに[[persistent_C]]が居候しており、さらに[[Essen]]や[[uxf]]も間借りしていて、Wikiだけが使われ続ける状態になっています。
テキスト整形のルールを表示する