我研究了對文件流進行操作的程序源代碼(用C++編寫)。但偶爾偶爾偶然發現tokens
。你能向我解釋一下什麼是令牌,爲什麼它們有用?謝謝。標記和文件流
標記和文件流
回答
流指的是隨時間變化可用的數據元素序列。流中的數據元素可以是任何類型的:字符,字符串,專用數據結構等。文本文件可以被簡單地解釋爲字符流。
在程序設計語言的背景下,這個詞通常是指一串字符中的一個或多個相關字符序列。令牌在字符流之上提供了一種抽象級別,並且通常將它們自己分組在流中用於進一步處理。
在編程語言的編譯器的通常的處理序列開始與詞法分析器轉換字符流轉換爲標記的流,然後將其傳遞到解析器。令牌的典型表示由一個類型指示符和令牌的內容組成。
下面是一個例子:考慮C++程序的該片段:
class MyClass {
public:
string name;
};
甲詞法分析器基本程序分成十個令牌流:
'class' (keyword)
'MyClass' (identifier)
'{' (opening brace)
'public' (keyword)
':' (colon)
'string' (identifier)
'name' (identifier)
';' (semicolon)
'}' (closing brace)
';' (semicolon)
令牌可以被認爲是「佔位符」。令牌表示特定的實體(字符串),並且通常是兩個等價物之間的某種中介步驟。例如,令牌通常用在表示給定語言語法的解析器中。
所以它是一個抽象的概念,而不是一些語言特定的功能,對吧? – 2011-12-28 01:52:16
@Abdulali確實,它不是一種語言功能。一個文檔由許多標記組成,而標記是最有意義的單元:通常是一個完整的單詞,分隔符等。 「123 + 456」可以由代幣「123」,「+」和「456」表示。 – 2011-12-28 01:58:34
是的,確切地說。回到我的解析器示例;分析器的第一階段是一個「詞法分析器」(詞法分析器),它將令牌分配給傳入的語法。這些令牌是任意的,並且專門用於稍後將要執行的任務。需要的「細節」越多,定義的令牌類型越多。 – VettelS 2011-12-28 01:58:56
- 1. Java:標記/標記文件
- 2. CMF工作流和標記接口
- 3. JSP標記文件和log4j的
- 4. FreeMarker和JSP 2標記文件
- 5. PHP結束標記和邏輯文件
- 6. Vim和ctags:標記文件名
- 7. JSP和標記文件UTF-8編碼
- 8. 閱讀和標記文件夾
- 9. 逐行讀取文件和標記行
- 10. Foundation 5文件結構和HTML標記
- 11. 管理視圖文件和JS標記
- 12. 許多文件的標記和索引
- 13. SMO.Transfer和文件流
- 14. 將標記和流數據一起存儲到gnuradio中的文件
- 15. Mule流:如何從XML文件中刪除BOM標記
- 16. 流浪結束標記頭
- 17. 流浪結束標記IMG
- 18. 流式傳輸WAV文件。 (不記錄)
- 19. 記錄HTTP音頻流文件
- 20. 文件標記/文件掃描結束
- 21. 用KML文件中的文件夾標記包裹地標標記
- 22. 內存流和文件流的區別
- 23. 在Eclipse中標記文件
- 24. Qt Creator標記文件
- 25. 標記文件夾中.gitattributes
- 26. Hadoop豬或流文件和Zip文件
- 27. !=運營商和文件流
- 28. C++文件流和向量
- 29. ColdFusion 9和文件流
- 30. C/C++流和文件
你錯過了一個分號(不是故意的,我希望)。 – Xeo 2011-12-28 02:29:22
@Xeo謝謝,我在最後加了分號。 – dasblinkenlight 2011-12-28 02:32:26