开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 21413|回复: 171
打印 上一主题 下一主题
收起左侧

[易源码分享] 【熔岩】完美支持易语言复刻的最强易语言脚本引擎发布

  [复制链接]
头像被屏蔽
结帖率:100% (2/2)
跳转到指定楼层
楼主
发表于 2022-8-1 21:17:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   河北省唐山市
分享源码
界面截图:
是否带模块: -
备注说明: -
火山熔岩动态编程语言 是 继 McugScript1.2 版本后 改版的引擎
支持全中文代码书写,完美还原火山以及易语言的语法特性
强大到能够实现易语言自举,脚本支持 "函数支持库" 的封装,也就是脱离主程序的函数定义集合
函数支持库 能够实现封装:函数、易语言类、常量、函数传址、自定义返回数组类型、回调主程序 的功能
脚本还可以联合多个代码文件进行操作,能够实现简单的模块化代码规划
目前性能也是迄今为止精易论坛最快的易语言脚本引擎
脚本还支持 多线程操作,经spy++验证为真 多线程
除了支持多线程之外本脚本语言还支持多例脚本引擎同时存在多个熔岩脚本项目引擎
脚本还支持及其接近于面向对象的包装方法支持,可以完美模拟面向对象的函数调用等
熔岩脚本模块可以以纯面向过程的方式调用,也可以以已经封装好的类模块的方式调用
脚本也还支持DLL函数绑定,效果与易语言的DLL函数定义相通就不过多解释了
代码的书写原形是火山语言,然而纯文本编辑看上去更像python的画风,但其实写出来的代码是和易语言中一模一样的
脚本引擎过硬的素质不需多说,足矣完美协助易语言程序进行更丰富的编程体验
能够轻松完成易语言动态热更自举,能够让你体验到用易语言写易语言的快感是多么舒适
也能够轻松兼任 易语言程序的 动态插件系统、动态条件执行器系统、后台做工系统、客户生态系统
脚本引擎的运行机制是 代码 通过 编译器 编译成 字节码,然后 字节码 交付给 虚拟机执行
熔岩脚本的字节码是包含很多东西的:熔岩虚拟机执行代码、文件资源常量数据、动态跟进的函数支持库
这代表你只需要有一个很简单的运行壳就能做到编译型语言一样到处游走到处耍的功能了,即时在陌生环境中没有你所调用的函数库也无关紧要,因为它们可以存在于字节码中

如果你会制作IDE,恭喜你你能利用这个脚本引擎再次制造一个属于你自己的"易语言"了

话不多说,图不多发,我就简简单单把我自己简单封装的 熔岩版精易模块 的代码发一下吧

还有许多特性作者懒得在此表述,如有需要可以进群学习探讨,QQ群:693632272
火山熔岩动态编程语言.zip (1.74 MB, 下载次数: 177)
熔岩版精易模块代码:
//火山熔岩动态编程, 纯正的中文血统动态编程语言

整数型 文本_取出现次数(文本型 被搜索文本, 文本型 欲搜索文本, 逻辑型 是否区分大小写)//返回指定文本中指定内容出现的次数
    整数型 dwSeaLen
    整数型 位置_
    整数型 i
    dwSeaLen = 取文本长度 (欲搜索文本)
    如果真 (取文本长度 (被搜索文本) > 0 && dwSeaLen > 0)
        位置_ = 寻找文本 (被搜索文本, 欲搜索文本, , 取反(是否区分大小写))
        判断循环 (位置_ != -1)
            i++
            位置_ = 寻找文本 (被搜索文本, 欲搜索文本, 位置_ + dwSeaLen)
    返回 (i)

逻辑型 取反(逻辑型 取反值)
    如果 取反值
        返回 假
    否则
        返回 真

