CN105653344A - 一种图形化编程系统的编译器的方法 - Google Patents
一种图形化编程系统的编译器的方法 Download PDFInfo
- Publication number
- CN105653344A CN105653344A CN201410635141.0A CN201410635141A CN105653344A CN 105653344 A CN105653344 A CN 105653344A CN 201410635141 A CN201410635141 A CN 201410635141A CN 105653344 A CN105653344 A CN 105653344A
- Authority
- CN
- China
- Prior art keywords
- layer
- code
- compiler
- compiling
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种图形化编程系统的编译器的方法是着重分析了采用数据流模型的机器人控制系统软件的编译器的实现,运用层次化的编译思想及伪代码技术,设计出了基于API函数的编译系统方法。
Description
技术领域
一种图形化编程系统的编译器的方法主要是涉及计算机编译方面领域。
背景技术
教育、娱乐型机器人是将娱乐性和技术创造相融合,逐步成为机器人研究的热点之一,形成了巨大的市场感召力。基于图形化编程的机器人专用软件研究系统(GraphicalRobotSpecialSoftwarestraySystem,GR4S)是典型的图形化编程环境。使用该系统的用户无需任何的程序设计语言知识,只要将所需的图标从功能模块面板中拖拽到编程工作区,按照一定的逻辑顺序进行连线就完成了以往复杂的编程过程。
本方法主要分析现代编译器的体系结构,指出了其中存在的缺陷;并根据GR4S系统及其相关硬件的特点,设计出一种基于API函数框架的有效编译系统,改进以上缺陷;通过调用GR4S的编译器,实现了目标代码为API/伪c语言代码(FakeC,简称FC)的编译过程。
发明内容
通过国家专利检索没有发现关于此系统方面的申请资料。
GR4S编译器主要采用了伪代码、三层次编译系统等关键技术,使用该编译系统以能编译生成基于API函数的FC语言目标代码的基本框架。
GR4S是典型的图形化编程环境,与传统文本编程的流程不同,其核心是基于结构化的数据流的编程方式。GR4S系统中编译器是图形语言与目标语言之间的桥梁;不难发现,一个数据流的自然表示是一个图形或图表,而数据流模型是一个比基于文本语言的控制流更为丰富的计算模型,因为其本质是并行。随着,计算机速度不断加快,存储容量不断增长,计算机屏幕不断加大,直接进行交互式的数据流图编辑是十分简单的。
编译过程可分三个层次:第一层是用户层,用户可以将编好的图形化机器人程序生成对应的伪代码;第二层是中间层,对于用户是透明的,在这一层中编译器将伪代码翻译为汇编指令;第三层实现层,将汇编指令解释为机器代码,这一层对用户来说也是透明的,用户无需了解实现细节,直接通过,GR4S中的下载功能,将机器代码下载到机器人控制器。具体为以下四个步骤:首先,将由PC上的图形化编程环境得到图形语言转换为FC代码;其次,将FC代码映射到汇编语言;然后,将映射得到的汇编语言转换为目标程序代码(字节码);最后,由内嵌的虚拟机生成可以在uCLinux操作系统下可执行的程序。
GR4S中的编译器虽然仍是以编译原理和编译技术为基础实现的,但是其独特性表现在两点:第一,它的源程序是图形框图,而不是其他基于命令行的高级编程语言;第二,它的目标程序是伪c语言代码,并不是机器所能识别的二进制代码。
编译器的开发工具选择的是VisualC++,具有非常友好的人机交互界面,强大的编译管理功能、齐全的基本类库以及完备的调试工具,是目前使用最广泛的开发语言之一。
编译程序采用的是静态语法分析方法即语法制导编译,其基本思想是在编译的过程由FC程序的语法结构来控制,而语法结构则由语法分析器来识别。事实上,语义分析和代码生成是编译程序的主要部分,这部分的主要代码如下:
Compile_C_(char*strFileName);
{charstrASMFileName[MAX_FILENAME_LENJ;
HANDLEhFile;
DWORDdwNumberOfBytesWritten;
intnThreadStart,nThreadEnd,i;
charstrl[256],str2[256];
//stepl.打开C语言文件
if(strFileName=NULL)
retumFALSE;
if(OpenCFile(strFileName))
strcpy(this->m_strCFileName,strFileName);
elsereturnFALSE;
//step2.打开codemap数据文件
if(!OpenCodeMapFile())
returnFALSE;
//step3.对C代码进行处理
//去除所有注释
if(!this->RemoveAllRemarks())
returnFALSE;
//去除所有控制字符
if(!this->RemoveAUControlChar())
returnFALSE;
//3.将编译好的代码写入文件
strcpy(strASMFileName,this->m_strAppPath);
strcat(strASMFileName,ASM_FILE_PATH);
if((hFile=::CreateFile(strASMFileName,
GENERIC_READGENERIC_WRITE,
0,NULL,CREATE_ALWAYS,
FILE_ATnRIBUTE_NORMAL,
null))!=INVAI皿_HANDLE_VAlue)
{//将代码写入文件
if(!::WriteFile(hFILe,Tasking.strASMCode,
strlen(Tasklnfo.strASMCode),&dwNum-betOfBytesWritten,NULL))
{CloseHandh(hFile);
returnFALSE;}
CloseHandle(hFile);}
elsereturnFALSE;
retumTRUE;}
而GR4S编译器的实现是基于API函数框架的,因此,充分利用了API函数的特性和面向对象的特性。对于词法分析器以及语义分析和目标代码的生成的实现,都是编写在CCompile2Asm这个编译类中,这样可以方便编码器内部的相互访问,又有利于程序员在编译的各个不同阶段的调试,随时添加编译效率的方法。
Claims (5)
1.一种图形化编程系统的编译器的方法其主要特征是采用了层次化编译的方法。
2.根据权利要求1的方法则是分成三个层次:第一层是用户层,用户可以将编好的图形化机器人程序生成对应的伪代码;第二层是中间层,对于用户是透明的,在这一层中编译器将伪代码翻译为汇编指令;第三层实现层,将汇编指令解释为机器代码。
3.根据权利要求2则其具体步骤为:首先,将由PC上的图形化编程环境得到图形语言转换为PC代码;其次,将PC代码映射到汇编语言;然后,将映射得到的汇编语言转换为目标程序代码(字节码);最后,由内嵌的虚拟机生成可以在uCLinux操作系统下可执行的程序。
4.根据权利要求3则编译程序采用的是静态语法分析方法即语法制导编译。
5.根据权利要求4则是在编译的过程由FC程序的语法结构来控制,而语法结构则由语法分析器来识别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410635141.0A CN105653344A (zh) | 2014-11-13 | 2014-11-13 | 一种图形化编程系统的编译器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410635141.0A CN105653344A (zh) | 2014-11-13 | 2014-11-13 | 一种图形化编程系统的编译器的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105653344A true CN105653344A (zh) | 2016-06-08 |
Family
ID=56483962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410635141.0A Pending CN105653344A (zh) | 2014-11-13 | 2014-11-13 | 一种图形化编程系统的编译器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653344A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406890A (zh) * | 2016-09-23 | 2017-02-15 | 江西洪都航空工业集团有限责任公司 | 一种利用多语言建立机器人模块的方法 |
CN107168698A (zh) * | 2017-04-24 | 2017-09-15 | 华南理工大学 | 图形化编程的自动编译方法 |
CN107656726A (zh) * | 2017-10-10 | 2018-02-02 | 北京元比特科技有限责任公司 | 一种互联网信息及技术共享平台及方法 |
CN109710242A (zh) * | 2018-12-29 | 2019-05-03 | 深圳点猫科技有限公司 | web端图形化编程的交互方法、系统及电子设备 |
-
2014
- 2014-11-13 CN CN201410635141.0A patent/CN105653344A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406890A (zh) * | 2016-09-23 | 2017-02-15 | 江西洪都航空工业集团有限责任公司 | 一种利用多语言建立机器人模块的方法 |
CN107168698A (zh) * | 2017-04-24 | 2017-09-15 | 华南理工大学 | 图形化编程的自动编译方法 |
CN107168698B (zh) * | 2017-04-24 | 2020-11-24 | 华南理工大学 | 图形化编程的自动编译方法 |
CN107656726A (zh) * | 2017-10-10 | 2018-02-02 | 北京元比特科技有限责任公司 | 一种互联网信息及技术共享平台及方法 |
CN109710242A (zh) * | 2018-12-29 | 2019-05-03 | 深圳点猫科技有限公司 | web端图形化编程的交互方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Khandkar et al. | A domain specific language to define gestures for multi-touch applications | |
US10592211B2 (en) | Generation of application behaviors | |
CN105653344A (zh) | 一种图形化编程系统的编译器的方法 | |
WO2015039628A1 (zh) | 可视化步骤编程法 | |
CN103970591B (zh) | 一种Matlab‑ATP集成自动化调用方法 | |
CN105204837B (zh) | 一种逻辑编程的实现方法和装置 | |
Kaswan et al. | Python for Beginners | |
CN101000555B (zh) | 手持终端系统 | |
CN101488095A (zh) | 编译方法以及编译程序 | |
US9934006B2 (en) | Scalable code division and workflow chart | |
Moser et al. | Domain-specific modeling in industrial automation: Challenges and experiences | |
Khalid et al. | Python based power system automation in PSS/E | |
CN104123166A (zh) | 一种非Xcode环境下ipa安装包生成方法 | |
CN106569867A (zh) | 一种图形化编译器的方法 | |
CN103955424B (zh) | 一种虚拟化嵌入式二进制软件缺陷检测系统 | |
CN101887500A (zh) | 基于标签的程序控制流深度混淆方法 | |
CN109062554A (zh) | 一种面向多操作对象的编程方法 | |
Calò et al. | Towards A Visual Programming Tool to Create Deep Learning Models | |
CN106815003A (zh) | 一种计算机语言的交互系统及交互方法 | |
Donatiello et al. | Laying the path to consumer-level immersive simulation environments | |
JP5755103B2 (ja) | ブロック線図処理装置およびブロック線図の処理方法 | |
Fouilleul et al. | A poly-temporal programming environment for live shows and interactive installations | |
CN109032574A (zh) | 一种面向多操作对象的编程系统 | |
Kulkarni et al. | A survey on graphical programming systems | |
Xu | Programming Features and Technical Analysis of Computer Software Java |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160608 |