河野真治 @ 琉球大学情報工学です。

> 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
河野真治 @ 琉球大学工学部情報工学科