我有一個關於詞法分析的基本問題。 由於詞法分析器(這是一個接受詞位並生成令牌的DFA)可以產生可以是標識符([az]/[AZ]/[0-9],知道數字而不是第一個字符的標記),關鍵字(if,else ,..),運營商&分隔符。詞法分析器如何識別給定的標記是標識符還是關鍵字?
因此,如果像'whil'這樣的詞語出現了。那麼這將是一個詞彙錯誤,說明它不是一個有效的關鍵字或它會被接受爲標識符(變量),因爲詞法分析器不考慮語法是否正確?
詞法分析器對標識符,關鍵字,操作符使用不同的DFA嗎?
我有一個關於詞法分析的基本問題。 由於詞法分析器(這是一個接受詞位並生成令牌的DFA)可以產生可以是標識符([az]/[AZ]/[0-9],知道數字而不是第一個字符的標記),關鍵字(if,else ,..),運營商&分隔符。詞法分析器如何識別給定的標記是標識符還是關鍵字?
因此,如果像'whil'這樣的詞語出現了。那麼這將是一個詞彙錯誤,說明它不是一個有效的關鍵字或它會被接受爲標識符(變量),因爲詞法分析器不考慮語法是否正確?
詞法分析器對標識符,關鍵字,操作符使用不同的DFA嗎?
然後會是一個詞法錯誤,指出它不是一個合法的關鍵字
號
還是會被接納爲標識符(變量)
是,然後解析器會出現語法錯誤。
作爲詞法分析器不考慮語法是否正確?
詞法分析器對語法沒有任何瞭解。這是解析器的工作。
要標識關鍵字, 它使用相同的標識符正則表達式,然後檢查關鍵字表,不管它是否爲關鍵字。如果是,那麼關鍵字,否則它是一個標識符
感謝您的答案。詞法分析器是否對標識符,關鍵字,運算符和分隔符使用不同的DFA? – Sumit
我從來沒有見過這樣做,我沒有看到任何理由。 * flex(1)*使用單個DFA。 – EJP