Re: else if について
河野真治 @ 琉球大学情報工学です。
> IIJIMA Hiromitsu <delmonta@ht.sakura.ne.jp> writes:
> でも、実用屋の立場からすると、曖昧なコードによるバグ混入を避ける、そのた
> めには少しは美しさを犠牲にするのもやむを得ない、という発想になっておかし
> くないと思います。特に、perl の p は practical の p ですので。
それは理解できます。どっちかっていうと、|,& のネストではまっていた
ことの方が多かった気もする。
まぁ、でも実用的には、if then then else が出て来たときに warning
を出すオプションぐらいで十分かな。
In article <m3ekpusx7i.fsf@nospam.maedapc.cc.tsukuba.ac.jp>, MAEDA Atusi <maeda-news@ialab.is.tsukuba.ac.jp> writes
> 人間にとっての実用面だけじゃなく、理論的にも汚らしくて嫌な感じですよ。
> 曖昧な文法ってのは、文法だけでは構文木の形が決まらないってことですから
> ね。LALR(1)だと、shift/reduce conflictですね。(工夫すれば曖昧でない文
> 法としても書けますが。)
shift/reduce conflictはエラーじゃないですけどね。Perl のYaccも
結構conflictは残っているはずです。
> else ifの連鎖って、K&RでCを勉強して知るまでは必要だとも思わなかったで
> すね。
僕もプログラム書法を見るまでは知らなかったな。でも、アセンブラ
だと、
...
jlt L1
...
j hoge
L1: jlt L2
...
j hoge
L3: jle hoge
...
hoge:
って感じで自然なのは知ってました。あるいは、
if (hoge) { ...; ; ; return; }
if (hage) { ...; ; ; return; }
...; ; ; return;
ですね。
で、これは、
hoge : hoge .....
| hage .....
| huge .....
;
というBNFに対応していて、その順序が決まれば、曖昧さが解消される
っていうのに対応しているわけ ですね。
> Pascalを使っていた頃は、後の(文法的には内側の)ifは字下げして書く
> のが当然だと思っていたから。初めて見た時は「なんて気持ち悪い字下げだ」
> と思いました。
indent ががんがん深くなるのをなんとなくかっこいいと思っていた
時期があったような気がする。今は、結構、下げないように書いて
るな。そのためには、if else if 連鎖は便利ですね。
---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735