ArbitraryGen - 混合式代码生成器


未知
跨平台
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)经过上述的过程,可以得到一个完整可执行的脚步程序了。