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