作者zzss2003 (brotherD)
看板C_and_CPP
標題Re: [問題] token在這個上下文中所代表的意思
時間Tue Oct 24 09:31:16 2017
※ 引述《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