編譯器 詞法分析

2021-09-26 18:21:59 字數 1433 閱讀 9129

總結

詞法分析

//字串流

mov sum, x; 執行加法運算

//單詞流

mov sum, x

//屬性字流

token_type_instr

token_type_ident

token_type_comma

token_type_ident

語法分析
token currtoken = getnexttoken();//從屬性字流中讀取下乙個屬性字

if (currtoken == token_type_func) //是否是乙個函式宣告的開始

}}

字串處理庫

字串分類函式

數字字元

合法識別符號中的字元

空白符 (空格或製表符)

分隔符(用來分隔元素的符號,如括號,逗號等)

#define true 1;

#define false 0;

//判定乙個字元是否是數字字元

int ischarnumeric(char cchar)

else

}//判定乙個字元是否是空白符

int ischarwhitespace(char cchar)

else }

//判定乙個字元是否是有效識別符號的部分

int ischarident(char cchar)

else }

int ischardelimiter(char cchar) ' || ischarwhitespace(cchar))

else

}int isstringint(char* pstrstring)

} return true;

}int isstringfloat(char* pstrstring)

} //小數點

int iradixpointfound = false;

for (icurrcharindex = 0; icurrcharindex < strlen(pstrstring); icurrcharindex++)

else

}} for (icurrcharindex = 1; icurrcharindex < strlen(pstrstring); icurrcharindex++) }

if (iradixpointfound)

else

}int isstringwhitespace(char* pstrstring)

} return true;

}int isstringident(char* pstrstring)

} return true;

}

匯程式設計序

詞法分析器的介面

錯誤處理

語法分析

編譯器設計 詞法分析

通過python實現了乙個能夠識別單詞的程式,單詞定義為 以字母開頭的任意數字和字母的組合 1.re模組 定義字母和數字pattern,通過match對字元進行匹配 2.enum模組 用來定義識別單詞過程中的狀態,這裡定義了 初始態過程態 完成態錯誤態 開始識別單詞 已經識別單詞的一部分 識別到乙個...

編譯器之詞法分析

最近我們在做乙個有關snl語言的編譯器,下面寫了一下大概流程 詞法分析器是編譯過程的第一階段,功能是 1.對以字串形式輸入的源程式 這裡是把源程式從檔案讀出,也可以在控制台輸入 按順序進行掃瞄,根據snl語言的詞法規則識別具有獨立意義的單詞 符號 序列,如保留字 由語言系統自身定義的,通常是由字母組...

C編譯器剖析 2 2 詞法分析

2.2 詞法分析 目錄ucc ucl下,與詞法分析相關的c檔案主要有input.c和lex.c,input.c用於從外存讀入預處理後的檔案,其主要的函式如圖2.2.1所示。在ucc驅動的 中,已經預定義了巨集 ucc,所以第39行的條件成立,函式readsourcefile 會使用c標準庫的io函式...