欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

交換機專用語言轉(zhuǎn)換為c語言的方法

文檔序號:6427791閱讀:244來源:國知局
專利名稱:交換機專用語言轉(zhuǎn)換為c語言的方法
交換機專用語言轉(zhuǎn)換為C語言的方法
技術(shù)領域
本發(fā)明涉及計算機的交換機專用語言技術(shù)領域,尤其涉及一種交換機專用語言轉(zhuǎn)換為C語言的方法。
背景技術(shù)
目前運行的舊的大型程控交換機,大多使用專用硬件和交換機專用語言。但隨著計算機硬件的更新?lián)Q代,以及通用高級語言的普及。舊的大型程控交換機面臨硬件升級、專用語言的編譯器升級以及運行效率等問題。這些問題都迫切要求交換機專用語言轉(zhuǎn)換為通用高級語言(如C、C++語言),以便系統(tǒng)的維護和功能升級。高級語言的轉(zhuǎn)換原理,和編譯器的原理是一樣的?;臼嵌际峭ㄟ^詞法分析、語法分析,再借助符號表轉(zhuǎn)換為一種中間表示,最終再組裝為另一種語言的表示。但是交換機專用語言具有其特殊的地方,如專用語言比較復雜,沒有注釋處理,可讀性很低;現(xiàn)有各高級語言中,基本上都是以Byte為單位來處理,只有某些編譯器,如gcc (編譯器),使用“_ attributeJbacked)) ”來指定數(shù)據(jù)類型的特殊內(nèi)存方式。但是交換機專用語言的“PACK/ N0_PACK”規(guī)則遠比這個復雜,這個導致語言轉(zhuǎn)換的困難。通常的語言轉(zhuǎn)換工具并沒有對此提出好的方法。目前,摘自1993年第3期的《計算機學報》中有一論文涉及CHILL (全稱CCITT High Level Language,CHILL高級語言)到C語言的轉(zhuǎn)換,其特點是第一趟程序即前端程序,主要完成詞法分析、語法分析、語義分析、一致性檢查、錯誤處理、符號表建立等功能,該趟程序的輸出結(jié)果是一些內(nèi)部表格和中間文件;第二趟程序即CHILL/C轉(zhuǎn)換程序,它以中間文件及內(nèi)部表格作為輸入,按照轉(zhuǎn)換規(guī)則生成C程序;第三趟程序利用C語言編譯程序把產(chǎn)生的C程序和并發(fā)庫鏈接生成目標代碼,并發(fā)庫主要是為支持CHILL的并發(fā)處理功能而實現(xiàn)的一些預定義子程序。該方法也是常規(guī)的通過詞法分析、語法分析,再借助符號表轉(zhuǎn)換為一種中間表示,最終再組裝為另一種語言的表示。

