5

私の先生は、プログラミングのクラスで最高の成績を取りたいのなら、Simple Source Code Converter をコーディングするべきだと言いました。

Python から Ruby (彼が言った最も単純なもの)

ここで質問です。Python から Ruby への単純なソース コード コンバーターをコーディングするのはどれくらい難しいのでしょうか。(ファイル制御、制御ステートメントなどを変換する必要があります)

何かヒントはありますか?

コンバーターのコーディングにはどの言語を使用すればよいですか (C#、Python、または Ruby)?

4

8 に答える 8

13

あなたの先生はいじっていると思います - これはかなり難しいです。これは、コンパイラ/インタプリタを作成することと同じです。あなたがこのプロジェクトにどれだけの時間を割くことができるかはわかりませんが、通常は数人年の作業を見込んでいます。

于 2009-02-23T21:52:37.067 に答える
2

あるタイプのコードを別のタイプに変換するプログラムの名前があります。これはコンパイラと呼ばれます (ターゲット言語が実際にはマシン コードまたはバイト コードではない場合でも)。

コンパイラーは、コンピューター・サイエンスの最も簡単な部分ではありません。これは、コンバーターのおもちゃの実装以上のものであるとすれば、大規模なプロジェクトになるプロジェクトです。これは、ほとんどの大学のコースでクラスのプロジェクトで通常行うものよりも確実に大きいものです。(多くの/ほとんどのコンパイラ コースでさえ、かなり控えめなプロジェクトの割り当てがあります。

どの言語を使用するかについて。まあ、あなたが最もよく知っている人がおそらく答えです。ただし、何か新しいことを学びたい場合は、パターン マッチング機能を備えた Haskell が適しています。(免責事項: Haskell は初めてです。) (真剣にコンパイラを使いたい場合は、Yacc を使用することもできます。)

以下も参照してください: The Dragon Compiler Bookは、コンパイラを作成する予定がない場合でも学習する価値があります。

于 2009-02-23T22:10:00.193 に答える
0

最初の単純さは、Python のすべての有効なセマンティクスを処理するのではなく、そのサブセットのみを処理することを意味する場合があります。

私が最初に入手するのは、どの大学の図書館でも見つけることができるドラゴンの本です。2 番目に行うことは、Python の構文とセマンティクスのコピーを取得することです。

于 2009-02-23T21:52:02.903 に答える
0

言語は問題ではありません。ストリングスで最も快適なものを選択してください。

ヒントは、キーワードに辞書/ルックアップ配列を使用することです。最も難しいのは、Python で空白を処理することです。

于 2009-02-23T21:52:16.773 に答える
0

構文を正しく変換する十分な巧妙な正規表現を考え出すのと同じくらい簡単です。
Ruby と python の構文は非常に似ているため、それほど難しくありません。
たとえば、リスト内包表記のように、Ruby には存在しない Python にあるものを書き直すには、少し余分な作業が必要になる場合があります。

于 2009-02-23T21:51:58.897 に答える
0

あなたの先生は少し悪ふざけをしているようですね!

于 2009-02-23T22:10:25.747 に答える
0

最も難しい部分は、セマンティクスを維持することです。

Ruby では、メタクラスの代入、関数デコレーター、yield ベースのジェネレーターをどのように処理しますか? 私は Ruby の経験がないので、何が直接サポートされているのかわかりません。

于 2009-02-23T22:19:49.343 に答える
0

Brainf***と Cの間のコンバーターを作成するのはかなり簡単です。それはあなたがする必要があることの範囲をはるかに下回っていると確信しています (文脈自由文法の解析について教えている何かを推測しています)。本当に簡単にできます。

于 2009-02-23T22:21:04.723 に答える