[發(fā)明專利]生成代碼文件的語法樹的方法、裝置及電子設(shè)備在審
| 申請?zhí)枺?/td> | 201811638890.3 | 申請日: | 2018-12-29 |
| 公開(公告)號: | CN111381826A | 公開(公告)日: | 2020-07-07 |
| 發(fā)明(設(shè)計)人: | 馮剛 | 申請(專利權(quán))人: | 北京奇虎科技有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41 |
| 代理公司: | 北京市立方律師事務(wù)所 11330 | 代理人: | 張筱寧 |
| 地址: | 100088 北京市西城區(qū)新*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 生成 代碼 文件 語法 方法 裝置 電子設(shè)備 | ||
本申請涉及計算機軟件開發(fā)領(lǐng)域,公開了一種生成代碼文件的語法樹的方法、裝置及電子設(shè)備,其中,生成代碼文件的語法樹的方法包括在接收到預(yù)定編程語言的待解析代碼文件時,通過詞法解析模塊對待解析代碼文件中的各個詞法符號進(jìn)行解析并生成相應(yīng)的線性鏈表;接著基于第一查找表和第二查找表,依次對線性鏈表中的各個詞法符號進(jìn)行分析,并確定任一詞法符號屬于預(yù)定沖突類型時,對任一詞法符號進(jìn)行相應(yīng)的沖突消除處理;接著根據(jù)沖突消除處理的處理結(jié)果,生成待解析代碼文件的語法樹。本申請實施例的方法,使得可以通過語法樹對編寫完成的代碼文件進(jìn)行靜態(tài)分析,從而準(zhǔn)確、高效地對編寫完成的代碼文件中的語法錯誤、編寫錯誤等進(jìn)行檢查及糾正。
技術(shù)領(lǐng)域
本申請涉及計算機開發(fā)技術(shù)領(lǐng)域,具體而言,本申請涉及一種生成代碼文件的語法樹的方法、裝置及電子設(shè)備。
背景技術(shù)
在當(dāng)前的計算機領(lǐng)域,C/C++/JAVA等高級編程語言對應(yīng)的編譯器開發(fā)技術(shù)越來越成熟,應(yīng)用高級語言編譯器能夠?qū)崿F(xiàn)將程序語言轉(zhuǎn)化為機器語言的操作。但是,目前的編譯器并不能逐一對代碼文件中存在的代碼編寫錯誤進(jìn)行全面、詳盡分析,也無法準(zhǔn)確對代碼文件中存在的代碼編寫錯誤進(jìn)行提示或糾正。因此,在對代碼文件進(jìn)行編譯之前,需要程序開發(fā)人員手動檢查代碼文件中存在的錯誤。
本申請的發(fā)明人在具體實施過程中發(fā)現(xiàn):當(dāng)代碼文件中的代碼量很大時,將會給程序開發(fā)人員造成極大工作量,不僅導(dǎo)致程序開發(fā)人員花費大量時間、精力等,檢查代碼文件中存在的錯誤,而且檢查效率極低。同時,本申請的發(fā)明人發(fā)現(xiàn):根據(jù)代碼文件中各個詞法符號的詞性,查找相應(yīng)的查找表,生成代碼文件的語法樹(syntaxtree),能夠自動實現(xiàn)代碼文件中語法錯誤、編寫錯誤等的檢查及糾正,極大提高檢查效率,然而在查找相應(yīng)查找表的過程中,會出現(xiàn)沖突,即同時查找到了多種可能的處理行為,導(dǎo)致無法確定應(yīng)該選擇哪種行為,基于此本申請的發(fā)明人提供了一種消除沖突并語法樹的方法。
發(fā)明內(nèi)容
本申請的目的旨在至少能解決上述的技術(shù)缺陷之一,特提出以下技術(shù)方案:
第一方面,提供了一種生成代碼文件的語法樹的方法,包括:
在接收到預(yù)定編程語言的待解析代碼文件時,通過詞法解析模塊對待解析代碼文件中的各個詞法符號進(jìn)行解析并生成相應(yīng)的線性鏈表;
基于第一查找表和第二查找表,依次對線性鏈表中的各個詞法符號進(jìn)行分析,并確定任一詞法符號屬于預(yù)定沖突類型時,對任一詞法符號進(jìn)行相應(yīng)的沖突消除處理;
根據(jù)沖突消除處理的處理結(jié)果,生成待解析代碼文件的語法樹。
具體地,預(yù)定沖突類型,包括以下任一種:
任一詞法符號的處理屬于移進(jìn)處理與歸約處理的沖突;
任一詞法符號的處理屬于第一歸約處理與第二歸約處理的沖突。
進(jìn)一步地,在對任一詞法符號進(jìn)行沖突消除處理之前,還包括:
對當(dāng)前的處理狀態(tài)進(jìn)行保存,得到第一保存結(jié)果。
進(jìn)一步地,對任一詞法符號進(jìn)行沖突消除處理,包括:
根據(jù)上下文對任一詞法符號進(jìn)行第一目標(biāo)處理,并基于第一目標(biāo)處理對任一詞法符號之后的詞法符號依次進(jìn)行相應(yīng)處理;
若直至完成重試結(jié)束符的處理,均未發(fā)生處理錯誤,則刪除第一保存結(jié)果,并繼續(xù)對后續(xù)詞法符號進(jìn)行相應(yīng)處理。
進(jìn)一步地,還包括:
若在對任一詞法符號之后的詞法符號依次進(jìn)行相應(yīng)處理的過程中發(fā)生處理錯誤,則按照第一保存結(jié)果進(jìn)行恢復(fù)處理,并對任一詞法符號進(jìn)行第二目標(biāo)處理,并對任一詞法符號之后的詞法符號依次進(jìn)行相應(yīng)處理。
進(jìn)一步地,對任一詞法符號進(jìn)行沖突消除處理的情形,包括以下任一種:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京奇虎科技有限公司,未經(jīng)北京奇虎科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811638890.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