發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題,在于提供一種交換機專用語言轉(zhuǎn)換為C語言的方法, 該方法實現(xiàn)了轉(zhuǎn)換后的C語言帶有注釋,可讀性高,且實現(xiàn)了多層嵌套函數(shù)進行展開轉(zhuǎn)換處理,使得代碼的移植性高。本發(fā)明是這樣實現(xiàn)的一種交換機專用語言轉(zhuǎn)換為C語言的方法,所述方法提供預處理模塊、符號表單元、變換處理模塊、注釋預處理模塊以及注釋處理模塊,所述預處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述變換處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述注釋預處理模塊包含有LEX詞法分析器,其具體步驟如下步驟10、將交換機專用語言源代碼導入所述預處理模塊和注釋預處理模塊進行處理,所述預處理模塊的LEX詞法分析器和YACC分析程序生成器對交換機專用語言源代碼進行語法、語義分析,分析生產(chǎn)全局符號表和語法樹格式的語句,并將全局符號表保存于所述符號表單元;所述注釋預處理模塊的LEX詞法分析器提取所述交換機專用語言源代碼的注釋內(nèi)容,并記錄行號與注釋內(nèi)容的對應關(guān)系;步驟20、所述變換處理模塊將所述語法樹格式的語句通過LEX詞法分析器和YACC 分析程序生成器進行詞法、語法分析,且根據(jù)所述符號表單元中的全局符號表和C語言的書寫規(guī)則來生成帶行號的C語言代碼,同時記錄交換機語言源代碼和C語言代碼之間的行號對應關(guān)系,生成一個行號字典;步驟30、所述注釋處理模塊將所述注釋內(nèi)容和生產(chǎn)的C語言代碼根據(jù)所述行號字典和所述行號對應關(guān)系進行合并,即將注釋內(nèi)容插入對應行的C語言代碼尾部,并除去C語言代碼前的行號生成最終的C語言代碼。進一步的,所述步驟20中將所述語法樹格式的語句通過LEX詞法分析器和YACC 分析程序生成器進行詞法、語法分析,當語法樹格式的語句中有多層嵌套函數(shù)時,要對多層嵌套函數(shù)進行展開轉(zhuǎn)換處理,其具體為先將局部變量、形參變量和上層函數(shù)的結(jié)構(gòu)體指針,封裝并定義成一個結(jié)構(gòu)體類型;當多層嵌套函數(shù)中存在局部變量或者形參變量,則在每層函數(shù)開始處定義一個所述結(jié)構(gòu)體類型的結(jié)構(gòu)體變量,并對結(jié)構(gòu)體中的成員變量進行賦值;在調(diào)用下層函數(shù)的地方,增加一個實參即本層函數(shù)的結(jié)構(gòu)體變量的地址;最后將每層函數(shù)進行展開轉(zhuǎn)換。進一步的,所述當每層函數(shù)展開時會遇到函數(shù)符號名重名的問題,其通過以下步驟解決步驟20、遇到全局符號不進行重命名;步驟21、第一次遇到的local符號不能與全局符合重名,且不能與之后遇到的 local符號重名;即local符號名字第一次出現(xiàn)時名字保持不變,之后遇到的local符號分別加入后綴_1,_2,..._11;步驟22、local符號中,對于SYN/PR0C類型的符號,需要加入static存儲類型。本發(fā)明具有如下優(yōu)點本發(fā)明交換機專用語言轉(zhuǎn)換為C語言的方法,所述方法提供預處理模塊、符號表單元、變換處理模塊、注釋預處理模塊以及注釋處理模塊,所述預處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述變換處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述注釋預處理模塊包含有LEX詞法分析器,其中將交換機專用語言源代碼導入預處理模塊和注釋預處理模塊進行處理后獲得生產(chǎn)全局符號表和語法樹格式的語句以及注釋內(nèi)容,再通過變換處理模塊和注釋處理模塊生成最終的帶有注釋的 C語言代碼,當語法樹格式的語句中有多層嵌套函數(shù)時,要對多層嵌套函數(shù)進行展開轉(zhuǎn)換處理,該方法實現(xiàn)了交換機專用語言轉(zhuǎn)換為C語言,其轉(zhuǎn)換后的C語言帶有注釋,其可讀性高, 且實現(xiàn)了多層嵌套函數(shù)進行展開轉(zhuǎn)換處理,使得代碼的移植性高。

