編譯原理是介紹如何將高級程序設(shè)計語言轉(zhuǎn)換成計算機硬件能識別的機器語言,以便計算機進行處理。
尼金平網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。詞法分析(Lexical Analyzer)是編譯器的第一個步驟,它也被稱為 掃描(scanning)。詞法分析器(semantic analyzer)通過讀入外部的字符流(源程序)對其進行掃描,并且把它們組成有意義的詞素(lexeme)序列,對于每個詞素,詞法分析器都會產(chǎn)生詞法單元(token) 作為輸出。
編譯原理領(lǐng)域中將高級程序語言中的最小的單元稱為token,token是構(gòu)成源程序的基本不可再分割的單元。高級程序設(shè)計語言在分析源程序時的第一步就是把源程序分割為一個個獨立的token,這個過程就稱為詞法分析。
高級語言中的token有以下幾類:
分隔符(界限符)
關(guān)鍵字和保留字
標(biāo)識符
操作符
字面值
高級語言中最常見的分隔符(界限符)有空格、換行符、分號、大括號等等,我們可以利用空格來分隔token、用換行符或者分號來分隔語句、用大括號或者是縮進(數(shù)量相等的空格或者是制表符)來分隔代碼塊(復(fù)合語句)。操作符也是一種特殊的分隔符。
標(biāo)識符
編程語言的標(biāo)識符是用來標(biāo)識變量、自定義類型、函數(shù)等實體的符號名稱,我們在后面想要使用這個實體的話只需要用這個實體的名字引用它就可以了。不同類型的標(biāo)識符具有不同的作用,當(dāng)標(biāo)識符代表的是一個變量和函數(shù)的時候,它代表的其實是一個內(nèi)存地址,我們使用變量進行內(nèi)存訪問、使用函數(shù)進行子程序的調(diào)用;而當(dāng)標(biāo)識符作為一個自定義數(shù)據(jù)類型的時候,它將在編譯的時候為編譯器提供組織內(nèi)存的元數(shù)據(jù)信息。
關(guān)鍵字和保留字
關(guān)鍵字是指語言的設(shè)計者保留的具有特定語法含義的字符序列,每個關(guān)鍵字都有自己獨特的用途和語法含義,我們只能按照高級程序設(shè)計語言的語法規(guī)定來使用它們。關(guān)鍵字是一門高級程序設(shè)計語言的語法的重要組成部分,同時也是我們?yōu)檎Z言的編譯器或解釋器提供元數(shù)據(jù)信息的主要手段。保留字是一類比較特殊的關(guān)鍵字,是為了語言后續(xù)的升級所預(yù)留的,在當(dāng)前的語言版本中,保留字還不具備任何特殊的語義,但是在后續(xù)的語言升級過程中,保留字可能會被提升為關(guān)鍵字。所以我們在為標(biāo)識符命名的時候,也不能隨意使用保留字。
操作符就是語言所使用的符號集合,一般來說操作符代表的是計算類的指令,我們會使用操作符來構(gòu)建表達式,來完成計算任務(wù)。大多數(shù)的操作符會被編譯成轉(zhuǎn)換成計算類的指令。
按照功能分類,操作符可以做如下分類:
算術(shù)運算符
位運算符
賦值運算符
賦值復(fù)核運算符(+=這一類的)
比較運算符
邏輯運算符
括號(可以用來改變表達式的計算順序,也可以用來進行函數(shù)調(diào)用)
自增自減操作
其他運算符,比如元素數(shù)組元素訪問[],子元素訪問.、->等等
按照操作數(shù)的數(shù)量,操作符可以做如下分類:
單目運算符
雙目運算符
三目運算符
操作符的主要作用是用來構(gòu)成表達式的,運算符有兩個非常重要的特性,即優(yōu)先級和結(jié)合性,這兩個特性決定了表達式的計算。
優(yōu)先級
我們在數(shù)學(xué)中進行四則運算的時候都知道一個計算式中要先算乘除后算加減,這個規(guī)則就是數(shù)學(xué)中四則運算的優(yōu)先級規(guī)則,高級語言中的運算符的運算規(guī)則跟這個是類似的,具有更高優(yōu)先級的運算符會優(yōu)先占用操作數(shù)組成一個表達式進行計算產(chǎn)生一個值。
在所有語言中運算符的優(yōu)先級規(guī)則都是非常相似的,一般來說操作數(shù)越少的操作數(shù)優(yōu)先級越高,而且賦值運算符的優(yōu)先級比較靠后。
結(jié)合性
優(yōu)先級并不能完全解決表達式的計算順序問題,在表達式中出現(xiàn)連續(xù)的多個優(yōu)先級相同的運算符的時候,該以什么樣的順序進行計算呢?
高級語言中表達式的結(jié)合性就是用來解決連續(xù)多個相同優(yōu)先級的運算符的計算順序的。
結(jié)合性有兩種,即左結(jié)合性和右結(jié)合性。具有左結(jié)合性的計算順序是從左到右,右結(jié)合性的計算順序是從右到左。
在高級語言中,存在三種最基本的字面值形式(不同語言所具有的字面值形式是不同的,但是大多數(shù)的語言都支持下面三種形式的字面值):
字符串:因為代碼本身就是字符串,通常會使用界定符比如""來區(qū)分是字面值還是程序代碼
數(shù)字:其實就是具有特定格式的字符串(只有數(shù)字字符,數(shù)字分隔符,進制前綴和類型后綴),因為其格式特殊,所以不需要界定符
邏輯值:通常也稱為布爾值,true或者false,大部分程序設(shè)計語言中都把true和false作為關(guān)鍵字,但是在比較古老的編程語言中(例如C語言),沒有專門代表邏輯值的數(shù)據(jù)類型,而是使用整數(shù)代表邏輯值,0代表false,所有的非0整數(shù)都代表true。
表達式(Expression)和語句(Statement)表達式
表達式是由運算符和操作數(shù)組成,最簡單的表達式是一個單獨的運算對象,以此為基礎(chǔ)可以創(chuàng)建復(fù)雜的表達式。像+、*這樣可以進行運算的符號稱為運算符(operator),作為運算對象的變量、常量、函數(shù)調(diào)用等稱為操作數(shù)(operand)。
表達式有一個基本特征——每個表達式都會產(chǎn)生一個值。
根據(jù)表達式的復(fù)雜程度的不同,可以把表達式分為簡單表達式和復(fù)合表達式:
簡單表達式: “字面值”和“變量”。
復(fù)合表達式:由簡單表達式和運算符所構(gòu)成的更復(fù)雜的表達式。
語句
語句是命令式編程語言的一個語法單元,表示程序要執(zhí)行的操作。程序是有一個或多個語句序列。語句可能包含內(nèi)部組件(如關(guān)鍵字、表達式)。
大多數(shù)語言中,語句和表達式的區(qū)別在于,語句不返回結(jié)果。
在命令式編程語言中,Algol 68 是少數(shù)幾種語句可以返回結(jié)果的語言之一。在混合了命令式和函數(shù)式風(fēng)格的語言中,如 Lisp 家族,表達式和語句之間沒有區(qū)別。在純函數(shù)式編程中,沒有語句,一切都是表達式。
語句可以分為簡單語句和復(fù)合語句。
復(fù)合語句就是用來把多條語句組合成一個整體的。
通常會在如下情況下把一系列的語句集合起來,形成一條復(fù)合語句:
流程控制
在分支或者是循環(huán)結(jié)構(gòu)中,某一個分支或者是循環(huán)體中的邏輯往往用一條語句是無法完成的,這個時候我們就需要一個復(fù)合語句來組織邏輯。
函數(shù)體
一個函數(shù)可能包含多條語句。
語句塊
大多數(shù)編程語言中有自己組織語句塊的方式,比如Java、c、C++等語言中使用{}, Python中用縮進來。
命令式編程語言中表達式和語句的關(guān)系
表達式有值,而語句不總有值。
程序是由語句組成的。語句可以是表達式,也可以不是。表達式可以當(dāng)做值賦給變量。
表達式本身可以作為表達式語句,也能作為賦值語句的右值或if語句的條件等,所以表達式可以作為語句的組成部分,但不是必須成分(例如continue語句)。
【補充說明:token計算機科學(xué)中含義很多,不同場景下,其語義表面上看起來相差甚遠(yuǎn)。
在信息安全中
會話令牌(Session token),交互會話中唯一身份標(biāo)識符;
訪問令牌(Access token)表示訪問控制操作主體的系統(tǒng)對象
密保令牌(Security token),或者硬件令牌,例如U盾,或者叫做認(rèn)證令牌或者加密令牌,一種計算機身份校驗的物理設(shè)備。
編譯原理
詞法分析是計算機科學(xué)中將字符序列轉(zhuǎn)換為標(biāo)記(token)序列的過程。從輸入字符流中生成標(biāo)記的過程叫作標(biāo)記化(tokenization)。
在網(wǎng)絡(luò)技術(shù)里
一種能夠控制站點占有媒體的特殊幀,以區(qū)別數(shù)據(jù)幀及其他控制幀?!?/p>
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
名稱欄目:編譯原理中的token簡介-創(chuàng)新互聯(lián)
當(dāng)前URL:http://jinyejixie.com/article16/decsgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、用戶體驗、網(wǎng)站營銷、云服務(wù)器、網(wǎng)頁設(shè)計公司、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容