我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
源码目录:CodeTemplate
相关专题:自制代码生成器(嵌入式脚本语言)_初级代码游戏的博客-CSDN博客
基础:github源码指引:源码结构、编译、运行_github编译-CSDN博客
目录
一、源码结构
几乎就是单文件:
- CodeTemplate.h 核心实现文件
- CodeTemplate_t.cpp main函数
- makefile.mk make文件(由脚本复制到makefile)
- rebuild.sh 编译脚本(基本就是cp 和 maek all)
- run.sh 运行脚本(基本就是 ../bin/可执行文件)
- simplesample.ct 代码模板
二、编译
执行rebuild.sh即可编译:
#
cp makefile.mk makefile
rm *.o ../bin/CodeTemplate.exe
../../platform/_makecpp.sh
make all
../../platform/_makecpp.sh这一句是并行编译所有cpp文件。
如果编译成功,会在../bin下看到CodeTemplate.exe。
三、运行
执行run.sh既可运行:
rebuild.sh
../bin/CodeTemplate.exe $1 $2 $3 $4 $5 $6 $7 $8 $9
脚本里面实在是没有什么,先重新编译了一遍,然后执行程序。
程序输出很多信息,最后输出了代码模板的输出结果。
四、代码模板
代码模板文件simplesample.ct如下:
simple sample
<%dim x="5"%>
${x}
<%for i from 0 less x%>
in loop ${i}
<%if i equal 2%>
22222222222222
<%endif%>
<%endfor%>
========================
<%replace%>
replace block
<%endreplace%>
<%replace sys%>
replace block 2
<%endreplace%>
========================
演示了基本的变量定义、循环、判断和替换。
五、模板输出
模板输出如下:
simple sample
5
in loop 0
in loop 1
in loop 2
22222222222222
in loop 3
in loop 4
========================
aaaaaaaaaaaaa
========================
对照模板很容易理解(sys的值是main函数里用代码设置的)。
六、main函数
main函数很简单(加了一些注释,删掉几行没用的):
//CodeTemplate_t.cpp 代码模板系统
//
// Copyright (c) ct All rights reserved.
// 版权所有 ct 保留所有权利
//
#include "CodeTemplate.h" //引入核心文件
int main(int argc, char ** argv)
{
if (!InitActiveApp("CodeTemplate", 1024 * 1024, argc, argv))exit(1);
G_IS_DEBUG = true;
{
CCodeTemplate ct; //定义核心对象
CCTObject O; //全局变量对象
CCTStack S; //堆栈对象
stringstream ss; //用来获取输出结果
O.SetObjectAddProperty("sys", "aaaaaaaaaaaaa\n"); //一个全局属性
S.Push(); //堆栈的第一级(其实可以放在ProcessTemplate的)
if (!ct.ProcessTemplate("simplesample.ct", ss, O, S)) //执行模板转换
{
thelog << "执行失败" << ende;
}
thelog <<"========================="<< endl << ss.str() << endi;
}
thelog << "程序退出" << endi;
return 0;
}
(这里是文档结束)