成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

從零開(kāi)始寫(xiě)個(gè)編譯器吧 - 單詞化簡(jiǎn)述(Tokenization)

lucas / 2583人閱讀

摘要:實(shí)際上,所謂的源代碼,我們可以將其視為一段長(zhǎng)長(zhǎng)的字符串。但僅僅是把源代碼的字符分割成段,這些字符串尚不能稱(chēng)之為完整的單詞,而只能作為單詞的語(yǔ)素。實(shí)際上,詞法分析器還對(duì)將單詞分類(lèi)。實(shí)際上,詞法分析器會(huì)為這行代碼生成如下形式。

實(shí)際上,所謂的源代碼,我們可以將其視為一段長(zhǎng)長(zhǎng)的字符串。所謂字符串,即是字符的有序集。但是,字符本身作為編譯器的輸入單位,粒度實(shí)在太小了,因此,我們往往需要對(duì)編譯器進(jìn)行第一層封裝,即分割出一個(gè)稱(chēng)之為 Tokenizer (詞法分析器)的部分。
Tokenizer 的作用即是將字符序列翻譯成 Token(單詞)的一個(gè)過(guò)程,這一過(guò)程稱(chēng)之為單詞化(Tokenization)。很容易理解單詞化這一步驟在整個(gè)編譯過(guò)程中的價(jià)值,舉個(gè)例子,如下這么一個(gè)英語(yǔ)句子。

It"s understandable that we share some common values as we are living in the same world.

實(shí)際上,這個(gè)句子倘若以字符串的形式存在,即以字符作為最小單位來(lái)解析,則看起來(lái)形式如下。實(shí)際上,我們很難從中提取出有價(jià)值的信息。

  

