2014-02-24 19 views
0

我正在閱讀Dragonbook。編譯器構造中的語法分析過程

在第2章中,它解釋了語法分析過程。我正在努力理解這個過程的全貌。通過閱讀這本書,我有時會對語法分析器中的事情發生的順序感到困惑。

所以從我的理解:

語法分析器包含語法定義,它定義使用上下文無關文法的語法。這基本上是語法分析器的「第一部分」嗎?那麼語法分析器包括的語法定義?

之後,詞法分析器生成的令牌進入語法分析器。語法分析器然後通過CFG檢查字符串輸入是否有效,方法是生成一個分析樹。根據我的理解,這個分析樹最終將變成一個(抽象)語法樹(它比分析樹包含更少的細節)。這棵樹將進入語義分析器。

有人可以確認我對語法分析器的粗略理解是否正確並按照正確的順序?

回答

0

語法分析器包含一個語法定義,它定義了一個使用上下文無關語法的語法。

不。在表驅動解析器中,它包含一個從語法中生成並驅動解析器的表。在手寫解析器中,代碼結構強烈地反映了語法。在任何情況下,說解析器實際上「包含」語法都是正確的。它解析輸入,根據語法,莫名其妙。

這基本上是語法分析器的第一部分嗎?

不,我不知道你從哪裏得到'第一部分'。

那麼語法分析器是否包含語法定義?

只有如上所述。

之後

不,之前

生成的標記由詞法分析器進入語法分析器。語法分析器然後通過CFG檢查字符串輸入是否有效

正確。