解釋
掃描程式的任務是從原始碼中讀取字元並形成由編譯器的以後部分(通常是分析程式)處理的邏輯單元。由掃描程式生成的邏輯單元稱作記號(token),將字元組合成記號與在一個英語句子中將字母構成單詞並確定單詞的含義很相像。此時它的任務很像拼寫。
說明
記號通常定義為枚舉類型的邏輯項。例如,記號在C 中可被定義為:
L 在一種沒有列舉類型的語言中,則只能將記號直接定義為符號數值。
記號有若干種類型,這其中包括了保留字(reserved word),如I F 和THEN ,它們表示字元串“ if ”和“ then ”;第2 類是特殊符號(special symbol),如算術符號加(PLUS)和減(MINUS),它們表示字元“+”和“-”。第3 類是表示多字元串的記號,如NUM 和ID ,它們分別表示數字和標識符。作為邏輯項的記號必須與它們所表示的字元串完全區分開來。例如:保留字記號IF 須與它表示的兩個字元“ if ”的串相區別。為了使這個區別更明顯,由記號表示的字元串有時稱作它的串值(string value )或它的詞義(lexeme)。某些記號只有一個詞義:保留字就具有這個特性。但記號還可能表示無限多個語義。例如標識符全由單個記號ID表示,然而標識符有許多不同的串值來表示它們的單個名字。因為編譯器必須掌握它們在符號表中的情況,所以不能忽略這些名字。因此,掃描程式也需用至少一些記號來構造串值。任何與記號相關的值都是記號的屬性(attribute),而串值就是屬性的示例。記號還可有其他的屬性。