質問

より多くのプログラミング知識に対する不死の渇望を解消するための継続的な努力の中で、バイトコードにコンパイルする(少なくとも今のところ)シンプルなプログラミング言語を作成しようとする考えを思いつきました。問題は、言語設計に関する最初のことを知らないことです。パーサーを構築するための方法論と、すべての言語に必要な基本機能についてアドバイスはありますか?言語設計のためにどの読書をお勧めしますか?どのくらいのレベルで撮影する必要がありますか?インラインアセンブラを許可するgccに似た方法でバイトコードをインライン化できる機能を含めることができると期待するのは非現実的ですか?コンパイラの作成に適したCとJavaのコードが主に見られますか?

役に立ちましたか?

解決

非常に多くの方法があります...

スタック言語とForthを調べることができます。他の言語の設計に関してはあまり有用ではありませんが、非常に迅速に行うことができます。

関数型言語を調べることができます。それらのほとんどは、いくつかの単純な概念に基づいており、単純な解析を行います。そして、それでも、それらは非常に強力です。

そして、それから、伝統的な言語。彼らは最も難しいです。構文解析をすり抜けるには、字句解析器、パーサー、LALR文法、LL文法、EBNF、および通常の言語について学ぶ必要があります。

バイトコードをターゲットとするのは良いアイデアではありません–それ以外のことを行うことは、学習エクササイズにおいて、非常識であり、ほとんど役に立たない。

好意的に、コンパイラに関する本やチュートリアルを検索してください。

CまたはJavaのどちらでもかまいません。オブジェクト指向はこのタイプのタスクに適しているため、Javaにはおそらく利点があります。私の個人的な推薦はScalaです。この種のことを行うのは良い言語であり、途中で言語設計に関する興味深いことを教えてくれます。

他のヒント

コンパイラに関する本を最初に読むことをお勧めします。

実際に何が起こっているのかを理解するために、Cでコードを書くことをお勧めします。

次の本を読むことをお勧めします:

ANTLR

言語デザインパターン

これにより、カスタム言語用のパーサー、レクサー、およびコンパイラを作成するためのツールとテクニックが提供されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top