C语言代码自动生成工具
一、模型建模模块:
基于开源开发平台Eclipse,以图形方式创建和编辑模型元素,模型元素如下:
- 活动:初始活动、简单活动、复杂活动、结束活动;
- 状态:初始状态、状态、结束状态;
- 变迁:活动变迁、状态转移;
- XorSplit和XorJoin:条件分支和合并;
- AndSplit和AndJoin:同步并发分支和合并;
支持文本和form两种方式对模型进行数据定义,同时支持顺序、循环、条件分支和同步并发四种控制模式。建模结束后,可以将模型图以XML文件的形式保存并导出,XML文件中包括模型元素信息以及对应的矢量信息;
二、模型验证模块
(1)可达性验证:除开始和结束活动/状态外,其他节点既要有入度也要有出度;
(2)元素完整性验证:满足建模规范
(3)死锁性验证:
- 不允许出现循环交叉的情况;
- 不允许出现循环重复出现的情况;
(4)分支条件完整性验证:
- 每个XorSplit对应的分支路径,guard条件不能有交集
- 每个XorSplit对应的分支路径,guard条件取并集应该为1
针对分支进行检测:if(g1==true) else if(g2==ture) else if(g3==true)
三、代码生成模块:
将从图形化建模模块获取到的模型信息,转换为高质量的C语言代码,这些代码在经过相应的编译和链接之后可以在指定的目标平台上运行;
支持顺序结构、条件分支结构、循环结构、同步并发结构及其相互嵌套;
- 定义模型到目标语言(C语言)的映射规则;
- 解析XML格式存储的模型,将得到的信息以直观的数据结构进行存储;
- 设计代码生成算法;
- 代码进行规范化,输出完整的.h和.c文件;
方法1:基于模型重构的代码生成
根据提取的信息将模型转成有向图,设计算法识别出各个循环结构、分支结构、同步结构的开始和结束,划定结构作用域,同时设计了结构线性化算法将含有循环结构、分支结构、同步结构的有向图线性化,最后使用递归的方法从开始节点顺序进行代码生成。
参考论文:
王黎明, 王帼钕, 周明媛, 等. 程序流程图到代码的自动生成算法[J]. 西安电子科技大学学报, 2012, 39(06):70-77.
李文鑫. 基于模型的代码生成技术及软件可靠性分析的研究[D].哈尔滨工业大学,2019.
方法2:基于语法树结构的代码生成
语法树可以保存模型元素、元素之间的顺序结构、分支结构、循环结构、同步结构及各种嵌套组合关系,这是因为模型解析后生成的代码的整体结构是顺序结构,其中某些节点包含一些嵌套结构,嵌套关系是一种包含关系,例如 while 循环结构包含 if判断;根据提取的信息将模型转成语法树结构定义语法树中某一节点的左孩子节点保存顺序结构,右孩子节点保存嵌套结构。转成语法树结构,可以抽象的理解为将模型中的环全部消除,同时把循环、分支、同步转成了接近顺序的一种结构。考虑到结构的嵌套,使用递归的方法从根结点顺序进行代码生成。
参考论文:
秦超. 流程图代码自动生成算法的研究与实现[D].西安电子科技大学,2014.
C语言代码自动生成工具相关推荐
- 应用在核电站DCS系统的代码自动生成工具ModelCoder
对标航空航天领域,核电新型号作为典型复杂系统在未来的发展趋势和任务变得十分明确,即正规化.标准化地应用MBSE从概念设计.初步设计.持续贯穿至详细设计.施工.调试.运维.退役的全生命周期各阶段,开发出 ...
- 国产自主可控的代码自动生成工具SkyEye
传统的系统开发过程,都是由工程师根据项目需求书来编写代码完成系统的开发,但随着功能的扩充和版本的迭代,系统中庞大的代码量很难确保正确无误,给后期测试和仿真带来了很大的压力和成本,在航空航天.卫星系统. ...
- 使用Java代码自动生成工具:Telosys
在Java开发工具中Java代码自动生成工具是很常见的,代码生成是模型驱动开发中最简单和最常用的技术.我们使用一个信息源,一种模型形式,并将其与一些模板结合起来以获得生成的工件,例如代码. 代码生成是 ...
- 自动产生fsm代码的工具_代码自动生成工具
构建支持多种数据库类型的代码自动生成工具 背景: 一般的业务代码中写来写去,无外乎是先建好model,然后针对这个model做些CRUD的操作.(主要针对单表的业务操作)针对于数据库dao.mappe ...
- 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...
- 国产自主可控的形式化验证代码自动生成工具ModelCoder可替代Matlab/Sumlink
在安全关键领域,基于模型的软件工程或者软件开发已逐渐进入了我国的装备研制过程中.使用SimuLink或者SCADE等嵌入式软件建模工具对算法或者控制逻辑进行可视化建模,然后生成高可靠的二进制代码逐渐成 ...
- java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...
- freemarker mysql 生成bean_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)...
TableGo_20191026 v6.6.6 正式发布,此次版本更新如下: 1.新增通过自定义模板生成Word文档的功能,可以使用FreeMarker模板生成自定义格式的数据库文档. 2.新增 Sw ...
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)
TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下: 1.新增对JDK9及以上版本Java环境的支持 2.生成JavaBean更名为生 ...
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.4.0版)
TableGo_20210921 v7.4.0 正式版发布,此次版本累计更新如下: 1.新增企业或个人的简单定制版本,为企业和个人提供软实力的增值 2.新增导入 ...
最新文章
- 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!
- Bzoj2141: 排队
- android的读取xml配置文件,android中XMl文件的读取
- iOS开发日记46-倒计时效果的实现
- 死锁必要条件、解决死锁策略
- Docker 简易搭建 ElasticSearch 集群教程
- java selenium click_按钮单击selenium java
- GeoTools——shp转geojson
- memcached整理の基本使用
- C语言知识点总结(三)
- C语言(二)C语言程序结构及简单的C程序举例
- CSS3+JavaScript效果:胶卷式放映
- 手机计算机数字游戏怎么玩,计算器游戏攻略
- 人参果水果宣传文案模版,水果店文案人参果
- Shell中显示彩色二维码
- Hive sql常用语句
- 用Ultraiso刻录U盘装系统
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之27---BREW 应用定价
- 【学习计算机组成原理】原码除运算
- Linux find命令 | 菜鸟教程