しばらくの間、私の脳内でガタガタ鳴っていました。
Compilers/Flex/Byson などについて調査しましたが、「解析スタック」や実装方法について詳しく説明している参考文献は見つかりませんでした。
私が追いつくことができる良い参考文献を知っている人はいますか?
編集:すべてのコンパイラのリファレンスに感謝します。リストされている本をいくつか取得しますが、私の主な焦点は解析自体であり、後でそれをどうするかではありません。
しばらくの間、私の脳内でガタガタ鳴っていました。
Compilers/Flex/Byson などについて調査しましたが、「解析スタック」や実装方法について詳しく説明している参考文献は見つかりませんでした。
私が追いつくことができる良い参考文献を知っている人はいますか?
編集:すべてのコンパイラのリファレンスに感謝します。リストされている本をいくつか取得しますが、私の主な焦点は解析自体であり、後でそれをどうするかではありません。
ドラゴンブック!私はごく最近、RTF で書かれたテンプレート ファイルの処理言語用のコンパイラ (PHP で!) を作成するために使用しました...
これは、あなたが正解として受け入れたディマの答えに応えたものです。構文解析がオートマトン理論に関連していると言うのは悪い答えではありませんが、ここにはいくつかの誤解があるように感じます。
まず、有限状態オートマトンは正規言語(正規表現など)しか認識できません。文脈自由言語を認識するためには、より強力なプッシュダウンオートマトンが必要です。より多くのオートマトンとさまざまなクラスの言語との関係については、 http://en.wikipedia.org/wiki/Automata_theory#Classes_of_automataを参照してください。
第二に、構文解析は認識とは異なります。文字列を認識すると、その文字列が文法によって生成された言語であるかどうかだけがわかります。パーサーの目的は、より難しく、一般的により有用な具体的な構文ツリーを作成することです。
さまざまな構文解析方法があるため、知っておくべきことを説明する特定のリファレンスを1つ提供するのは困難です...一般に、トップダウン構文解析とボトムアップ構文解析の違いを理解する必要があります。ただし、興味がある場合に備えて、パーサージェネレーターで使用されるいくつかの一般的な手法の概要を次に示します。
編集: この質問に再びぶつかって申し訳ありません。正規言語と有限オートマトン、文脈自由言語とプッシュダウンオートマトンの関係を説明する2つの優れた投稿に出くわしました。この質問を見つけた人にとっては興味深いかもしれません。
パーサーは基本的に有限状態マシン、別名有限オートマトンです。有限オートマトンや、正規言語、文脈自由言語などについて説明している計算理論に関する本を見つける必要があります。
「Brinch Hansen on Pascal Compilers」をチェックしてください.. 1985 年に書かれたものですが、昨年のコンパイラのコースで使用しました (もちろん Per Brinch Hansen によるものです)。非常に簡潔で、コンパイラの設計に役立つことがわかりました。
アマゾンを試す
コンパイラの構築はその好例の 1 つにすぎません