圖1為本發(fā)明交換機語言轉(zhuǎn)換的流程框架圖。
具體實施方式請參閱圖1所示,本發(fā)明的交換機專用語言轉(zhuǎn)換為C語言的方法,所述方法提供預處理模塊、符號表單元、變換處理模塊、注釋預處理模塊以及注釋處理模塊,所述預處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述變換處理模塊包括LEX詞法分析器和 YACC分析程序生成器;所述注釋預處理模塊包含有LEX詞法分析器,其具體步驟如下步驟10、將交換機專用語言源代碼導入所述預處理模塊和注釋預處理模塊進行處理,所述預處理模塊的LEX詞法分析器和YACC分析程序生成器對交換機專用語言源代碼進行語法、語義分析,分析生產(chǎn)全局符號表和語法樹格式的語句,并將全局符號表保存于所述符號表單元;所述注釋預處理模塊的LEX詞法分析器提取所述交換機專用語言源代碼的注釋內(nèi)容,并記錄行號與注釋內(nèi)容的對應關(guān)系;步驟20、所述變換處理模塊將所述語法樹格式的語句通過LEX詞法分析器和YACC 分析程序生成器進行詞法、語法分析,當語法樹格式的語句中有多層嵌套函數(shù)時,要對多層嵌套函數(shù)進行展開轉(zhuǎn)換處理,其具體為先將局部變量、形參變量和上層函數(shù)的結(jié)構(gòu)體指針,封裝并定義成一個結(jié)構(gòu)體類型;當多層嵌套函數(shù)中存在局部變量或者形參變量,則在每層函數(shù)開始處定義一個所述結(jié)構(gòu)體類型的結(jié)構(gòu)體變量,并對結(jié)構(gòu)體中的成員變量進行賦值;在調(diào)用下層函數(shù)的地方,增加一個實參即本層函數(shù)的結(jié)構(gòu)體變量的地址;最后將每層函數(shù)進行展開轉(zhuǎn)換;且根據(jù)所述符號表單元中的全局符號表和C語言的書寫規(guī)則來生成帶行號的C語言代碼,同時記錄交換機語言源代碼和C語言代碼之間的行號對應關(guān)系,生成一個行號字典;其中所述當每層函數(shù)展開時會遇到函數(shù)符號名重名的問題,其通過以下步驟解決步驟20、遇到全局符號不進行重命名;步驟21、第一次遇到的local (本地)符號不能與全局符合重名,且不能與之后遇到的local符號重名;即local符號名字第一次出現(xiàn)時名字保持不變,之后遇到的local符號分別加入后綴_1,_2,..._11;步驟22、local符號中,對于SYN/PR0C類型的符號,需要加入static存儲類型。步驟30、所述注釋處理模塊將所述注釋內(nèi)容和生產(chǎn)的C語言代碼根據(jù)所述行號字典和所述行號對應關(guān)系進行合并,即將注釋內(nèi)容插入對應行的C語言代碼尾部,并除去C語言代碼前的行號生成最終的C語言代碼。值得一提的是傳統(tǒng)的語言轉(zhuǎn)換工具都是以Byte為單位來處理,這樣的處理受硬件內(nèi)存的限制,大量數(shù)據(jù)結(jié)構(gòu)采用union(共用體)的方式,這樣轉(zhuǎn)換出來的數(shù)據(jù)正確性無法保證。為了解決這個問題,在所述步驟20中將所述語法樹格式的語句通過LEX詞法分析器和YACC分析程序生成器進行詞法、語法分析,當語法樹格式的語句中使用關(guān)鍵字“PACK/ N0_PACK”來指定數(shù)據(jù)的內(nèi)存結(jié)構(gòu)時要進行轉(zhuǎn)換處理,其具體為1、總結(jié)交換機專用語言各種數(shù)據(jù)類型的PACK/N0_PACK的bit位圖,形成交換機語言的PACK/N0_PACK規(guī)則表。2、總結(jié)C語言(GCC)各種數(shù)據(jù)類型的PACK/N0_PACK的bit位圖,形成GCC的PACK/N0_PACK規(guī)則表。3、根據(jù)交換機語言的PACK/N0_PACK規(guī)則表和GCC的PACK/N0_PACK規(guī)則表將交換機專用語言到C語言的兩者對應的bit位圖映射關(guān)系起來。1、總結(jié)交換機專用語言各種數(shù)據(jù)類型的PACK/N0_PACK的bit位圖,形成交換機語言的PACK/N0_PACK規(guī)則表。其主要是通過查看各種類型的變量內(nèi)存排列,當使用關(guān)鍵字 “PACK/N0_PACK”定義各種基本數(shù)據(jù)類型變量時,通過查看內(nèi)存的實際分布,畫出對應的內(nèi)存bit位圖。從而歸納出各種數(shù)據(jù)類型的PACK/N0_PACK的規(guī)則表。其交換機專用語言(如CHILL語言)常用數(shù)據(jù)類型的PACK/N0_PACK規(guī)則表如下表1 表權(quán)利要求
1.一種交換機專用語言轉(zhuǎn)換為C語言的方法,其特征在于所述方法提供預處理模塊、 符號表單元、變換處理模塊、注釋預處理模塊以及注釋處理模塊,所述預處理模塊包括LEX 詞法分析器和YACC分析程序生成器;所述變換處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述注釋預處理模塊包含有LEX詞法分析器,其具體步驟如下步驟10、將交換機專用語言源代碼導入所述預處理模塊和注釋預處理模塊進行處理, 所述預處理模塊的LEX詞法分析器和YACC分析程序生成器對交換機專用語言源代碼進行語法、語義分析,分析生產(chǎn)全局符號表和語法樹格式的語句,并將全局符號表保存于所述符號表單元;所述注釋預處理模塊的LEX詞法分析器提取所述交換機專用語言源代碼的注釋內(nèi)容,并記錄行號與注釋內(nèi)容的對應關(guān)系;步驟20、所述變換處理模塊將所述語法樹格式的語句通過LEX詞法分析器和YACC分析程序生成器進行詞法、語法分析,且根據(jù)所述符號表單元中的全局符號表和C語言的書寫規(guī)則來生成帶行號的C語言代碼,同時記錄交換機語言源代碼和C語言代碼之間的行號對應關(guān)系,生成一個行號字典;步驟30、所述注釋處理模塊將所述注釋內(nèi)容和生產(chǎn)的C語言代碼根據(jù)所述行號字典和所述行號對應關(guān)系進行合并,即將注釋內(nèi)容插入對應行的C語言代碼尾部,并除去C語言代碼前的行號生成最終的C語言代碼。
2.根據(jù)權(quán)利要求1所述的交換機專用語言轉(zhuǎn)換為C語言的方法,其特征在于所述步驟20中將所述語法樹格式的語句通過LEX詞法分析器和YACC分析程序生成器進行詞法、 語法分析,當語法樹格式的語句中有多層嵌套函數(shù)時,要對多層嵌套函數(shù)進行展開轉(zhuǎn)換處理,其具體為先將局部變量、形參變量和上層函數(shù)的結(jié)構(gòu)體指針,封裝并定義成一個結(jié)構(gòu)體類型;當多層嵌套函數(shù)中存在局部變量或者形參變量,則在每層函數(shù)開始處定義一個所述結(jié)構(gòu)體類型的結(jié)構(gòu)體變量,并對結(jié)構(gòu)體中的成員變量進行賦值;在調(diào)用下層函數(shù)的地方, 增加一個實參即本層函數(shù)的結(jié)構(gòu)體變量的地址;最后將每層函數(shù)進行展開轉(zhuǎn)換。
3.根據(jù)權(quán)利要求2所述的交換機專用語言轉(zhuǎn)換為C語言的方法,其特征在于所述當每層函數(shù)展開時會遇到函數(shù)符號名重名的問題,其通過以下步驟解決步驟20、遇到全局符號不進行重命名;步驟21、第一次遇到的local符號不能與全局符合重名,且不能與之后遇到的local符號重名;即local符號名字第一次出現(xiàn)時名字保持不變,之后遇到的local符號分別加入后綴 _1,_2,· · · —η ;步驟22、local符號中,對于SYN/PR0C類型的符號,需要加入static存儲類型。
全文摘要
本發(fā)明提供一種交換機專用語言轉(zhuǎn)換為C語言的方法,所述方法提供預處理模塊、符號表單元、變換處理模塊、注釋預處理模塊以及注釋處理模塊,所述預處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述變換處理模塊包括LEX詞法分析器和YACC分析程序生成器;所述注釋預處理模塊包含有LEX詞法分析器,其中將交換機專用語言源代碼導入預處理模塊和注釋預處理模塊進行處理后獲得生產(chǎn)全局符號表和語法樹格式的語句以及注釋內(nèi)容,再通過變換處理模塊和注釋處理模塊生成最終的帶有注釋的C語言代碼。本發(fā)明實現(xiàn)了交換機專用語言轉(zhuǎn)換為C語言,且其C語言還帶有注釋,可讀性高。
文檔編號G06F9/44GK102222004SQ201110184838
公開日2011年10月19日 申請日期2011年7月1日 優(yōu)先權(quán)日2011年7月1日
發(fā)明者伍琰華, 吳坤雄, 林團, 林居京, 林鏗, 陳浚, 陳益林 申請人:福建富士通信息軟件有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
景东| 丁青县| 察隅县| 侯马市| 黔西县| 南皮县| 简阳市| 驻马店市| 石景山区| 沽源县| 中方县| 开封市| 汉川市| 昌吉市| 南汇区| 宁安市| 通化市| 襄城县| 渭南市| 洞口县| 射阳县| 深州市| 肥东县| 宜宾市| 吐鲁番市| 郓城县| 黄冈市| 当雄县| 九龙城区| 浮山县| 望江县| 六枝特区| 高青县| 陆河县| 焉耆| 徐汇区| 永州市| 霍邱县| 盈江县| 济南市| 秦安县|