2009-08-05 2 views
5

どのような実際のプログラミング言語は、インタプリタを書くのが簡単ですか?どのような実際のプログラミング言語は、インタプリタを書くのが簡単ですか?

私のための「Real」言語は、あなたが実際に小さなプロジェクトを書くことができる言語であり、簡単なものではありません。Esoteric programming languages

(私はいくつかの趣味のプロジェクトをやりたいので、私は聞いてるのよ。)

+2

エスペラントは簡単です。 :) –

答えて

10

SICPのMetacircular Evaluatorは、SchemeにSchemeインタプリタを書くための練習です。それは共通の初年度のCSプロジェクトです。

+2

知らない人にとって、SICPは、コンピュータプログラムの構造と解釈という本(無料オンライン)です。 –

5

元ワースのパスカルは良い候補である、と多くの場合、パーサジェネレータでデモとして使用します。その文法はLL(1)であり、そうでなければかなり厳密なので、解析するのは簡単です。機能的にはかなり制限されています。

あなたはそれをちょっと試してみてください。ポインタを無視したいが、ファーストクラスの文字列をサポートすることができます。

3

Scheme、または任意のLispバリアント。

+4

これは少し欺瞞的です。構文解析は確かに難解ではありませんが、Schemeや他のLISPの機能はインタープリタで実装するのが非常に困難です。特にラムダとテール再帰には多くの落とし穴があります。 – Imagist

0

私はマークアップ構文言語、Liranと思うでしょう。 構文ブロックは、開始タグと終了タグの間にコードブロックが明確に描かれているため、構文解析が容易です。理論的には、コードを直接解析して実行するレベル1のインタープリタを簡単に構築することができます。

そこには、私があなたが目指しているような文脈で意味のあることをするマークアップ言語はありません(あなた自身で書くことができます)。次に最善の選択肢は、おそらく最小限の機能を備えた言語であり、手続き型プログラミングをサポートしないことが好ましい。 BASICのような言語は、レベル1のインタプリタを作成するのは簡単です。

おそらく、多くの構文要素を提供せず、やや複雑な初期スクリプト言語です。私は何も考えていない。

しかし、おそらく最も良い選択肢は、あなた自身の言語を設計することです。インタプリタは、言語構文の深い知識があり、インタプリタで自分の言語構造とセマンティクスを定義できるため、構築が容易になります。あなたはそれが簡単にしたい言及しなかったので

レベル1インタプリタ上の主張がある

...。

+0

レベル1はどういう意味ですか? –

1

私の大学のオペレーティングシステムのクラスで私たちはDb(Dフラット)のインタプリタを書いた。それは非常に簡単でよく定義されていました。

+0

あなたはこの言語に関連する何かへのリンクを提供してください、私はそれを見つけることができないようです... –

+0

あなたは正しいです。私はクラスのウェブサイトを除いて、オンラインでもそれを見つけることができませんでした。おそらく、それは私たちのクラスのために作られた言語です。いずれにしても、ここに公式言語定義へのリンクがあります: http://users.csc.calpoly.edu/~keen/courses/csc430/handouts/assignments/hw3.pdf – bkritzer

+0

おそらく、博士号に記載されているシステムに基づいています。 Dobbs Journal(その周りの誰でもDDJについて知っていますか?)この記事(http://www.drdobbs.com/184410754)ではAl StevensがD-Flatのアイデアを発表し、その後の記事ではその開発について述べました。 – Kwebble

4

さて、私は答えに少なくとも15文字が必要なので、これをタイプするだけですが、Forth実装の最小実装は2 KBです。このような小さなコアを持つ可能性のある他の言語について考えるのは難しいです。関数が手でコンパイルされた元のMcCarthy 1958 Lispかもしれません。

5

言語Forthのプログラミングのためのインタプリタを書くのは非常に簡単です(一度知っていれば、それはよくわかりますが、 が文書化されています)。 Forthは実世界の問題 に40年以上使用されています。

恐らく簡単すぎるかもしれませんが、その過程で多くを学ぶでしょう。

快活なレオブロディさんの chapter 9に「FORTH起動」(オンライン)導入されます。

+1

リンクをありがとう。 –