2

私がブラッシュアップするかもしれないと言われた分野の1つが「動的計画法言語」であるというインタビューがあります。それで、私は今週末、サンプルコードとして持ってくるものを書くのに費やすかもしれないと思いました。:-)

もちろん、時間の制約を考えると、私は非常に基本的なものを書くことを計画しており、できれば非常に簡単にできる言語やツールセットを使用することを計画しています。私の経験のほとんどはPythonでの経験ですが、タスクが簡単になる(そしてそれほど長くはかからない)場合は、少し時間をかけて新しいことを学ぶつもりです。これを簡単にするツールや言語に関して、誰かが私にアドバイスをくれますか?

4

7 に答える 7

4

非常に単純な解釈言語を書きたい場合は、FORTH を検討する必要があります。lexer は単純で (トークンはスペースで区切られています)、インタープリターも非常に単純です。そして、FORTH が古すぎる場合は、Scheme を見てください。小さな Scheme インタープリターを非常に迅速に構築できます。

于 2010-01-09T17:40:02.667 に答える
1

LexとYaccの字句解析と構文解析、およびそれらのPython実装を確認することをお勧めします。

于 2010-01-09T17:32:39.367 に答える
1

私はsparkを使用して、かなりフル機能のDSLを作成し、2〜3日(単体テストを含む)で私の古いプロジェクトの複雑な条件を表現しました。

Spark(および他のそのようなモジュール)は、字句および構文アナライザーを作成するために必要なツールを提供するため、Pythonでは非常に簡単なはずです。Pythonディクショナリを使用して簡単なシンボルテーブルを簡単に実装でき、Pythonに変換してevalするか、低レベルの言語に移動して実行できます。

于 2010-01-09T17:33:47.377 に答える
1

解釈された言語 != 動的言語ですが、その逆が常に当てはまるとは限りません。

Python (== 動的) に精通している場合は、インタープリター言語と動的言語の違いを聞かれない限り、面接でうまくいくはずです。

于 2010-01-09T17:45:24.690 に答える
0

通訳者の典型的なおもちゃの例はBrainfuck言語です。

于 2010-01-12T01:51:55.907 に答える
0

パーサーコンビネーターでHaskellを使用することをお勧めします。パーサーコンビネーターを強化するために、ウィキペディアの記事を使用しないでください。それは非常に理論的であり、おそらくあなたを混乱させるでしょう。代わりに、優れたGrahamHuttonの論文を使用してください。

インタプリタとコンパイラは、ML / Haskellファミリーの言語の「キラーアプリ」であり、興味深いものをすばやく構築できることに驚かれると思います。

開始するには、PhilWadlerの論文TheEssence of Functional Programmingを読むことをお勧めします。この論文には、モナドを使用して編成された多数のサンプルインタープリターが含まれています。例の通訳はよく整理されていてわかりやすいと思いますが、その論文のモナドの説明は頭を痛めるかもしれません。

1つの例をより詳細に説明する非常に優れたブログエントリもあります。Haskellで書かれたLispインタプリタについて説明しています。この記事には、HaskellとJavaの比較もいくつか含まれています。これにより、多くのコンパイラー作成者が、コンパイラーとインタープリターの作成にオブジェクト指向言語よりも関数型言語を好む理由を理解できます。

楽しむ!!!!

于 2010-01-09T21:10:43.677 に答える