專利名稱:一種可視化表示和解釋c/c++語言聲明語句的方法
技術領域:
本發(fā)明涉及本發(fā)明涉及計算機程序理解技術和計算機可視化方法。
背景技術:
C/C++語言聲明語句的語法比較復雜,盡管實際中可以避免使用過于復雜的聲明, 但懂得如何理解和使用這些復雜的聲明也是很重要,有時也的確需要這種的聲明,因為這種聲明可以生成更高效、更緊湊的代碼。本方法用于在程序理解中有效實現(xiàn)機器理解C/C++語言中的復雜聲明。目前為止,國內外還沒有一套完善地解釋C/C++語言的聲明語句的程序理解方法。
發(fā)明內容
為了克服已有C/C++語言聲明語句的閱讀效率較低、實用性較差的不足,本發(fā)明提供一種提高閱讀程序的效率、有效幫助理解程序、實用性良好的可視化表示和解釋C/C++ 語言聲明語句的方法。本發(fā)明解決其技術問題所采用的技術方案是—種可視化表示和文字描述C/C++語言聲明語句的方法,該方法包括以下步驟(1)將待分析的函數源代碼解析為數據信息表;(2)用樹形結構表示出數據信息表的內容;(3)圖元、基本詞匯與解釋的關聯(lián);定義1用于可視化表示C/C++語言聲明語句的基本圖形符號稱為圖元;定義2用于構成描述聲明語句語意的語句片段稱為基本詞匯;定義3通過程序理解將一些基本詞匯組合為一條聲明語句的解釋稱為語義描述;聲明語句可視化表示圖由圖元組合而成,而聲明語句的語義描述則需要相關語句來構成;(4)將需要解析的聲明語句的作以下預處理4. 1將需要解析的聲明語句進行標準化處理;4. 2將標準化后的聲明語句進行詞法分析,再將詞法分析聲明語句后詞法標志都存儲在詞法表內;4. 3判斷聲明語法的合法性;如果聲明語句不合法,則終止對這個錯誤的聲明進行分析,并輸出錯誤原因。(5)查找變量在聲明語句中的位置在聲明語句中,從左往右讀,設定第一個滿足以下條件的詞為變量條件1 當前標識符不是類型說明符并且下一個詞是符號“;”或符號“,”,符號 “=,,,符號“[,,,符號“),,,符號“”;條件2 當前標識符不是類型說明符并且下一個詞是符號“(”并且與符號“(”相匹配的符號“)”的下一個詞是符號“;”或符號“=”,符號“”,符號“)”;(6)結合圖元和基本詞匯對聲明語句進行解析首先,利用步驟(5)查找變量的規(guī)則,找出變量在詞法表中的位置,初始指針指向變量在詞法表中的下一個元素,然后,依據指針指向詞法表中的元素調用相應的圖元和詞匯,最后,當指針指向詞法表的最后一個元素“;”時,調用元素相應的圖元和詞匯,聲明語句解析結束。作為優(yōu)選的一種方案所述步驟(3)中,設定聲明語句的可視化表示常用圖元符號為表1
權利要求
1.一種可視化表示和文字描述C/C++語言聲明語句的方法,其特征在于該方法包括以下步驟(1)將待分析的函數源代碼解析為數據信息表;(2)用樹形結構表示出數據信息表的內容;(3)圖元、基本詞匯與解釋的關聯(lián);定義1用于可視化表示C/C++語言聲明語句的基本圖形符號稱為圖元; 定義2用于構成描述聲明語句語意的語句片段稱為基本詞匯; 定義3通過程序理解將一些基本詞匯組合為一條聲明語句的解釋稱為語義描述; 聲明語句可視化表示圖由圖元組合而成,而聲明語句的語義描述則需要相關語句來構成;(4)將需要解析的聲明語句的作以下預處理 4. 1將需要解析的聲明語句進行標準化處理;4. 2將標準化后的聲明語句進行詞法分析,再將詞法分析聲明語句后詞法標志都存儲在詞法表內;4. 3判斷聲明語法的合法性;如果聲明語句不合法,則終止對這個錯誤的聲明進行分析,并輸出錯誤原因。(5)查找變量在聲明語句中的位置在聲明語句中,從左往右讀,設定第一個滿足以下條件的詞為變量 條件1 當前標識符不是類型說明符并且下一個詞是符號“;”或符號“,”,符號“=”, 符號“[”,符號“)”,符號“”;條件2 當前標識符不是類型說明符并且下一個詞是符號“(”并且與符號“(”相匹配的符號“)”的下一個詞是符號“;”或符號“=”,符號“”,符號“)”;(6)結合圖元和基本詞匯對聲明語句進行解析首先,利用步驟(5)查找變量的規(guī)則,找出變量在詞法表中的位置,初始指針指向變量在詞法表中的下一個元素,然后,依據指針指向詞法表中的元素調用相應的圖元和詞匯,最后,當指針指向詞法表的最后一個元素“;”時,調用元素相應的圖元和詞匯,聲明語句解析結束。
2.如權利要求1所述的一種可視化表示和文字描述C/C++語言聲明語句的方法,其特征在于所述步驟(3)中,設定聲明語句的可視化表示常用圖元符號為表1 圖元序號圖元1圖元12圖元23圖元34圖元45圖元5表1以及設定表2為構成描述語句的基本詞匯列表;語句序號語句1是一個2指針;這個指針指向一個3指針;這個常量指針指向一個4指針;這些指針指向一個5指針;這些常量指針指向一個6數組;這個數組的元素是一個7具有個元素的數組;這些數組的每個元素都是一個8函數;函數的返回值返回一個9參數為的函數;函數的返回值返回一個10類型。11常暈類型。表2所述步驟(6)中,聲明語句的解析遵守以下規(guī)則規(guī)則1 查找變量在詞法表中的位置,在繪圖板上輸出變量名,并調用構成描述語句的基本詞匯列表中的語句1 ;初始指針指向變量在詞法表中的下一個元素;規(guī)則2 若當前指針指向的詞是括號“(”,則根據與括號“(”相匹配的括號“)”之間內容來決定是調用聲明語句的可視化表示常用圖元符號表中的圖元4和構成描述語句的基本詞匯列表中的語句8還是調用可視化表示常用圖元符號表中的圖元5和構成描述語句的基本詞匯列表中的語句9 ;指針指向與括號“(”相匹配的括號“),,的下一個元素;規(guī)則3 若當前指針指向的詞是括號“[”,則根據與括號“[”相匹配的括號“]”之間內容來決定可視化表示常用圖元符號表中的圖元3中數組的大小和是調用構成描述語句的基本詞匯列表中的語句6還是調用構成描述語句的基本詞匯列表中的語句7 ;指針指向與括號“[”相匹配的括號“]”的下一個元素;規(guī)則4 若當前指針指向的詞是括號“)”,則根據與括號“)”相匹配的括號“(”之間符號“*”的個數來決定可視化表示常用圖元符號表中的圖元1或圖元2和構成描述語句的基本詞匯列表中的語句2、3、4、5的調用次數。若符號“*”的下一個詞是“const”,則調用可視化表示常用圖元符號表中的圖元2和構成描述語句的基本詞匯列表中的語句3或語句5,否則的話調用可視化表示常用圖元符號表中的圖元1和構成描述語句的基本詞匯列表中的語句2或語句4 ;指針指向括號“),,的下一個元素;規(guī)則5 若當前指針指向的詞是符號“;”,則查看聲明語句中未經處理過的符號“*”的個數。符號“*”的個數決定了可視化表示常用圖元符號表中的圖元1或圖元2和構成描述語句的基本詞匯列表中的語句2、3、4、5的調用次數。若符號“*”的下一個詞是“const”,則調用可視化表示常用圖元符號表中的圖元2和構成描述語句的基本詞匯列表中的語句3或語句5,否則的話調用可視化表示常用圖元符號表中的圖元1和構成描述語句的基本詞匯列表中的語句2或語句4 ;若類型說明符中含有“const”則調用可視化表示常用圖元符號表中的圖元2和調用構成描述語句的基本詞匯列表中的語句11,否則的話調用可視化表示常用圖元符號表中的圖元1和調用構成描述語句的基本詞匯列表中的語句10 ;解析完畢。
全文摘要
一種可視化表示和文字描述C/C++語言聲明語句的方法,包括以下步驟(1)將待分析的函數源代碼解析為數據信息表;(2)用樹形結構表示出數據信息表的內容;(3)圖元、基本詞匯與解釋的關聯(lián);(4)將需要解析的聲明語句的作預處理(5)查找變量在聲明語句中的位置;(6)結合圖元和基本詞匯對聲明語句進行解析首先,查找變量的規(guī)則,找出變量在詞法表中的位置,初始指針指向變量在詞法表中的下一個元素,然后,依據指針指向詞法表中的元素調用相應的圖元和詞匯,最后,當指針指向詞法表的最后一個元素“;”時,調用元素相應的圖元和詞匯,聲明語句解析結束。本發(fā)明能有效提高閱讀程序的效率、有效幫助理解程序、實用性良好。
文檔編號G06F9/45GK102236574SQ20111017266
公開日2011年11月9日 申請日期2011年6月24日 優(yōu)先權日2011年6月24日
發(fā)明者古輝, 游聯(lián)啟 申請人:浙江工業(yè)大學