タグ付けされた質問 「syntax」

3
コードブロックを定義するためにインデントを使用しているPythonと前身以外のプログラミング言語はどれですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Computer Science Stack Exchangeで話題になるようにします。 9か月前に閉鎖されました。 Pythonは、コードブロックを構文的に定義するためにインデントを使用することで有名です。(Python言語リファレンスの複合ステートメントを参照してください)。Pythonを何年も使用した後も、この構文機能に興味を持ち、非常に気に入っています。 しかし、私は疑問に思います:Pythonとその「前身」(*)言語ABC は別として、コードブロックの定義にインデントを使用する他のプログラミング言語がありますか?コードブロックとは、ここでは「何らかの方法で1つのコンポーネントとして扱われる複数のステートメント」を意味します。 私は特に実用的なプログラミング言語に興味がありますが、難解な言語にも言及する価値があります。 (*): " Predecessor "は、ここでより良い単語を知るというデフォルトの単語の選択です。グイド・ヴァンロッサム、パイソンの作成者は、PythonとABCに関するインデントとの関係を説明したインタビューで、このような「グループ化するためのインデントの選択は、Pythonで新しい概念ではありませんでした。私はABCからこれを継承しました。」

2
BNFが言語を記述するための不十分な手法と見なされるのはなぜですか?
私は先日、C。Stracheyによる論文「プログラミング言語の基本概念」を読んでいました。その中で、私には非常に奇妙なものを読んでいました。直接引用する(奇妙な部分を強調表示した): 今日存在するような、特定のクラスの文法(BNFまたはコンテキストフリーとして知られている)を記述する一般に知られている方法がある状況に直面すると、これらの数学者の最初の本能はBNFの限界を調査することです —面倒で人工的な構造を犠牲にしても、BNFで表現できますか?これはいくつかの数学的な関心の問題かもしれませんが(意味が何であれ)、BNFよりも構文を記述するより良い方法を発見することが重要であるプログラミング言語との関連性はほとんどありません(これはすでにALGOLには不便で不十分です)。それは、私たちがすでに不十分な技術であるとわかっていることの可能な限界を調べることです。 著者がBNFを言語を記述するための不十分な手法であると考える特定の理由はありますか?単一のBNF文法では構文しか記述できず、セマンティクスは記述できないためでしょうか(ただし、属性文法に変換することで、操作セマンティクスを記述するように拡張できます)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.