我已經做了一個掃描儀,現在我應該做一個解析器。有什麼不同?解析器和掃描儀有什麼區別?
14
A
回答
17
掃描儀只是簡單地將輸入字符串(比如文件)轉換爲令牌列表。這些令牌表示標識符,圓括號,運算符等。
解析器將此列表標記轉換爲樹狀對象,以表示標記如何組合在一起形成一個有凝聚力的整體(有時稱爲句子)。
在編程語言解析器方面,輸出通常被稱爲抽象語法樹(AST)。 AST中的每個節點表示該語言的不同結構,例如,一個IF語句將是一個包含2或3個子節點的節點,一個CONDITION節點,一個THEN節點和一個ELSE節點。
解析器不會給結點超出結構內聚的任何意義。接下來要做的是從這個結構中提取意義(有時稱爲上下文分析)。
2
解析(一般意義上的)是關於將符號(字符,數字,左對齊等)轉換爲語法句子。
詞法分析器(「詞法分析器」)將源代碼文件中的各個符號解析爲標記。從那裏,「解析器」正確地將這些整個標記轉換成語法句子。換言之,詞法分析器將符號組合成標記,分析器將標記組合成句子。
相關問題
- 1. 表掃描和聚簇索引掃描有什麼區別?
- 2. 主動掃描和被動掃描有什麼區別?
- 3. greenplum中的表掃描和seq掃描有什麼區別
- 4. 什麼是PNO的區別掃描和WLAN預設掃描?
- 5. 數字的識別屬於掃描儀還是解析器?
- 6. 何處理浮點數解析 - 掃描儀還是解析器?
- 7. postgres中的Seq掃描和位圖堆掃描有什麼區別?
- 8. LL和LR解析有什麼區別?
- 9. Java的掃描儀解析輸入
- 10. 解析文本 - 掃描儀或BufferedReader?
- 11. 掃描儀無法解析爲
- 12. Ruby字符串掃描和匹配有什麼區別
- 13. lex/yacc和解析器/掃描器
- 14. 掃描儀和StringTokenizer
- 15. 區分掃描儀和鍵盤
- 16. 掃描儀內的掃描儀錯誤
- 17. 「抽象解析樹」和「解析樹」有什麼區別?
- 18. 什麼是diff掃描儀和緩衝讀取器
- 19. 爲什麼關閉掃描儀似乎破壞了新的掃描儀?
- 20. 使用掃描儀/解析器/ Lexer進行腳本整理
- 21. 掃描儀,useDelimiter
- 22. 由掃描儀
- 23. 與掃描儀
- 24. 無掃描器解析器生成器
- 25. java掃描儀和圖案
- 26. Java - System.exit()和掃描儀
- 27. ZBar掃描儀QR只有
- 28. Java掃描儀換行識別
- 29. 掃描儀無法識別Microsoft POS
- 30. SonarQube掃描儀對變化的分析
由於StackOverflow上的Flex標籤引用了Adobe Flex框架,我拿出了'Flex'標籤並用更通用的'lexical-analyser'標籤替換了它。 – 2009-11-15 23:02:23