人間が読めるフレーズや単語(Python、VB.NETなど)で主に構成されているプログラミング言語に対して、開発環境のエラーフィードバックと自動補完を提供するために必要なチェック数が少なく、これは、C言語のコードとは対照的に、コード構造のシンボルや句読点に依存しています。言語エラーの検出と自動補完の複雑さは言語構文に依存しますか?
答えて
私は、経験豊富な/ dozens of language front endsを構築する責任があります。
句読点と句読点の言語は、解析と静的分析が同じように一般的に同じように難しいです。
いずれかの種類の言語を定義する人々は、複雑な構文と複雑な名前解決と型推論規則の両方を備えた洗練された言語(C++、Scala、Ruby)を何十年にもわたって(例えばCOBOLでは1958年) ;コンパイラのベンダーは、奇妙なことをサポートするか、顧客のロックを提供するために(例えば、MSの "マネージドC++"、DLLの宣言など)、わかりにくい構文を追加します。貧弱な定義の第三の問題があります。上位の言語では動作について正確なルールが設定されていますが、多くの言語では実際の実装との辛抱強な試練によって暗いコーナーケースが生成されるような曖昧な定義(PHPなど)があります。
C++が最も悪いです。 C++ 11委員会は大規模な最近のものを混乱させる。私たちは完全なC++パーサを持っていますが、C++ 98実装の上にあるC++ 11のフルネーム解決にも取り組んでいます。 (名前解決コードは約25万行のコードであり、十分ではありません!)
IBM COBOLは近いです。言語はちょうど巨大であり、あらゆる種類の面白い名前解決規則があります(「参照が明白であれば、修飾されていない名前は特定の名前を参照できます」という意味です)。
構文解析や名前/型の解析が終わったら、コントロールフロー、データフロー、ポイントツー分析、レンジアナライザ、コールグラフ構築などになります。初期段階。私たちは、これらのタスクをサポートする本当に良いライブラリを手に入れて、より少ないもので取り除きます。
これを背景分析として、人々が望むスマートな種類の「静的分析」を開始することができます。
もう1人のポスターは、構文エラーからの回復と(重点)「意味のあるエラーメッセージの生成を続ける」と指摘しました。私が言うことができるのは、「アーメン、兄弟」です。これは、部分的なプログラムがあるときに何がうまくいかないかについての議論については、https://stackoverflow.com/a/6657974/120163を参照してください。これは、本質的に、構文エラー修復が修正プログラムで推測されるときに得られるものです。
これは私が探していた答えです。私が言うことができることは、あなたがしていることに感謝しています。これは本当に難しいと思います。 –
よかったよ、ありがとう。私はこの特定のキャリア選択の後にある日があります: - } –
- 1. 自然言語文構造の検索
- 2. CodeMirror - 言語の自動検出
- 3. 言語検出
- 4. クロスプラットフォーム、言語に依存しないGUIマークアップ言語?
- 5. PHPは完全に文脈自由言語ですか、文脈依存部分を持っていますか?
- 6. 自然言語コマンド言語
- 7. VimとPython:言語メソッドの文脈に依存しないオートコンプリート
- 8. 言語に依存しないthemable CSS
- 9. Java言語の構文
- 10. Go言語の構文Confusion
- 11. Chrome:スペルチェックの言語を自動的に検出
- 12. Android言語サポートの検出
- 13. ブルートフォース言語の検出
- 14. ブラウザ言語の検出
- 15. 短い言語の検出
- 16. 多言語のテキストスパム検出
- 17. 言語に依存するアンドロイドアプリランチャーアイコン
- 18. 文章の言語を検出します(20〜200文字)。
- 19. 言語検出を行うための辞書は複数の言語でどこにありますか?
- 20. ユーザーの言語に依存した浮動小数点表現
- 21. ASP.NET MVCの言語依存ルート
- 22. Sitecore 6.2で言語依存サイトを構築する方法は?
- 23. 非正規化混在言語文書用のSolr言語検出更新プロセッサー
- 24. 自動車用プログラミング言語
- 25. 「自己プログラミング言語」とは
- 26. テキストボックス内の複数の単語の自動補完
- 27. ELSEキーワードのないプログラミング言語 - もっと複雑ですか?
- 28. AntlrWorksと言語文法のエラー
- 29. これはどの言語か構文を解読します
- 30. Vim言語固有の構文検証ツールですか?
回避しやすい「より簡単」を定義する前に、「冗長」と「簡潔」を定義してください。 – jason
@Close Voters:この質問は、VBがC#より優れているかどうかではありません。 – GSerg
私の推測は、冗長ではないということです。むしろ、C#ではもっと多くのことが許されているため、パーサーはコード行を解釈する方法が増えています。 – GSerg