["I", "t", """, "s", " ", "u", "n", "d", "e", "r", "s", "t", "a", "n",
"d", "a", "b", "l", "e", " ", "t", "h", "a", "t", " ", "w", "e", " ",
"s", "h", "a", "r", "e", " ", "s", "o", "m", "e", " ", "c", "o", "m",
"m", "o", "n", " ", "v", "a", "l", "u", "e", "s", " ", "a", "s", " ",
"w", "e", " ", "a", "r", "e", " ", "l", "i", "v", "i", "n", "g", " ",
"i", "n", " ", "t", "h", "e", " ", "s", "a", "m", "e", " ", "w", "o",
"r", "l", "d" ]

而分詞話(huà)的作用,則是將上面這段東西,變成(至少)下面這段東西。

  

["It", "is", "understandable", "that", "we", "share", "some",
"common", "values", "as", "we", "are", "living", "in", "the",
"same", "world", "."]

看起來(lái)是不是更加順眼了呢?實(shí)際上我們都幾乎能讀出這個(gè)單詞數(shù)組所代表句子的意思了。

詞法分析器 Tokenizer 的另一個(gè)功能在于,將單詞分類(lèi)??紤]源代碼中這么一行。

  

private int index = 27;

會(huì)被拆分為如下形式。

  

["private", " ", "int", " ", "index", " ", "=", " ", "27", ";"]

但僅僅是把源代碼的字符分割成段,這些字符串尚不能稱(chēng)之為完整的單詞Token,而只能作為單詞的語(yǔ)素。實(shí)際上,詞法分析器還對(duì)將單詞分類(lèi)。因此,讀到的語(yǔ)素,分析出的類(lèi)型,兩者才構(gòu)成一個(gè)完整的單詞。
實(shí)際上,詞法分析器會(huì)為這行代碼生成如下形式。


每一列代表一個(gè)單詞Token,而單詞包含兩個(gè)屬性,語(yǔ)素、類(lèi)型。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/64215.html

相關(guān)文章

  • 從零開(kāi)始寫(xiě)個(gè)譯器系列

    摘要:是的,這個(gè)系列將呈現(xiàn)一個(gè)完整的編譯器從無(wú)到有的過(guò)程。但在寫(xiě)這個(gè)編譯器的過(guò)程中,我可不會(huì)偷工減料,該有的一定會(huì)寫(xiě)上的。該語(yǔ)言的虛擬機(jī)將運(yùn)行于之上,同時(shí)編譯器將使用實(shí)現(xiàn)。我早有寫(xiě)編譯器的想法之前沒(méi)寫(xiě)過(guò),故希望一邊寫(xiě)編譯器一邊完成這個(gè)系列。 是的,這個(gè)系列將呈現(xiàn)一個(gè)完整的編譯器從無(wú)到有的過(guò)程。當(dāng)然,為了保證該系列內(nèi)容的簡(jiǎn)潔(也為了降低難度),僅僅保證編譯器的最低要求,即僅能用。但在寫(xiě)這個(gè)編譯...

    genedna 評(píng)論0 收藏0
  • 從零開(kāi)始寫(xiě)個(gè)譯器 - 詞法分析器是一個(gè)狀態(tài)機(jī)

    摘要:詞法分析器本身就是一個(gè)狀態(tài)機(jī),生成這個(gè)狀態(tài)機(jī)有很多種方法,而我打算采取手寫(xiě)的方式。狀態(tài)機(jī)不斷從源代碼即一個(gè)字符串中讀入一個(gè)一個(gè)字符,讀到不同的字符將使?fàn)顟B(tài)機(jī)的狀態(tài)從一個(gè)狀態(tài)變化到另外一個(gè)狀態(tài)。 詞法分析器 Tokenizer 本身就是一個(gè)狀態(tài)機(jī),生成這個(gè)狀態(tài)機(jī)有很多種方法,而我打算采取手寫(xiě)的方式。因?yàn)?tao 語(yǔ)言的詞法還是相對(duì)比較簡(jiǎn)單的,手寫(xiě)不成問(wèn)題。 先新建一個(gè)LexicalAna...

    calx 評(píng)論0 收藏0
  • 從零開(kāi)始寫(xiě)個(gè)譯器 - Token.java 文件的編寫(xiě)

    摘要:現(xiàn)在,讓我們來(lái)動(dòng)手寫(xiě)編譯器的第一個(gè)個(gè)文件吧。如其名字所示,這個(gè)類(lèi)實(shí)例化的對(duì)象用于表示詞法分析器的產(chǎn)物。我希望詞法分析器從源代碼中提取出語(yǔ)素,并根據(jù)上下文推測(cè)出單詞類(lèi)型,從而構(gòu)造出對(duì)象。只需要構(gòu)造出類(lèi)型即可,進(jìn)一步細(xì)分將在的構(gòu)造函數(shù)中進(jìn)行。 現(xiàn)在,讓我們來(lái)動(dòng)手寫(xiě)編譯器的第一個(gè)個(gè)java文件吧。本章要寫(xiě)的類(lèi),是Token類(lèi)。如其名字所示,這個(gè)類(lèi)實(shí)例化的對(duì)象用于表示詞法分析器 Tokeniz...

    Eirunye 評(píng)論0 收藏0
  • 從零開(kāi)始寫(xiě)個(gè)譯器 - tao語(yǔ)言的詞法分析器(Tokenizer)的類(lèi)型定義

    摘要:要為語(yǔ)言設(shè)計(jì)詞法分析器,首先得知道語(yǔ)言是一種什么樣的語(yǔ)言。,不過(guò)首先我們得把詞法分析器能生成的單詞類(lèi)型定義好了。 要為 tao 語(yǔ)言設(shè)計(jì)詞法分析器,首先得知道 tao 語(yǔ)言是一種什么樣的語(yǔ)言。不過(guò)呢,我腦海里還沒(méi)有 tao 語(yǔ)言具體形象。我還是先貼一段 tao 語(yǔ)言的代碼,大概展示下這是怎么回事吧。 def say_hello_world(who) print hello ...

    qpal 評(píng)論0 收藏0
  • 從零開(kāi)始寫(xiě)個(gè)譯器 - 譯器的結(jié)構(gòu)

    摘要:自然,我們還是先從語(yǔ)言的編譯器下手吧。在動(dòng)手寫(xiě)編譯器之前,得容我將編譯器的結(jié)構(gòu)進(jìn)行進(jìn)一步的劃分。這些將被語(yǔ)法分析器接收并進(jìn)行進(jìn)一步處理。由于本系列將著重于寫(xiě)出編譯器,必要的理論和概念還是會(huì)交代的。從零開(kāi)始寫(xiě)個(gè)編譯器吧編譯器的結(jié)構(gòu)的博客 自然,我們還是先從 tao 語(yǔ)言的編譯器下手吧。在動(dòng)手寫(xiě)編譯器之前,得容我將編譯器的結(jié)構(gòu)進(jìn)行進(jìn)一步的劃分。編譯器可視為一個(gè)黑盒,從其一端輸入源代碼,另一...

    wudengzan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lucas

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<