前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

DIY一款开发语言

我内心深处一直怀揣着一个小的梦想,开发一款属于自己的开发语言。但是我几乎可以说是零基础,对于开发语言的相关知识和技术一窍不通。面对如此巨大的挑战,只能去CV了。

JavaScript 解释器otto很不错。应用场景也挺多,是一个不可多得的优秀范例,当然goja也很不错,但是涉及到了字节码生成和虚拟机这些,目前对我来说确实功力不足,难以驾驭;再加上坦诚而言,本人确实对 JavaScript 的语法情有独钟。也正因如此,在构建自己的开发内容时,语法规则方面基本上采取了照搬照抄的方式。

基于此,我开始了漫长而艰辛的参考和修改之路。终于成功地做出了 V1 版本。这个版本虽然还存在着一些不足之处,但它的诞生对于我来说,无疑是一个具有里程碑意义的重要时刻。

然而,即便如此,仍有部分内容尚未实现。比如 prototype(原型)、new(创建对象)、do(循环结构)、while(循环结构),swtich等。这些未实现的部分是个人不太喜欢这几个语法所以并未实现。

该语言主要采用Go作为开发语言,第一Go够简单,没有啰嗦的语法且通过syscall也算能比较方便的够到window库;第二Go可以很方便的打包为EXE,作为不熟悉PE结构的来说,这就是很大的优势了,通过window库将源代码和图标可以作为资源的方式内嵌到EXE中,然后就能直接运行了,没有额外的文件,独立的EXE还是很香的。

语言设计之初就是为了支持window上的GUI开发,所以在github上找到了一个winc库,修修改改加入了进来,这样就可很方便的创建一个window界面程序,仅需短短数行代码就可实现。

语言够开放,比如想要加入excel读写支持:1、导入支持的包比如excelize或者自己编写excel的com接口。2、在GlobalObject中定义相关API即可;可以在gitee上查看相关demo。

现在就来看看如何编写一段代码快捷的实现一个GUI界面

Win.create("BxScript", 800, 600, true, false, true)
Win.add([
    {type: "button", id: "submit", title: "获取最新时间", width: 100, height: 30, x:325, y: 135, fontSize: "10", font: "微软雅黑"},
    {type: "input", id: "timeInput", title: "默认文本", width: 220, height: 30, x:100, y: 135, fontSize: "10", font: "微软雅黑"},
    {type: "label", id: "timeLabel", title: "这段代码将展示如何获取最新时间", width: 500, height: 35, x:100, y: 90, fontSize: "20", font: "微软雅黑"},
])
//以上代码可以用对应的开发工具生成,当然也可以手动修改

function getTime(){
    http.get("https://f.m.suning.com/api/ct.do", null, function (r) {
        var time = JSON.parse(r)
        var timeStr = Date.new(time.currentTime).format("yyyy-MM-dd HH:mm:ss")
        Win.timeInput.setText("当前时间:" + timeStr)
    })
}

var timerTime = 0

Win.submit.onClick = function(){
    if(Win.submit.getText() == "获取最新时间"){
        timerTime = Thread.setInterval(function(){
            getTime()
        }, 1000)
        Win.submit.setText("停止获取时间")
    } else {
        Thread.clear(timerTime)
        Win.submit.setText("获取最新时间")
    }
}

Win.loop()

仅需自己编写短短不足20行代码即可实现一个实时获取互联网时间的程序。如果使用开发工具可将此脚本作为资源嵌入解释器成为独立exe,更加方便。

解释器:BxScript: 本项目主要处于学习目的而开发,灵感来源主要是otto开源项目,语法主要是JavaScript语法,但是有部分特色(见下方),JavaScript的prototype等没有支持;未来支持桌面应用开发

开发套件:BxScriptIDE: 为BxScript开发的一个开源ide

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言