web-dev-qa-db-ja.com

通訳の言語

私はJavaでインタープリターを作成して独自のプログラミング言語を作成しようとしていますが、最近、インタープリターはそれが解釈している言語と同じ言語である必要があると言われています。これは本当ですか?次に、何を構築していますか?

1
bhalec

いいえ、それは真実ではありません。

同じ言語を使用するには、その言語用のコンパイラーも必要です。これにより、インタープリターをマシンコードにコンパイルできます。

あなたが持っているすべてが通訳であるならば、あなたはただ通訳になってしまうでしょう。インタープリターを実行するには、インタープリターが必要です。その2番目のインタープリターを実行するには、3番目のインタープリターが必要になります。

10
Simon B

Factorプログラミング言語はJavaインタプリタとして始まり、他の多くのインタプリタと同様です。励ましと啓発のために、以下の本を勉強するか、少なくとも見ることをお勧めします: Seven Languages in Seven週7週間でさらに7つの言語 、および プログラミングの首謀者:主要なプログラミング言語の作成者との会話 。私は常に言語を研究しており、それらについて学び、私がリストしたものは、この主題についての私の好きな本のいくつかですが、もちろん唯一のものだけではありません。

また、私は現在、C#でForthのような連結インタープリターを作成しています。厳密にスペースで区切られ、左から右に厳密に、接尾辞があり、LISPのように同型であるので、これは最も簡単なインタープリターの1つです。したがって、マクロやメタプログラミングは、言語自体と同じ形であり、追加の言語ではありません-CとC++のプリプロセッサマクロのように。 (私が彼らに反対しているわけではありませんが、それはisLISPのようにではなく、メイン言語の上に学ぶまったく新しい言語です。マクロは、言語自体にで記述され、その全機能を備えています。)

最後に、この本 Let over Lambda は、LISPマクロの力をカバーする心を吹き飛ばすものです。そのほとんどをオンラインで見つけました DougのWebサイト 。 「LISPムービングフォースムービングLISP」という章がありますが、まだ読んでいないので、興味をそそられました。

Javaでインタープリターを作成してください。悪臭を放ってはいけません!

また、Factor言語の章の「Seven More Languages」の本を見ると、最初にJavaで書かれたFactorの発明者であるSlava Pestovへのインタビューで、彼は最終的に自分の言語を別の言語に移行した方法を説明しています。 Javaから。彼はコンパイルされたコードに画像モデルを使用し、彼の言語に画像を書き出す能力を与えました。それから彼は仮想マシンを作成し、C言語でREPLインタープリターを作成し、最後に新しいCカーネルにイメージをロードする機能を与え、Javaからイメージを書き出し、イメージを自分のマシンに読み込みました。 Cカーネルバージョン、そしてプレスト、ユーレカ、彼は突然Javaに依存しない新しい言語を手に入れました。そうする必要はありませんが、それはとても興味深いものでした。続けてください!

1

あなたは通訳を書くのに適した言語を求めています。 COBOLインタープリターを作成することもできます。 100万年以内にCOBOLで作成することはありません。

したがって、このステートメントはまったくナンセンスです。さあ、Javaでインタプリタを書いてください。

0
gnasher729