源码介绍
这个框架还挺自由,目前可以翻译比较基础的c语言(对象暂时没识别),本篇代码采用全新模板框架,模板翻译函数已能识别易语言我能翻译的所有结构“变量、参数、子程序、类、程序集、常量,当然除了窗口”。
怎么个模板翻译法?
e2ee的创建文本知道吗?有点类似。速度可能慢一点,没有用格式化文本(没做优化)比方说:我要翻译“寻找文本”这个指令,它有四个参数,如果直接字符串替换,会变成什么呢?寻找文本(a,b,c,d)——> find(a,b,c,d)明显自由度不高!
那么如果我参考格式化文本的方法呢?将参数用{x}替换,然后封装一下:“寻找文本({1},{2},{3},{4})——> {1}.find({2},{3})”是不是自由多了?这是好实现的吧?于是扩展到可变参数“调试输出({…})—>debug(, , , , , , )”于是:加上附加目录、库目录、依赖项、剖析-易语言变量、参数、子程序、类、程序集、常量(模板可以任意搭配,也包括可变参数)
模板你可以这样写;
寻找文本()->find({1},{2})
.如果()-> if({1})
结束() -> exit(0)
计次循环首()-> for(size_t i = {2}; {2} < {1} – 1; ++{2})
可变参数你可以这样写;
调试输出()-> debug({1}, {…})
也可以这样写;
调试输出()-> {2}.debug({1}, {…})
也可以这样写;
调试输出()-> {3}.debug({1}, {…})
也可以这样写;
调试输出()-> debug( {…})
模板具体是怎么替换的呢?
递归(虽然是递归,但是速度还行)取子参数,类似于树的后序遍历算法,取到最小的参数后,依次替换字符串,当然这里偷个懒,直接子字节集替换,没有用e2ee的函数,或者自己c++写个快一点的函数。
暂无评论内容