2014-02-06 46 views
1

我有一個關於詞法分析的基本問題。 由於詞法分析器(這是一個接受詞位並生成令牌的DFA)可以產生可以是標識符([az]/[AZ]/[0-9],知道數字而不是第一個字符的標記),關鍵字(if,else ,..),運營商&分隔符。詞法分析器如何識別給定的標記是標識符還是關鍵字?

因此,如果像'whil'這樣的詞語出現了。那麼這將是一個詞彙錯誤,說明它不是一個有效的關鍵字它會被接受爲標識符(變量),因爲詞法分析器不考慮語法是否正確?

詞法分析器對標識符,關鍵字,操作符使用不同的DFA嗎?

回答

1

然後會是一個詞法錯誤,指出它不是一個合法的關鍵字

還是會被接納爲標識符(變量)

是,然後解析器會出現語法錯誤。

作爲詞法分析器不考慮語法是否正確?

詞法分析器對語法沒有任何瞭解。這是解析器的工作。

+0

感謝您的答案。詞法分析器是否對標識符,關鍵字,運算符和分隔符使用不同的DFA? – Sumit

+0

我從來沒有見過這樣做,我沒有看到任何理由。 * flex(1)*使用單個DFA。 – EJP

0

要標識關鍵字, 它使用相同的標識符正則表達式,然後檢查關鍵字表,不管它是否爲關鍵字。如果是,那麼關鍵字,否則它是一個標識符

相關問題