7

C++の解析の問題はよく知られています。純粋に構文に基づいて解析することはできません。LALRとして実行することはできません(用語が何であれ、私は言語理論家ではありません)、言語仕様は無数のページです。私の個人的なプロジェクトの代替言語を決定しています。

ヴァラは良い言語のように見えます。C ++に比べて多くの改善がありますが、解析するのも同じくらい面倒ですか?または、コンパイラ、ソースアナライザ、その他のツールのパーサーを構築するのに適した、きちんとした妥当な長さの形式文法、または論理的な説明がありますか?

答えが何であれ、それはGenieの代替構文に当てはまりますか?

(Dやその他のC ++以降の非VM言語についてはそれほど強くはありませんが、私も疑問に思います。)

4

2 に答える 2

8

C ++は、一般的に使用される構文解析で最も複雑な(最も複雑ではないにしても)プログラミング言語の1つです。特に難しいのは、名前検索ルールとテンプレートインスタンス化ルールです。C ++は、LALR(1)パーサー(BisonやYaccによって生成されたパーサーなど)を使用して解析できませんが、必ず解析可能です(結局、人々はC ++を毎日解析するのに問題のないパーサーを使用します)。(実際、G ++の初期バージョンは、BisonのGeneralized LRパーサーフレームワーク上に構築されていました。実際にはそうではありません。コメントを参照してください)最近、手書きの再帰下降パーサーに置き換えられました)

一方、ValaがC++に対してどのような「改善」を提供しているかはわかりません。言語は同じ目標を達成しようとしています。一方で、Valaインターフェースで書かれたGTK+以外ではおそらくあまり見つけられないでしょう。あなたは他のすべてにCインターフェースを使用することになりますが、それはそのような言語を使用することのポイントを本当に打ち負かします。

複雑さのためにC++が気に入らない場合は、代わりにObjective-Cを検討することをお勧めします。これはCの単純な拡張であり(Valaのように)、プログラマーのコミュニティがはるかに大きいためです。 Macの土地のすべての基盤を考えれば、それを利用できます。

最後に、言語自体を解析することの難しさが、プログラマーがその言語を使用するために気にかけるべきことと関係している理由がわかりません。ちょうど私の2セント。

于 2010-11-27T05:25:55.373 に答える
6

とても簡単です。libval​​aを使用すると、独自に作成する代わりに、構文解析、セマンティック分析、およびコード生成の両方を実行できます。

于 2010-12-08T11:12:55.833 に答える