文本型 文本_取出中间文本(文本型 欲取全文本, 文本型 前面文本, 文本型 后面文本, 整数型 起始搜寻位置, 逻辑型 是否不区分大小写)//比如:欲取全文本为“12345”,现在要取出“3”,<3>的前面为“2”,<3>的后面为“4”,
    整数型 局_前面文本位置
    整数型 局_后面文本位置
    文本型 局_前面文本
    文本型 局_后面文本
    局_前面文本 = 子文本替换(前面文本, "#引号", #引号)
    局_后面文本 = 子文本替换(后面文本, "#引号", #引号)
    局_前面文本位置 = 寻找文本(欲取全文本, 局_前面文本, 起始搜寻位置, 是否不区分大小写)
    如果 局_前面文本位置 != -1
        局_前面文本位置 = 局_前面文本位置 + 取文本长度(局_前面文本)
        局_后面文本位置 = 寻找文本(欲取全文本, 局_后面文本, 局_前面文本位置, 是否不区分大小写)
        如果 局_后面文本位置 != -1
            返回(取文本中间(欲取全文本, 局_前面文本位置, 局_后面文本位置 - 局_前面文本位置))
    返回("")

整数型 文本_取行数(文本型 欲取行数文本)//取一个文本共有有多少行。
    文本型[] 文本数组
    文本数组 = 分割文本(欲取行数文本, #换行符)
    返回 文本数组.取数组成员数()

文本型 文本_取头位(文本型 原文本, 整数型 取出数量)
    返回(文本替换(原文本, 取出数量 + 1, 取文本长度(原文本) - 取出数量, ""))

整数型 文本_取文本所在行(文本型 源文本, 文本型 欲查找的文本, 逻辑型 是否区分大小写)//查找某段字或关键中在文本中的哪一行出现,成功返回行数,失败返回0
    文本型[] 局_文本
    整数型 局_计次
    局_文本 = 分割文本(源文本, #换行符)
    计次循环(取数组成员数(局_文本), 局_计次)
        如果真(寻找文本(局_文本[局_计次], 欲查找的文本, , 取反(是否区分大小写)) != -1)
            返回(局_计次)
    返回(0)

文本型 文本_取随机范围数字(整数型 起始数, 整数型 结束数, 整数型 单双选择)
    整数型 临时整数
    如果 起始数 == 结束数
        返回(到文本(起始数))
    否则 起始数 > 结束数
        临时整数 = 取随机数(结束数,起始数)
    否则
        临时整数 = 取随机数(起始数,结束数)

    分支判断(单双选择)
        分支 (1)
            如果真(临时整数 % 2 == 0)
                如果 临时整数 == 结束数
                    临时整数 = 临时整数-1
                否则
                    临时整数 = 临时整数+1
            返回(到文本型(临时整数))
        分支 (2)
            如果真(临时整数 % 2 == 1)
                如果 临时整数 == 结束数
                    临时整数 = 临时整数 - 1
                否则
                    临时整数 = 临时整数 + 1
            返回(到文本(临时整数))
        默认分支()
            返回(到文本(临时整数))

文本型 文本_两极取中间(文本型 文本, 文本型 左面, 文本型 右面)
    整数型 位置1
    整数型 位置2
    位置1 = 寻找文本(文本, 左面) + 取文本长度(左面)
    位置2 = 倒找文本(文本, 右面)
    返回(取文本中间(文本, 位置1, 位置2 - 位置1))

文本型 文本_删除空行(文本型 操作文本)//  删除文本当中的空白行
    文本型[0] W
    整数型 I
    文本型 R
    W = 分割文本(操作文本, #换行符)
    如果真(取数组成员数(W) != 0)
        计次循环(取数组成员数(W), I)
            如果真(删首尾空(W[I]) != "")
                如果 R == ""
                    R = W[I]
                否则
                    R = R + #换行符 + W[I]
    返回(R)

文本型 文本_孤立空格(文本型 操作文本)//将文本中所有的连体空格替换为单个空格
    文本型 暂存
    暂存 = 操作文本
    判断循环(寻找文本(暂存,"  ") != -1)
        暂存 = 子文本替换(暂存, "  "," ")
    返回(暂存)

文本型 文本_取指定变量文本行(文本型 文本, 整数型 行号)//成功返回指定的文本行文本,失败返回空文本。
    文本型[] 文本数组
    文本数组 = 分割文本(文本, #换行符)
    如果真 (行号 <= 0)
        返回("")
    如果真 (行号 > 取数组成员数(文本数组))
        返回("")
    返回(文本数组[行号])

空 娱乐_输出九九乘法表()
    整数型 I
    整数型 K
    计次循环(9, I)
        计次循环(I, K)
            标准输出(K + "x" + I + "=" + I*K + "  ")
        输出换行()
    标准输入()

文本型 文本_插入到某行(文本型 源文本, 文本型 欲插入文本, 整数型 欲插入某行后)
    文本型[] 文本数组
    文本型[] 中断数组
    文本型 返回文本
    整数型 索引
    文本数组 = 分割文本(源文本, #换行符)
    如果 欲插入到某行后 == 取数组成员数(文本数组)
        加入成员(文本数组, 欲插入文本)
    否则
        索引 = 欲插入到某行后
        判断循环 索引 < 取数组成员数(文本数组)
            索引 = 索引 + 1
            加入成员(中断数组, 文本数组[索引])
            删除成员(文本数组, 索引)
        加入成员(文本数组, 欲插入文本)
        计次循环(取数组成员数(中断数组), 索引)
            加入成员(文本数组, 中断数组[索引])
    计次循环(取数组成员数(文本数组), 索引)
        如果 返回文本 == ""
            返回文本 = 文本数组[索引]
        否则
            返回文本 = 返回文本 + #换行符 + 文本数组[索引]
    返回(返回文本)

文本型 文本_数组合并(文本型[] 欲合并文本数组, 文本型 合并符)//连接数组,类似VB中的join方法,合并一个文本数组到字符串。
    文本型 返回文本
    整数型 I
    计次循环 (取数组成员数(欲合并文本数组), I)
        如果 返回文本 == ""
            返回文本 = 欲合并文本数组[I]
        否则
            返回文本 = 返回文本 + 合并符 + 欲合并文本数组[I]
    返回 返回文本

文本型 文本_取左边(文本型 被查找的文本, 文本型 欲寻找的文本, 整数型 起始搜寻位置, 逻辑型 是否不区分大小写)//从文本的左边按 欲寻找的文本 开始寻找
    整数型 局_长度
    整数型 局_起始搜寻位置
    整数型 局_方向
    整数型 局_找到的位置
    文本型 局_返回结果
    局_长度 = 取文本长度(被查找的文本)

    局_起始搜寻位置 = 起始搜寻位置
    如果真 (局_起始搜寻位置 < 0)
        局_起始搜寻位置 = 局_起始搜寻位置 * -1
        如果真 (局_起始搜寻位置 == 1)
            局_起始搜寻位置 = 0
        局_方向 = 1

    如果 局_方向 == 1
        局_找到的位置 = 倒找文本(被查找的文本, 欲寻找的文本, 局_长度 - 局_起始搜寻位置 + 1, 是否不区分大小写)
    否则
        如果真 (局_起始搜寻位置 == 0)
            局_起始搜寻位置 = 1
        局_找到的位置 = 寻找文本(被查找的文本, 欲寻找的文本, 局_起始搜寻位置, 是否不区分大小写)

    如果真 (局_找到的位置 == -1)
        返回 ("")

    局_返回结果 = 取文本左边(被查找的文本, 局_找到的位置 - 1)
    返回(局_返回结果)

文本型 文本_取右边(文本型 被查找的文本, 文本型 欲寻找的文本, 整数型 起始搜寻位置, 逻辑型 是否不区分大小写)//从文本的右边按 欲寻找的文本 开始寻找, 取行右边 (“1234567890”, “5”, 1, 真)
    整数型 局_长度
    整数型 局_起始搜寻位置
    整数型 局_方向
    整数型 局_找到的位置
    文本型 局_返回结果
    局_长度 = 取文本长度(被查找的文本)

    局_起始搜寻位置 = 起始搜寻位置
    如果真 (局_起始搜寻位置 < 0)
        局_起始搜寻位置 = 局_起始搜寻位置 * -1
        如果真 (局_起始搜寻位置 == 1)
            局_起始搜寻位置 = 0
        局_方向 = 1

    如果 局_方向 == 1
        如果真 (局_起始搜寻位置 == 0)
            局_起始搜寻位置 = 1
        局_找到的位置 = 寻找文本(被查找的文本, 欲寻找的文本, 局_起始搜寻位置, 是否不区分大小写)
    否则
        局_找到的位置 = 倒找文本(被查找的文本, 欲寻找的文本, 局_长度 - 局_起始搜寻位置 + 1, 是否不区分大小写)

    如果真 (局_找到的位置 == -1)
        返回("")

    局_返回结果 = 取文本右边(被查找的文本, 局_长度 - 取文本长度(欲寻找的文本) - 局_找到的位置 + 1)
    返回(局_返回结果)

文本型 文本_替换行内容(文本型 文本, 整数型 行数, 文本型 替换内容)//替换指定行整行内容,返回替换后的文本。
    文本型 输出文本
    整数型 计次
    文本型[] 临时文本
    整数型 局_总数
    临时文本 = 分割文本(文本, #换行符)
    局_总数 = 取数组成员数(临时文本)
    如果真 (行数 > 局_总数)
        调试输出("传入行数大于实际文本行")
        返回 ("")
    临时文本[行数] = 替换内容
    计次循环(局_总数, 计次)
        如果真 (取数组成员数(临时文本) != 计次)
            输出文本 = 输出文本 + 临时文本[计次] + #换行符
            到循环尾()
        输出文本 = 输出文本 + 临时文本[计次]
    清除数组(临时文本)
    返回(输出文本)

整数型 文本_取文本行出现次数(文本型 被搜寻文本, 整数型 行数)//取某行文本共出现了多少次,不存在返回-1。
    文本型[] 文本数组
    整数型 出现的次数
    文本数组 = 分割文本(被搜寻的文本, 文本_取指定变量文本行(被搜寻的文本, 行数))
    出现的次数 = 取数组成员数(文本数组) - 1
    如果 出现的次数 < 0
        清除数组(文本数组)
        返回(-1)
    否则
        清除数组(文本数组)
        返回(出现的次数)

空 鼠标_双击(整数型 横坐标, 整数型 纵坐标)
    鼠标_单击(横坐标,纵坐标,1)
    鼠标_单击(横坐标,纵坐标,1)

//类型: 1 = 鼠标左键单击;2 = 鼠标右键单击;3 = 鼠标左键按住不放;
空 鼠标_单击(整数型 横坐标,整数型 纵坐标,整数型 类型)
    整数型 X = 取鼠标水平位置()
    整数型 Y = 取鼠标垂直位置()
    整数型 局_标志
    如果(类型 == 0)
        类型 = 1
    如果(横坐标 == 0)
        横坐标 = X
    如果(纵坐标 == 0)
        纵坐标 = Y
    如果真(类型 > 0 && 类型 < 4)
        分支判断(类型)
            分支(1)
                局_标志 = 6
            分支(2)
                局_标志 = 24
            分支(3)
                局_标志 = 3
        鼠标_绝对移动(横坐标, 纵坐标)
        mouse_event(局_标志,横坐标,纵坐标,0,0)

//类型: 0.敲击 1.按下 2.放开
空 键盘_单击(整数型 键代码, 整数型 类型)
    分支判断(类型)
        分支(0)
            keybd_event(键代码,0,0,0)
            延迟(30)
            keybd_event(键代码,0,2,0)
        分支(1)
            keybd_event(键代码,0,0,0)
        分支(2)
            keybd_event(键代码,0,2,0)

逻辑型 文件_下载(文本型 下载地址, 文本型 保存路径)
    文本型 新地址
    文本型 新路径
    整数型 计次
    如果(寻找文本(下载地址,"://") == -1)
        新地址 = "http://" + 下载地址
    否则
        新地址 = 下载地址
    如果(文件是否存在(保存路径))
        如果(删除文件(保存路径))
            新路径 = 保存路径
        否则
            返回(假)
    否则
        新路径 = 保存路径
    //DeleteUrlCacheEntry(新地址)
    返回(URLDownloadToFileA(0,新地址,新路径,0,0))

#DLL "urlmon.dll" 整数型 URLDownloadToFileA URLDownloadToFileA(整数型,文本型,文本型,整数型,整数型)
#DLL "user32.dll" 整数型 keybd_event keybd_event(整数型,整数型,整数型,整数型)
#DLL "user32.dll" 空 mouse_event mouse_event(整数型,整数型,整数型,整数型,整数型)//标志组合,水平方向,垂直方向,数据信息,扩展数据信息
#DLL "user32.dll" 空 鼠标_绝对移动 SetCursorPos(整数型,整数型)//横坐标,纵坐标
#DLL "shlwapi.dll"  文本型 文件_取扩展名  PathFindExtensionA(文本型)                  //欲取扩展名的文件
#DLL "shlwapi.dll"  逻辑型 文件_改扩展名  PathRenameExtensionA(文本型,文本型)         //欲改扩展名的文件,欲改成新的扩展名
#DLL "user32.dll"   整数型 消息框         MessageBoxA(整数型,文本型,文本型,整数型)    //父窗口,消息内容,标题,图标及按钮
#DLL "shlwapi.dll"  文本型 文件_取文件名  PathFindFileNameA(文本型)                  //文件全名
#DLL "Kernel32.dll" 逻辑型 删除指定文件   DeleteFileA(文本型)                        //欲删除文件名
#DLL "user32.dll"   逻辑型 投递消息       PostMessageA(整数型,整数型,整数型,整数型)   //hwnd,消息号,消息参数1,消息参数2



_TOI95GD8KO7CVR5YG.png (86.17 KB, 下载次数: 0)

_TOI95GD8KO7CVR5YG.png

S95IXOHG5K3NGZP8KTT.png (126.89 KB, 下载次数: 0)

S95IXOHG5K3NGZP8KTT.png

点评

易语言自举 属实厉害了   新疆维吾尔自治区乌鲁木齐市  发表于 2022-8-2 14:39
编写要传播的模块,建议取消调用支持库,你这用的支持库太多了 7个   四川省成都市  发表于 2022-8-1 22:26

评分

参与人数 7好评 +7 精币 +16 收起 理由
740949011 + 1 + 2 YYDS~!
Zangetsu + 1 支持开源~!感谢分享
划落的天空 + 1 如何再支持UI,那就更完美了
a135123 + 1 + 2 支持开源~!感谢分享
李泽勇2 + 1 + 2 新技能已get√
冰点 + 1 + 5 感谢分享,很给力!~
maozaiba + 1 + 5 奉上小小红包希望笑纳

查看全部评分


本帖被以下淘专辑推荐:

头像被屏蔽
结帖率:100% (2/2)
来自 89楼
 楼主| 发表于 2022-8-3 22:32:52 | 只看该作者   河北省唐山市
本帖最后由 咖啡胤sky 于 2022-8-4 17:05 编辑

用户手册
目前只写好了入门级的用户手册,正在编写开发者手册

熔岩用户手册入门.doc

454.54 KB, 下载次数: 53, 下载积分: 精币 -2 枚

熔岩用户手册

回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:100% (2/2)
来自 105楼
 楼主| 发表于 2022-8-4 22:53:16 | 只看该作者   河北省唐山市
更加深入的了解熔岩疫引擎的使用方法以及了解基层运行原理

熔岩开发手册(深入).doc

180.77 KB, 下载次数: 33, 下载积分: 精币 -2 枚

熔岩开发者手册

回复 支持 反对

使用道具 举报

170
发表于 2024-4-6 06:10:41 | 只看该作者   广东省广州市
谢谢分享
回复 支持 反对

使用道具 举报

169
发表于 2024-3-11 21:41:38 | 只看该作者   上海市上海市

此人为骗子,各位注意。现账号已被平台封禁
回复 支持 1 反对 0

使用道具 举报

结帖率:83% (5/6)

签到天数: 1 天

168
发表于 2023-12-19 11:51:11 | 只看该作者   浙江省嘉兴市
群满了,加不进去..
回复 支持 反对

使用道具 举报

结帖率:43% (3/7)

签到天数: 9 天

167
发表于 2023-11-24 10:14:38 | 只看该作者   广东省湛江市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

166
发表于 2023-7-26 17:47:51 | 只看该作者   广西壮族自治区南宁市
这是用来做什么的啊?
回复 支持 反对

使用道具 举报

签到天数: 9 天

165
发表于 2023-7-14 10:57:28 | 只看该作者   浙江省舟山市
学习一下~~
回复 支持 反对

使用道具 举报

164
发表于 2023-6-4 00:03:54 | 只看该作者   广东省深圳市
666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
163
发表于 2023-5-9 10:21:27 | 只看该作者   黑龙江省哈尔滨市
这么好的东西,我精币有点不够了。。。
回复 支持 反对

使用道具 举报

签到天数: 1 天

162
发表于 2023-2-12 16:06:54 | 只看该作者   广东省中山市
楼主
牛逼啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表