2011-12-28 59 views
0

我研究了對文件流進行操作的程序源代碼(用C++編寫)。但偶爾偶爾偶然發現tokens。你能向我解釋一下什麼是令牌,爲什麼它們有用?謝謝。標記和文件流

回答

2

指的是隨時間變化可用的數據元素序列。流中的數據元素可以是任何類型的:字符,字符串,專用數據結構等。文本文件可以被簡單地解釋爲字符流。

在程序設計語言的背景下,這個詞通常是指一串字符中的一個或多個相關字符序列。令牌在字符流之上提供了一種抽象級別,並且通常將它們自己分組在流中用於進一步處理。

在編程語言的編譯器的通常的處理序列開始與詞法分析器轉換字符流轉換爲標記的流,然後將其傳遞到解析器。令牌的典型表示由一個類型指示符和令牌的內容組成。

下面是一個例子:考慮C++程序的該片段:

class MyClass { 
public: 
    string name; 
}; 

甲詞法分析器基本程序分成十個令牌流:

'class' (keyword) 
'MyClass' (identifier) 
'{' (opening brace) 
'public' (keyword) 
':' (colon) 
'string' (identifier) 
'name' (identifier) 
';' (semicolon) 
'}' (closing brace) 
';' (semicolon) 
+0

你錯過了一個分號(不是故意的,我希望)。 – Xeo 2011-12-28 02:29:22

+0

@Xeo謝謝,我在最後加了分號。 – dasblinkenlight 2011-12-28 02:32:26

1

令牌可以被認爲是「佔位符」。令牌表示特定的實體(字符串),並且通常是兩個等價物之間的某種中介步驟。例如,令牌通常用在表示給定語言語法的解析器中。

+0

所以它是一個抽象的概念,而不是一些語言特定的功能,對吧? – 2011-12-28 01:52:16

+1

@Abdulali確實,它不是一種語言功能。一個文檔由許多標記組成,而標記是最有意義的單元:通常是一個完整的單詞,分隔符等。 「123 + 456」可以由代幣「123」,「+」和「456」表示。 – 2011-12-28 01:58:34

+0

是的,確切地說。回到我的解析器示例;分析器的第一階段是一個「詞法分析器」(詞法分析器),它將令牌分配給傳入的語法。這些令牌是任意的,並且專門用於稍後將要執行的任務。需要的「細節」越多,定義的令牌類型越多。 – VettelS 2011-12-28 01:58:56