関連事項についてC言語のif文が関係する部分の構文規則を抜粋すると、次のようになっている。「ぶらぶら」とか「宙ぶらりん」と訳すのが適切と思われる。第2回に『dangleには「未解決の問題、分からないこと、腑に落ちない点」という訳もある。そっちかも』という指摘があった)。問題とは、次のような問題である。次のようなソースコードがあったとする。対応するように見えるが、上の構文規則からは、次のようにも解釈できる。5;文法的には、この問題の解決は簡単で、「elseは直前のifに対応する」という附則があることにすれば良い。する」というデフォルトの振舞により解決される。処理系」の最後の部分を見よ)。Javaは構文規則を複雑にして解決している。いうよりは、もっと他のところにある。ambiguous)であることそのものよりも、上で示した例のように、インデントに騙されて誤解しうる、という可読性の低下、というよりは誤読性を高くしうる、という点が問題である。存在によって(セミコロンの有無・要不要が、構文規則全体を見渡していまいちアドホックである、という遠因もある)、次のような誤読性の高いコードが書けることは有名であろう。この行は無条件に実行されるこのような問題の解決は、すでにいくつも行われている。以下、それを紹介する。どれにも、制御構造のifの帰結節はブロックとする、という考えが基本としてある。if文の規則を、次のようなものにする、というものである。<ブロック>]C言語やJavaでも、コーディング規則としてこのように書くことを決めている組織なども多い。次のようにどんどん深くなってしまう。場合は例外とする、という例外を入れる。いったようなキーワードを追加して問題を回避する(昔、後付けで「構造化」したBasicで、ELSEIFの無いものがあり、ひどいプログラムになってしまうものがありました。いうフレーズでキーワードとすることも考えられます。昔は結構そういう複数のワードから成るキーワードがありましたが、最近はあまり見ないように思います)。Perlがこのような規則を採用しており、Go言語も採用した。必要なくなるので、Go言語では取っ払われている。Rubyなどでは、ブロックではなく、最初から複数の文が書ける、という規則にしている。end)のようなキーワードが必要になる(さらにRubyではブロックをもっと別のものとして活用している)。Pythonではオフサイドルール(wikipedia:オフサイドルール)によりブロックの範囲が決まる。ファイナルファン...2013-12-03SFLのstageとNSLのseqを攻略するSFL(NSL)の基本は簡単です。月別アーカイブMathJax読み込みはてなブログをはじめよう!metanestさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。