八哥吃瓜群

吃瓜网是一个坐等吃瓜群众的在线吃瓜网站平台,网站主要分享生活中各种吃瓜事件,用坐等吃瓜的状态认识世界,看一个不一样的世界。

先提一句,这个框架还挺自由,希望对你有用,目前可以翻译比较基础的c语言【对象暂时没识别,后续会更新】

先谈谈翻译代码,本篇代码采用全新模板框架,模板翻译函数

已能识别易语言能翻译的所有结构

变量、参数、子程序、类、程序集、常量,当然除了窗口

怎么个模板翻译法?

e2ee的创建文本知道吗?有点类似。速度可能慢一点,没有用格式化文本,没做优化就拿上来给大家了,(优化了还不一定舍得开源)

比方说:

我要翻译【寻找文本】这个指令:

它有四个参数,如果直接字符串替换,会变成什么呢?

寻找文本(a,b,c,d)——>  find(a,b,c,d)

明显自由度不高

那么如果我参考格式化文本的方法呢?

将参数用{x}替换

封装一下:

寻找文本({1},{2},{3},{4})——>  {1}.find({2},{3})

是不是自由多了??这是好实现的吧?

于是扩展到可变参数

调试输出({…})

—>

debug(, , , , , , )

目前来说是 perfect 的!!

于是:

加上附加目录、库目录、依赖项

剖析-易语言变量、参数、子程序、类、程序集、常量

上个图,展示一下我的格式化字符串算法,600ms处理70kb文本

支持打乱关键字失败,错位失败,复原格式

这个算法已经完善了,看看热度,热度来了就开源

【新鲜玩意】【模板式翻译】【代码翻译】易语言到c

正文演示:

怎么翻译?易语言的风格当然是傻瓜式,照顾大家。

一键翻译

【新鲜玩意】【模板式翻译】【代码翻译】易语言到c

怎么添加模板?

【新鲜玩意】【模板式翻译】【代码翻译】易语言到c

注意:模板可以任意搭配,也包括可变参数:

模板:

你可以这样写:

寻找文本()->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++写个快一点的函数

辅助库来源:

【新提醒】关于参数识别_精易论坛 (125.la)

还有一个群里的大佬写的汇编寻找文本、寻找字节集

贼快的内存优化加速

鱼刺大佬的模块(在格式化文本算法(暂未开源)中,本来想用类内多线程处理的,结果发现投递任务太慢了,不如单线程,但是模块好多好用的help可以用)

基本上或多或少有点小问题,但是抛砖引玉,欢迎各位改改代码

应该可以实现简单的c->e  e->any  any->e

发表评论