先提一句,这个框架还挺自由,希望对你有用,目前可以翻译比较基础的c语言【对象暂时没识别,后续会更新】
先谈谈翻译代码,本篇代码采用全新模板框架,模板翻译函数
已能识别易语言我能翻译的所有结构
变量、参数、子程序、类、程序集、常量,当然除了窗口
怎么个模板翻译法?
e2ee的创建文本知道吗?有点类似。速度可能慢一点,没有用格式化文本,没做优化就拿上来给大家了,(优化了还不一定舍得开源)
比方说:
我要翻译【寻找文本】这个指令:
它有四个参数,如果直接字符串替换,会变成什么呢?
寻找文本(a,b,c,d)——> find(a,b,c,d)
明显自由度不高
那么如果我参考格式化文本的方法呢?
将参数用{x}替换
封装一下:
寻找文本({1},{2},{3},{4})——> {1}.find({2},{3})
是不是自由多了??这是好实现的吧?
于是扩展到可变参数
调试输出({…})
—>
debug(, , , , , , )
目前来说是 perfect 的!!
于是:
加上附加目录、库目录、依赖项
剖析-易语言变量、参数、子程序、类、程序集、常量,
上个图,展示一下我的格式化字符串算法,600ms处理70kb文本
支持打乱关键字失败,错位失败,复原格式
这个算法已经完善了,看看热度,热度来了就开源
正文演示:
怎么翻译?易语言的风格当然是傻瓜式,照顾大家。
一键翻译
怎么添加模板?
注意:模板可以任意搭配,也包括可变参数:
模板:
你可以这样写:
寻找文本()->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
相关文章
- 1 女子西藏旅途偶遇28岁骑行“大叔”
- 2 中甲联赛大连一赛场发生球员暴力事件
- 3 某网红下播时忘记关摄像头,直播间瞬间炸了
- 4 伪娘穿裙子跳舞看起来超级辣眼睛
- 5 棺材惊现巨蟒,尸体被蛇吃了骨头都不剩!
- 6 上海路炒粉、江一烧饼店事件吸引一波波流量
- 7 滴滴司机遇上性感美女打车,下一秒却立马请她下车!
- 8 胖猫跳江去世,5个意想不到
- 9 迈腾车主刚离家出门半小时就被绿,女友带其他男人回家
- 10 日本男子花百万日元将自己变成狗
- 11 真正的调整显示器亮度
- 12 PGE游戏引擎FC快打旋风
- 13 易语言Julia集图片源码
- 14 易语言ChartV1.0模块源码
- 15 易语言OFFICE文档转换成PDF源码
- 16 易语言网络电视源码
- 17 易语言SQLite3数据库操作类模块源码
- 18 易语言ICO提取工具源码
- 19 易语言程序备份器源码
- 20 模仿QQ游戏登陆界面
-
扫码下载安卓APP
-
微信扫一扫关注我们微信扫一扫打开小程序手Q扫一扫打开小程序
-
返回顶部
发表评论