github源码指引:一个自制代码生成器(嵌入式脚本语言)

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        源码目录:CodeTemplate

        相关专题:自制代码生成器(嵌入式脚本语言)_初级代码游戏的博客-CSDN博客

        基础:github源码指引:源码结构、编译、运行_github编译-CSDN博客

目录

一、源码结构

二、编译

三、运行

四、代码模板

五、模板输出

六、main函数


一、源码结构

        几乎就是单文件:

  • 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;
}

(这里是文档结束)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初级代码游戏

知识究竟是有价还是无价

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值