看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《zzss2003 (brotherD)》之銘言: : 標題: [問題] token在這個上下文中所代表的意思 : 時間: Mon Oct 23 18:12:30 2017 : : → Hazukashiine: 在講 token 的時候 我們一般不會說它具有語意 10/23 21:26 : → Hazukashiine: 因為程式碼是一個連續的位元流 沒有實體的切割 10/23 21:27 : → Hazukashiine: 所以我們要定義一組規則去把程式碼切斷成數個單元 10/23 21:28 : → Hazukashiine: 這個過程叫做 tokenization 來提供語法分析器調用 10/23 21:29 : → Hazukashiine: 一但語法分析器建立出語法樹後 程式碼變有了意義 10/23 21:30 : → MOONRAKER: token就如上述 程式碼是一個大字串 把這個大字串依照 10/24 03:18 : → MOONRAKER: 規則切成小段 就是token 10/24 03:19 : → MOONRAKER: 考慮意義 你可以稱它為「單字」 反正電腦語言的WORD是 10/24 03:19 : → MOONRAKER: 別的意思不會混淆 而token是合乎語法的基本片段 10/24 03:20 : → MOONRAKER: (syntactic element) 稱為「單字」也並無問題 10/24 03:21 : → MOONRAKER: 叫「字彙」或更模糊的「片段」也行 「字串」也勉強 10/24 03:31 : → MOONRAKER: 類似很難搞的詞還有"handle" 那比token還頭大 10/24 03:32 經過兩位大大的解釋,洨弟總算是有點概念了。依照此規範所定義的token: A token is the minimal lexical element of the language in translation phases 7 and 8. 我的理解:對機器來說程式碼只是一堆0跟1,如果我們用一套規則去切割0跟1所得到的最小 單位組,就是token。 比如,我今天要用符合keyword的條件去定義token,那所切割出來的就是歸類於keyword 的token。這也是為什麼token會有分類的原因。 有錯請指正~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1508808679.A.3FF.html
bibo9901: 怪怪的 10/24 09:40
Lipraxde: 我個人理解是在做語法分析的時候透過切出最小的塊來處理 10/24 10:20
Lipraxde: ,比一次處理一串還容易,切出來一小塊一小塊的東西叫它 10/24 10:20
Lipraxde: token,切出來歸類比較好處理,而不是為了歸類所以切出 10/24 10:20
Lipraxde: 來 10/24 10:20
notBeing: 去做個 lexer,不用猜 10/24 10:55
MOONRAKER: 沒有到0跟1的層級 一般parsing最基本的單位就字元 10/24 11:03
MOONRAKER: 當然除了ascii或unicode以外字元也可以定得更短 10/24 11:04
MOONRAKER: 但是以字元來理解就可以了 10/24 11:05
謝謝指正,我會提到0跟1是因為H大提到程式碼是一個連續的位元流 ※ 編輯: zzss2003 (60.248.26.157), 10/24/2017 11:39:46
Killercat: 直接用中文舉例最快「等等你回家以後晾衣服」 10/24 12:01
Killercat: tokenize以後就是 等等 你 回家 以後 晾 衣服 10/24 12:01
Killercat: 而不會是等 等你回 家以 後 晾衣 服 10/24 12:02
TitanEric: 真的 做一個lexical analyzer最準 10/24 23:47
uranusjr: 用人類語言來比例的話就是類似詞語 (vocabulary) 的概念 10/26 13:30
uranusjr: 因為不只是實體本身, 還包含語意概念概念, 確實有點抽象 10/26 13:31
uranusjr: 也沒什麼完美的解釋方法, 一下不能理解就慢慢體會吧, 急 10/26 13:31
uranusjr: 著找明確的定義反而容易誤解 10/26 13:32