ArbitraryGen

混合式代码生成器
授权协议 APL
开发语言 Java
所属分类 程序开发、 代码生成工具
软件类型 开源软件
地区 国产
投 递 者 景育
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

ArbitraryGen 是一个支持混合式代码生成器。包括三种模式

  • 普通代码生成模式,直接通过在生成代码的代码中指定生成代码的样式和和模板;(思路简单,效率高,但扩展性和灵活性没那么高)

  • 脚本引擎模式,模板是通过脚本定义,使用脚本引擎来生成代码,相比(1)具有较高的灵活性和扩展性;

  • 混合式代码生成模式,模板支持脚本和源码混合的方式定义,想比(2)更为灵活和可扩展性。

特性:

  1. 将脚本和源码混合到代码的源文件中;

  2. 代码生成操作是可持续的;

  3. 脚本在代码生成后不会被删除,而是将生成的代码附于脚本区域之后,以便于脚本的可持续使用;

  4. 每次生成代码前会将上次生成的代码删除。

代码解析流程

1、解析的大致流程

生成代码的流程,先用一个transfer脚本将模板文件(包含生成代码的脚本程序片段),转换成可执行的、完整的脚本程序,最后通过脚本引擎运行得到的脚本程序从而生成所需的代码程序。

实际上,模板文件是一个脚本程序和原代码混合的体,需要用transfer脚本去将模板文件里面的脚本和源码的混合体转换成脚本引擎能够执行的脚本程序,一句话就是脚本引擎运行用脚本去解析脚本得到的脚本!

2、模板文件的处理

解析思路:将模板文件切割成n段,将脚本代码和原代码分离,最终组合成一段脚本代码,再将数据源注入,通过脚本引擎运行脚本,生成想要的代码。

1)将源代码扫描一遍,遇到脚本起始标识/@@@#SCRIPT-BEGIN#,此处作为一个分割点,开始拼接脚本代码,直到遇到 #SCRIPT-END#@@@/ 脚本区结束标识,结束脚本代码的拼接;

2)遇到//@@@#AUTO-GEN-BEGIN# 已生成代码代码起始标识,程序将忽略后面的所有字符,直到遇到 //@@@#AUTO-GEN-END# 已生成代码结束标识才停止;

3)其它非1)和2)情况的串,将当做普通的字符串拼接起来;

4)经过上述的过程,可以得到一个完整可执行的脚步程序了。

 相关资料
  • 问题内容: 我对如何混合剃须刀和js感到很困惑。这是我坚持的当前功能: 如果我可以用声明c#代码,而其他所有内容都是JS代码,这就是我的追求: 实现此目的的最佳方法是什么? 问题答案: 用途:

  • 我正在根据参考指南学习使用Map结构。日食验证是 面向Web开发人员的Eclipse Java EE IDE。版本:开普勒服务版本2 pom。xml如下所示,与参考指南相同 它表示在构建项目时将生成实现代码。但是,它似乎不会在目标/生成的源文件夹下生成

  • Jboot 内置了一个简易的代码生成器,可以用来生成model层和Service层的基础代码,在生成代码之前,请先配置jboot.properties关于数据库相关的配置信息,Jboot 代码生成器会通过该配置去链接数据库。 jboot.datasource.type=mysql jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/jbootdemo

  • 遵照此规范,在实际操作中,有许多重复。接下来推荐一款专为本规范量身定做的代码生成器 Laravel 5.x Scaffold Generator。 本扩展支持 5.1 ~ 5.5 版本的 Laravel。 只需要一个命令: 即可生成: $ php artisan make:scaffold Projects --schema="name:string:index,description:text:

  • 本文向大家介绍python随机生成大小写字母数字混合密码(仅20行代码),包括了python随机生成大小写字母数字混合密码(仅20行代码)的使用技巧和注意事项,需要的朋友参考一下 用简单的方法生成随机性较大的密码 仅用20行代码随机生成密码 核心思路:利用random模块 random模块随机生成数字,大小写字母,循环次数 while循环+随机生成的循环次数——>随机plus++ 大写字母ASKI

  • Sergen 有一些额外的配置选项,你可以通过解决方案目录下的配置文件(Serenity.CodeGenerator.config)设置。 这是所有的配置选项: public class GeneratorConfig { public List<Connection> Connections { get; set; } public string KDiff3Path { get