一种图形化编程系统的编译器的方法

文档序号:9887448阅读:259来源:国知局
一种图形化编程系统的编译器的方法
【技术领域】
[0001]一种图形化编程系统的编译器的方法主要是涉及计算机编译方面领域。
【背景技术】
[0002]教育、娱乐型机器人是将娱乐性和技术创造相融合,逐步成为机器人研究的热点之一,形成了巨大的市场感召力。基于图形化编程的机器人专用软件研究系统(GraphicalRobot Special Software straySystem, GR4S)是典型的图形化编程环境。使用该系统的用户无需任何的程序设计语言知识,只要将所需的图标从功能模块面板中拖拽到编程工作区,按照一定的逻辑顺序进行连线就完成了以往复杂的编程过程。
[0003]本方法主要分析现代编译器的体系结构,指出了其中存在的缺陷;并根据GR4S系统及其相关硬件的特点,设计出一种基于API函数框架的有效编译系统,改进以上缺陷;通过调用GR4S的编译器,实现了目标代码为API /伪c语言代码(Fake C,简称FC)的编译过程。

【发明内容】

[0004]通过国家专利检索没有发现关于此系统方面的申请资料。
[0005]GR4S编译器主要采用了伪代码、三层次编译系统等关键技术,使用该编译系统以能编译生成基于API函数的FC语言目标代码的基本框架。
[0006]GR4S是典型的图形化编程环境,与传统文本编程的流程不同,其核心是基于结构化的数据流的编程方式。GR4S系统中编译器是图形语言与目标语言之间的桥梁;不难发现,一个数据流的自然表示是一个图形或图表,而数据流模型是一个比基于文本语言的控制流更为丰富的计算模型,因为其本质是并行。随着,计算机速度不断加快,存储容量不断增长,计算机屏幕不断加大,直接进行交互式的数据流图编辑是十分简单的。
[0007]编译过程可分三个层次:第一层是用户层,用户可以将编好的图形化机器人程序生成对应的伪代码;第二层是中间层,对于用户是透明的,在这一层中编译器将伪代码翻译为汇编指令;第三层实现层,将汇编指令解释为机器代码,这一层对用户来说也是透明的,用户无需了解实现细节,直接通过,GR4S中的下载功能,将机器代码下载到机器人控制器。具体为以下四个步骤:首先,将由PC上的图形化编程环境得到图形语言转换为FC代码;其次,将FC代码映射到汇编语言;然后,将映射得到的汇编语言转换为目标程序代码(字节码);最后,由内嵌的虚拟机生成可以在uCLinux操作系统下可执行的程序。
[0008]GR4S中的编译器虽然仍是以编译原理和编译技术为基础实现的,但是其独特性表现在两点:第一,它的源程序是图形框图,而不是其他基于命令行的高级编程语言;第二,它的目标程序是伪c语言代码,并不是机器所能识别的二进制代码。
[0009]编译器的开发工具选择的是Visual C++,具有非常友好的人机交互界面,强大的编译管理功能、齐全的基本类库以及完备的调试工具,是目前使用最广泛的开发语言之一。
[0010]编译程序采用的是静态语法分析方法即语法制导编译,其基本思想是在编译的过程由FC程序的语法结构来控制,而语法结构则由语法分析器来识别。事实上,语义分析和代码生成是编译程序的主要部分,这部分的主要代码如下:
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数据文件 if (!OpenCodeMapFiIe ()) return FALSE ;
//step3.对C代码进行处理 //去除所有注释 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编译器的实现是基于API函数框架的,因此,充分利用了 API函数的特性和面向对象的特性。对于词法分析器以及语义分析和目标代码的生成的实现,都是编写在CCompile2Asm这个编译类中,这样可以方便编码器内部的相互访问,又有利于程序员在编译的各个不同阶段的调试,随时添加编译效率的方法。
【主权项】
1.一种图形化编程系统的编译器的方法其主要特征是采用了层次化编译的方法。2.根据权利要求1的方法则是分成三个层次:第一层是用户层,用户可以将编好的图形化机器人程序生成对应的伪代码;第二层是中间层,对于用户是透明的,在这一层中编译器将伪代码翻译为汇编指令;第三层实现层,将汇编指令解释为机器代码。3.根据权利要求2则其具体步骤为:首先,将由PC上的图形化编程环境得到图形语言转换为PC代码;其次,将PC代码映射到汇编语言;然后,将映射得到的汇编语言转换为目标程序代码(字节码);最后,由内嵌的虚拟机生成可以在UCLinux操作系统下可执行的程序。4.根据权利要求3则编译程序采用的是静态语法分析方法即语法制导编译。5.根据权利要求4则是在编译的过程由FC程序的语法结构来控制,而语法结构则由语法分析器来识别。
【专利摘要】一种图形化编程系统的编译器的方法是着重分析了采用数据流模型的机器人控制系统软件的编译器的实现,运用层次化的编译思想及伪代码技术,设计出了基于API函数的编译系统方法。
【IPC分类】G06F9/45
【公开号】CN105653344
【申请号】
【发明人】杨际荣
【申请人】镇江华扬信息科技有限公司
【公开日】2016年6月8日
【申请日】2014年11月13日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1