標題是一個問題:單詞「詞法分析器」和「解析器」的同義詞,還是他們不同?似乎維基百科使用這些詞可以互換,但英語不是我的母語,所以我不能確定。單詞「lexer」是單詞「parser」的同義詞嗎?
7
A
回答
7
編號Lexer將輸入流分解爲「單詞」;解析器發現這些「單詞」之間的句法結構。例如,給定輸入:
velocity = path/time;
詞法分析器輸出是:
velocity (identifier)
= (assignment operator)
path (identifier)
/(binary operator)
time (identifier)
; (statement separator)
然後解析器可以建立以下結構:
= (assign)
lvalue: velocity
rvalue: result of
/(division)
dividend: contents of variable "path"
divisor: contents of variable "time"
6
否。詞法分析器將源文本分解爲標記,而解析器則適當地解釋標記序列。
8
詞法分析器被用於分割輸入了轉換爲令牌,而解析器用於從該令牌序列構造抽象語法樹。
現在,您可以說令牌只是字符並直接使用解析器,但通常只需要展望一個令牌以確定接下來要做什麼的解析器通常很方便。因此,在解析器看到它之前,詞法分析器通常用於將輸入劃分爲令牌。
詞法分析器通常使用簡單的正則表達式規則進行描述,這些規則按順序測試。存在諸如lex
之類的工具,其可以從這樣的描述中自動生成詞法分析器。
[0-9]+ Number
[A-Z]+ Identifier
+ Plus
解析器,在另一方面,典型地通過指定一個語法說明。此外,還有一些工具,如yacc
可以從這樣的描述中生成解析器。
expr ::= expr Plus expr
| Number
| Identifier
3
它們不同。
詞法分析器將輸入字符流作爲輸入,並生成令牌(又名「詞法」)作爲輸出。
解析器將令牌(詞位)作爲輸入,並生成(例如)表示語句的抽象語法樹。
然而,這兩者足夠相似,不少人(尤其是那些從來沒有寫過任何類似編譯器或解釋器的人)將它們視爲相同或更常使用「解析器」真正的意思是「詞法分析器」。
1
據我所知,詞法分析器和解析器在意義上是聯合的,但不是確切的同義詞。雖然許多來源確實使用它們作爲類似的詞法分析器(詞法分析器的縮寫)識別與輸入語言相關的標記;而解析器確定令牌流是否符合所考慮語言的語法。
相關問題
- 1. 提取單詞的同義詞
- 2. 查找wordnet中單詞的同義詞
- 3. 獲取單詞的同義詞
- 4. wikionary API - 單詞的詞義
- 5. 打印詞類以及單詞的同義詞
- 6. 名詞同義詞詞網
- 7. 單詞的名詞,動詞,形容詞等的單獨列表
- 8. 查找多詞詞組的同義詞
- 9. 需要自定義同義詞替換文本中的單詞
- 10. 如何在給定單詞的單詞袋詞彙中獲得單詞的id?
- 11. 創建短語詞組的單詞雲,而不是R中的單個單詞
- 12. 簡單單詞 - 同義詞模型,序列化屬性還是關聯?
- 13. 檢索使用wordnet的單詞的同義詞爲R
- 14. 在Python3與nltk如果某個單詞是動詞,如果某個單詞是動詞,名詞.etc
- 15. 在java中查找單詞的同義詞和根
- 16. 列車數據的同義詞單詞英語與opennlp
- 17. 用字符串中的同義詞代替單詞
- 18. Solr - 包含多個單詞的同義詞
- 19. 使用wordnet獲取單詞的最佳同義詞
- 20. 如何在我的模型中設置單詞同義詞?
- 21. 使用詞網找到沒有名詞同義詞或至少有一個名詞同義詞的詞條
- 22. 查找特定單詞後的單詞
- 23. 生成與單詞相關的單詞
- 24. 查找單詞遊戲中的單詞
- 25. Flex如何區分大寫單詞,小寫單詞和單詞?
- 26. Marklogic值詞典和單詞詞典
- 27. 獲取Ruby字符串中特定單詞後的單詞嗎?
- 28. 獲取某個單詞之前和之後的單詞嗎?
- 29. 使用Solr匹配包含相似單詞的單詞嗎?
- 30. MySQL詞+單詞搜索
請注意,「詞法分析器」有時也稱爲「標記器」或「掃描儀」。 – 2011-05-09 18:52:47
@謝謝,我不小心把錯誤寫下來了。我的意思是「詞法分析器是分詞器的同義詞」,所以你的評論其實就是答案。謝謝。 – 2011-05-09 19:00:47
:)不客氣。 – 2011-05-09 19:04:51