13

言語、文法、構文解析、コンパイラに関する試験の準備をしています。それは実際には私のお茶ではなく、私が見つけたほとんどのリソースは、数学の言語を使用して、交易条件のさまざまな用語を定義し、英語やフランス語に固執するのではなく、知る必要のあるさまざまな概念を説明しています。そのため、勉強を続ける動機を見つけることと、理論を理解することの両方に問題があります。だからここに私の質問があります:私がこれらすべてを学ぶ「楽しい」方法をどこで見つけることができるか知っている人はいますか?または、少なくとも、この主題を処理するためのより「具体的」で「数学的な」方法ではないかもしれません。

私は以下をカバーする必要があるので、これらの主題に関するものは何でも歓迎です!

  • 構文解析(LR、LL、...)
  • 文法(文脈自由、決定論的、...)
  • 構文解析静的フロー分析
  • ソフトウェアのメンテナンスとユーザーインターフェイスへの依存に関する影響分析
  • 動的解析

ここに、私が探しているものを理解するためだけに、技術的な主題について学ぶための「楽しい」(引用符に重点を置いた)方法と見なすことができるいくつかのリソースがあります。

4

2 に答える 2

15

短時間で多くのことを学びたい場合は、Val Schorreの1964年のメタコンパイラについて学びましょう(そうです、正しく読んでください)。自己コンパイル型メタコンパイラの構築方法に関するMetaIIの論文です。景品として、彼らは従来の言語もコンパイルすることができます!このペーパーは10ページで、メタコンパイラー(仮想マシンがそれを信じるかどうかにかかわらず)について説明し、2つの完全なコンパイラーが含まれています。

コンパイラーがそれ自体をコンパイルする方法を理解するとき、最終的に到達する驚くべき瞬間があります...私は70年代の初めにこの方法でコンパイラーを学びました、そしてそれは私が今までに受けた中で最も記憶に残るコンパイラーのレッスンです。これは楽しいです。

JavaScriptのすべてのアイデアを実装するオンラインチュートリアルがここにあります。。

チュートリアルの著者は、「ドメイン分析」という用語を発明したジェームズ・ネイバーズ博士です。彼は、Dracoという名前の壮大なドメイン固有コードジェネレーターにMetaIIのアイデアを使用しました。Dracoは、私が過去30年間構築してきたコンパイラのようなツールへの重要なインスピレーションでした。

于 2011-04-21T03:55:05.830 に答える
0

どのくらい準備する必要がありますか?コンパイラーを学ぶための「最良の」方法は、コンパイラーを掘り下げることです。それを行うための最良の方法は、これまでに書かれたコンパイラーに関する最高の本を使用することです 。安くはありませんが、おそらく、魔法のコンパイラについて学ぶための最も具体的で数学的な方法ではありません。

点滅するライトがなく、Rubyガイドのような素晴らしいフォントにはなりませんが、すべてのプログラマーが読むべきトップ10の本に含まれています。

于 2011-04-21T03:37:43.883 に答える