一種圖形化編程系統(tǒng)的編譯器的方法
【技術(shù)領(lǐng)域】
[0001]一種圖形化編程系統(tǒng)的編譯器的方法主要是涉及計算機(jī)編譯方面領(lǐng)域。
【背景技術(shù)】
[0002]教育、娛樂型機(jī)器人是將娛樂性和技術(shù)創(chuàng)造相融合,逐步成為機(jī)器人研究的熱點之一,形成了巨大的市場感召力?;趫D形化編程的機(jī)器人專用軟件研究系統(tǒng)(GraphicalRobot Special Software straySystem, GR4S)是典型的圖形化編程環(huán)境。使用該系統(tǒng)的用戶無需任何的程序設(shè)計語言知識,只要將所需的圖標(biāo)從功能模塊面板中拖拽到編程工作區(qū),按照一定的邏輯順序進(jìn)行連線就完成了以往復(fù)雜的編程過程。
[0003]本方法主要分析現(xiàn)代編譯器的體系結(jié)構(gòu),指出了其中存在的缺陷;并根據(jù)GR4S系統(tǒng)及其相關(guān)硬件的特點,設(shè)計出一種基于API函數(shù)框架的有效編譯系統(tǒng),改進(jìn)以上缺陷;通過調(diào)用GR4S的編譯器,實現(xiàn)了目標(biāo)代碼為API /偽c語言代碼(Fake C,簡稱FC)的編譯過程。
【發(fā)明內(nèi)容】
[0004]通過國家專利檢索沒有發(fā)現(xiàn)關(guān)于此系統(tǒng)方面的申請資料。
[0005]GR4S編譯器主要采用了偽代碼、三層次編譯系統(tǒng)等關(guān)鍵技術(shù),使用該編譯系統(tǒng)以能編譯生成基于API函數(shù)的FC語言目標(biāo)代碼的基本框架。
[0006]GR4S是典型的圖形化編程環(huán)境,與傳統(tǒng)文本編程的流程不同,其核心是基于結(jié)構(gòu)化的數(shù)據(jù)流的編程方式。GR4S系統(tǒng)中編譯器是圖形語言與目標(biāo)語言之間的橋梁;不難發(fā)現(xiàn),一個數(shù)據(jù)流的自然表示是一個圖形或圖表,而數(shù)據(jù)流模型是一個比基于文本語言的控制流更為豐富的計算模型,因為其本質(zhì)是并行。隨著,計算機(jī)速度不斷加快,存儲容量不斷增長,計算機(jī)屏幕不斷加大,直接進(jìn)行交互式的數(shù)據(jù)流圖編輯是十分簡單的。
[0007]編譯過程可分三個層次:第一層是用戶層,用戶可以將編好的圖形化機(jī)器人程序生成對應(yīng)的偽代碼;第二層是中間層,對于用戶是透明的,在這一層中編譯器將偽代碼翻譯為匯編指令;第三層實現(xiàn)層,將匯編指令解釋為機(jī)器代碼,這一層對用戶來說也是透明的,用戶無需了解實現(xiàn)細(xì)節(jié),直接通過,GR4S中的下載功能,將機(jī)器代碼下載到機(jī)器人控制器。具體為以下四個步驟:首先,將由PC上的圖形化編程環(huán)境得到圖形語言轉(zhuǎn)換為FC代碼;其次,將FC代碼映射到匯編語言;然后,將映射得到的匯編語言轉(zhuǎn)換為目標(biāo)程序代碼(字節(jié)碼);最后,由內(nèi)嵌的虛擬機(jī)生成可以在uCLinux操作系統(tǒng)下可執(zhí)行的程序。
[0008]GR4S中的編譯器雖然仍是以編譯原理和編譯技術(shù)為基礎(chǔ)實現(xiàn)的,但是其獨特性表現(xiàn)在兩點:第一,它的源程序是圖形框圖,而不是其他基于命令行的高級編程語言;第二,它的目標(biāo)程序是偽c語言代碼,并不是機(jī)器所能識別的二進(jìn)制代碼。
[0009]編譯器的開發(fā)工具選擇的是Visual C++,具有非常友好的人機(jī)交互界面,強(qiáng)大的編譯管理功能、齊全的基本類庫以及完備的調(diào)試工具,是目前使用最廣泛的開發(fā)語言之一。
[0010]編譯程序采用的是靜態(tài)語法分析方法即語法制導(dǎo)編譯,其基本思想是在編譯的過程由FC程序的語法結(jié)構(gòu)來控制,而語法結(jié)構(gòu)則由語法分析器來識別。事實上,語義分析和代碼生成是編譯程序的主要部分,這部分的主要代碼如下:
Compi le_C—(char*strFi IeName);
{char strASMFileName[MAX—FILENAME—LENJ ;
HANDLE hFile ;
DWORD dwNumberOfBytesffritten ;int nThreadStart,nThreadEnd,i ;char strl [256],str2 [256];
//stepl.打開C語言文件 if (StrFileName=NULL) return FALSE ;
if (OpenCFiIe (strFileName))
strcpy(this->m—strCFileName, strFileName);
else return FALSE ;
//step2.打開code map數(shù)據(jù)文件 if (!OpenCodeMapFiIe ()) return FALSE ;
//step3.對C代碼進(jìn)行處理 //去除所有注釋 if (!this->RemoveAlIRemarks O) return FALSE ;
//去除所有控制字符
if (!this->RemoveAUControIChar ())
return FALSE ;
//3.將編譯好的代碼寫入文件 strcpy(strASMFiIeName,this->m—strAppPath); streat (strASMFileName,ASM—FILE—PATH); if ((hFile=::CreateFile(strASMFileName,
GENERIC—READ GENERIC—WRITE,
0,NULL, CREATE—ALWAYS,
FILE—ATnRIBUTE—NORMAL,null))!=INVAI 皿—HANDLE—VAlue)
{//將代碼寫入文件
if (!::WriteFile(hFILe,Tasking.strASMCode,
strlen(Tasklnf0.strASMCode), &dw Num-bet Of Bytes Written, NULL)){CloseHandh(hFile);return FALSE ;}
CloseHandle (hFile) ;}else return FALSE ;return TRUE ;}
而GR4S編譯器的實現(xiàn)是基于API函數(shù)框架的,因此,充分利用了 API函數(shù)的特性和面向?qū)ο蟮奶匦浴τ谠~法分析器以及語義分析和目標(biāo)代碼的生成的實現(xiàn),都是編寫在CCompile2Asm這個編譯類中,這樣可以方便編碼器內(nèi)部的相互訪問,又有利于程序員在編譯的各個不同階段的調(diào)試,隨時添加編譯效率的方法。
【主權(quán)項】
1.一種圖形化編程系統(tǒng)的編譯器的方法其主要特征是采用了層次化編譯的方法。2.根據(jù)權(quán)利要求1的方法則是分成三個層次:第一層是用戶層,用戶可以將編好的圖形化機(jī)器人程序生成對應(yīng)的偽代碼;第二層是中間層,對于用戶是透明的,在這一層中編譯器將偽代碼翻譯為匯編指令;第三層實現(xiàn)層,將匯編指令解釋為機(jī)器代碼。3.根據(jù)權(quán)利要求2則其具體步驟為:首先,將由PC上的圖形化編程環(huán)境得到圖形語言轉(zhuǎn)換為PC代碼;其次,將PC代碼映射到匯編語言;然后,將映射得到的匯編語言轉(zhuǎn)換為目標(biāo)程序代碼(字節(jié)碼);最后,由內(nèi)嵌的虛擬機(jī)生成可以在UCLinux操作系統(tǒng)下可執(zhí)行的程序。4.根據(jù)權(quán)利要求3則編譯程序采用的是靜態(tài)語法分析方法即語法制導(dǎo)編譯。5.根據(jù)權(quán)利要求4則是在編譯的過程由FC程序的語法結(jié)構(gòu)來控制,而語法結(jié)構(gòu)則由語法分析器來識別。
【專利摘要】一種圖形化編程系統(tǒng)的編譯器的方法是著重分析了采用數(shù)據(jù)流模型的機(jī)器人控制系統(tǒng)軟件的編譯器的實現(xiàn),運用層次化的編譯思想及偽代碼技術(shù),設(shè)計出了基于API函數(shù)的編譯系統(tǒng)方法。
【IPC分類】G06F9/45
【公開號】CN105653344
【申請?zhí)枴?br>【發(fā)明人】楊際榮
【申請人】鎮(zhèn)江華揚(yáng)信息科技有限公司
【公開日】2016年6月8日
【申請日】2014年11月13日