CodeGen概述
CodeGen概述
CodeGen是在协同开发环境中工作的软件开发人员可以用来生成源代码的工具。该代码可能是Synergy DBL代码,也可能是其他语言的源代码。CodeGen并不局限于为任何特定的开发环境或编程语言生成代码。
当然,你不能仅仅使用CodeGen生成任何你能想象得到的源代码。在生成代码之前,开发人员必须声明定义如何创建给定源代码的规则。这些规则在模板文件中定义。CodeGen解释开发人员在模板文件中定义的代码和指令,以便生成有用的输出。
不过,在模板文件中定义规则只是故事的一部分。为了真正有用,CodeGen还需要另一个信息源来定义要生成的内容的上下文。
大多数软件应用程序都围绕着数据的收集、表示、操作和存储。这些数据最终存储在某种类型的持久存储中,例如数据文件集合或关系数据库中的表中。当开发人员处理一段特定的源代码时,他们将他们所掌握的关于应用程序数据(元数据)的知识与规则或“业务逻辑”相结合,以便创建满足特定需求的源代码。CodeGen也这么做。
当开发人员在Synergy/DE中工作时,他们可以访问称为Synergy/DE存储库的优秀元数据源。存储库包含有关应用程序使用的数据结构以及这些数据结构的属性的大量信息。存储库还可以包含有关各种数据结构之间的关系的信息,甚至包含有关底层数据存储机制的信息。Synergy存储库是非常丰富的元数据源,也是CodeGen使用的元数据的主要来源。
对于使用Synergy/deuSynergy/DE UI Toolkiti工具箱来展示其应用程序用户界面的开发人员来说,可能还有另一个元数据源,称为窗口脚本文件。在某些情况下,CodeGen还可以使用这些文件中包含的元数据。
都是关于元数据的!gen在一个文件中结合了一些定义好的文本结构的信息。
基本原则
每次开发人员使用CodeGen生成代码时,他们通常提供两个主要信息:
1. 元数据的来源,通常是存储库结构的名称。
2. 定义要创建的内容的规则的模板文件的名称。
每次CodeGen生成一个输出文件时,它通常做三件事:
1. 从元数据源(通常是存储库结构)读取信息。
2. 从模板读取规则。
3. 将规则与元数据合并以创建输出文件。
CodeGen概述的更多相关文章
- TVM代码生成codegen
TVM代码生成codegen 硬件后端提供程序(例如Intel,NVIDIA,ARM等),提供诸如cuBLAS或cuDNN之类的内核库以及许多常用的深度学习内核,或者提供框架例,如带有图形引擎的DNN ...
- 如何在TVM上集成Codegen(上)
如何在TVM上集成Codegen(上) 许多常用的深度学习内核,或者提供DNNL或TensorRT等框架和图形引擎,让用户以某种方式描述他们的模型,从而获得高性能.此外,新兴的深度学习加速器也有自己的 ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- Java消息队列--JMS概述
1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...
随机推荐
- 【vue-07】vue-router
Vue-router官网 安装 vue-router是一个插件包,所以我们还是需要用npm 来进行安装.打开命令行工具,进入你的项目目录,输入下面命令. npm install vue-router ...
- myysql 不能远程访问的解决办法
1.通过navicat或者命令行,将user表中原来host=localhost的改为host=% 命令行方式: mysql> update user set host = '%' where ...
- 关于MDI多文档程序的一些思考
MDI程序的框架 客户窗口是一个预定义的窗口类(MDICLIENT),它是框架窗口的子窗口同时也是各个子文档窗口的父窗口.框架窗口和各个子文档窗口都是自定义的窗口类. MDI程序中的一些要点 窗口中的 ...
- Zoho:SaaS行业的“紫色奶牛”
以下文章来源于:中国软件网,作者王锦宝 蓝天白云的映衬下,一群黑白相间的奶牛在绿草场自由玩耍,这种田园牧歌场景看久了,总会引起审美疲劳.假如突然出现一头紫色奶牛,你肯定会眼前一亮,把所有注意力集中到紫 ...
- Spring 注解动态数据源设计实践
Spring 动态数据源 动态数据源是什么?解决了什么问题? 在实际的开发中,同一个项目中使用多个数据源是很常见的场景.比如,一个读写分离的项目存在主数据源与读数据源. 所谓动态数据源,就是通过Spr ...
- java集合类介绍
目录 集合类简介 List ArrayList LinkedList Vector Stack Set HashSet LinkedHashSet TreeSet Map HashMap Hashta ...
- Unix下 压缩和解压缩命令
范例: .tar 解包:tar -xvf FileName.tar 打包:tar -cvf FileName.tar DirName (注:tar是打包,不是压缩!) ---------------- ...
- QT发布 - 动态编译,删减以来dll
经常看到网上有些论调说 Qt 程序无比庞大,甚至拿 .NET 程序来比,说 Qt 程序打包以后跟 .NET 安装包差不多大.由此影响了很多人对 Qt 的选择.我觉得有必要对此做一些澄清-- 显然这个说 ...
- [转发]Linux性能测试工具之Lmbench特性、安装及使用
Linux性能测试工具之Lmbench特性.安装及使用2015年07月16日 10:13:48 Michaelwubo 阅读数:2466Linux性能测试工具Lmbench 是一套简易可移植的,符合A ...
- scala :: , +:, :+ , ::: , ++ 的区别
4 种操作符的区别和联系 :: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表.用法为 x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元 ...