第三章 - 有穷自动机与词法分析(一)
使用自動機和正則表達(dá)式判斷字符串是否合法。
構(gòu)造詞法分析器的方法可以分為人工方法和自動化方法。
3.1.1 詞法分析器的功能
①每當(dāng)程序員敲擊鍵盤上一個鍵時,自動向計算機輸入一個相應(yīng)的8位二進(jìn)制碼,這種碼稱為ASCII碼。程序在計算機中被表示為ASCII碼序列,通常稱為源程序文件。
②翻譯時的最小語義單位是單詞,Token是源程序中單詞的內(nèi)部表示,也稱為記號
首先從源程序文件中一個字符一個字符的讀字符,并逐個的分離出單詞,然后構(gòu)造他們的機內(nèi)表示Token。(源程序的處理過程)
?
關(guān)于Token的結(jié)構(gòu)沒有統(tǒng)一的規(guī)定,至少包含兩部分內(nèi)容:一是單詞的類別,二是單詞的內(nèi)容(語義 )。
單詞的Token表示也沒有固定的模式,其結(jié)構(gòu)可隨著編譯器的不同而變化。
標(biāo)識符單詞、常量單詞、保留字單詞
【詞法分析器的任務(wù)】根據(jù)程序的ASCII碼序列依次拼出單詞的ASCII碼表示,然后將其轉(zhuǎn)換成相應(yīng)的Token碼(分為語法分析器的子程序和編譯器的獨立一遍處理器)
3.1.2 單詞識別
?詞法分時首要任務(wù)是如何從源文件中的ASCII碼序列依次分離出單詞,即如何判定新單詞的開始、如何判定一個單詞的結(jié)束以及如何判定是什么類的單詞的問題。(但是比起語法分析還是詞法分析簡單)
3.1.3 詞法分析的復(fù)雜性(有時需要根據(jù)后面遇到的符號往回掃描)
3.1.4 字符串
如何設(shè)計字符串空間?(字符數(shù)組法)和(指針數(shù)組法)
3.1.5 保留字:關(guān)鍵字不能作為用戶定義的標(biāo)識符。兩種處理方法:(保留字表)和(不用保留字表)
保留字表又分為三種(順序表結(jié)構(gòu))、(散列表結(jié)構(gòu))和(散列和順序表結(jié)合的一種結(jié)構(gòu))
不用保留字表主要思想是(在拼單詞的過程中就判斷是否為保留字,拼完就判斷完了)
3.1.6 空格符、回車符、換行符
空格符分隔單詞,回車符和換行符也沒有任何實際意義,對錯誤處理有重要意義(判斷bug在第幾行出現(xiàn))
3.1.7 括號類配對預(yù)檢
有錯誤不停下,還會繼續(xù)向下分析,預(yù)檢就是增加計數(shù)器,左括號加一,右括號減一,最后結(jié)果為零就配對。
3.1.8 詞法錯誤修正
程序錯誤可分為三層:(詞法層)、(語法層)和(語義層)
詞法層:錯誤的字符;語法層:錯誤的單詞;語義層:語義中出現(xiàn)錯誤的語法單位。
3.1.9 詞法分析獨立化的意義
?
轉(zhuǎn)載于:https://www.cnblogs.com/yangf428/p/10127817.html
總結(jié)
以上是生活随笔為你收集整理的第三章 - 有穷自动机与词法分析(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Unity3D 问题总结】Unity报
- 下一篇: 【电路_音频】一些关于音频功放的小秘密,