JavaShuo
欄目
標籤
詞法分析器
時間 2019-11-08
標籤
詞法
分析器
简体版
原文
原文鏈接
詞法分析器
前言:
詞法分析是
編譯
的第一階段。它的含義是當程序進入編譯器的時候首先是詞法分析去分析它。也就能夠得出詞法分析器的主要任務。
詞法分析器的主要任務:
讀入源程序的輸入字符(好比說C語言程序的
#
)、將它們組成
詞素
, 生成並輸出一個
詞法單元序列
, 每一個詞法單元對應於一個
詞素
。下一步就是進行語法分析(這不是本文章討論的內容了), 這個詞法單元序列被輸出到語法分析器進行語法分析。
詞法分析器的其餘任務:
過濾掉源程序中的註釋和空白(例如: 空格、換行符、製表符以及在輸入中用於分隔詞法單元的其餘字符);
編譯器生成的錯誤消息與源程序的位置聯繫起來。
詞法分析器能夠負責記錄遇到的換行符的個數,以便給每一個出錯消息一個行號。在某些編譯器中,詞法分析器會創建源程序的一個拷貝,並將出錯信息插入到適當位置。若是源程序使用了一個宏預處理器,則宏的擴展也能夠由詞法分析器完成。
詞法分析器的處理階段:
有的時候,詞法分析器能夠分紅兩個級聯的處理階段:
code
掃描階段
主要負責完成一些不須要生成詞法單元的簡單處理,好比刪除註釋和將多個連續的空白字符壓縮成一個字符。
詞法分析階段
是較爲複雜的部分,它處理掃描階段的輸出並生成詞法單元。
詞法單元、模式和詞素:
詞法單元
:
詞法單元
由一個詞法單元名和一個可選的屬性值組成。詞法單元名是一個表示某種詞法單位的抽象符號,好比一個特定的關鍵字,或者表明一個標識符的輸入字符序列。詞法單元名字是由語法分析器處理的輸入符號。
模式
描述了一個詞法單元的詞素可能具備的形式。當詞法單元是一個關鍵字時,它的模式就是組成這個關鍵字的字符序列。對於標識和其餘詞法單元,模式是一個更加複雜的結構,它能夠和不少符號串匹配。
詞素
是源程序中的一個字符序列,它和某個詞法單元的模式匹配,並被詞法分析器識別爲該詞法單元的一個實例。
相關文章
1.
詞法分析器
2.
C# 詞法分析器(六)構造詞法分析器
3.
詞法分析器_CSS詞法分析器
4.
簡易詞法分析器
5.
詞法分析器JFLEX
6.
Lex詞法分析器
7.
PL/0 詞法分析器
8.
java 詞法分析器
9.
C# 詞法分析器(一)詞法分析介紹
10.
[編譯原理-詞法分析(三)] 詞法分析器
更多相關文章...
•
XML DOM 解析器
-
XML DOM 教程
•
PHP XML Expat 解析器
-
PHP教程
•
算法總結-二分查找法
•
Docker容器實戰(七) - 容器眼光下的文件系統
相關標籤/搜索
分詞器
分析器
算法分析
分析法
句法分析
詞法
分詞
法器
分析
分法
瀏覽器信息
PHP教程
Docker教程
算法
服務器
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
說說Python中的垃圾回收機制?
2.
螞蟻金服面試分享,阿里的offer真的不難,3位朋友全部offer
3.
Spring Boot (三十一)——自定義歡迎頁及favicon
4.
Spring Boot核心架構
5.
IDEA創建maven web工程
6.
在IDEA中利用maven創建java項目和web項目
7.
myeclipse新導入項目基本配置
8.
zkdash的安裝和配置
9.
什麼情況下會導致Python內存溢出?要如何處理?
10.
CentoOS7下vim輸入中文
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
詞法分析器
2.
C# 詞法分析器(六)構造詞法分析器
3.
詞法分析器_CSS詞法分析器
4.
簡易詞法分析器
5.
詞法分析器JFLEX
6.
Lex詞法分析器
7.
PL/0 詞法分析器
8.
java 詞法分析器
9.
C# 詞法分析器(一)詞法分析介紹
10.
[編譯原理-詞法分析(三)] 詞法分析器
>>更多相關文章<<