V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ansurfen
V2EX  ›  分享创造

自制编程语言 Hulo —— 模块系统跳票,但 Batch 和 Powershell 对接、解释器初步

  •  
  •   ansurfen · 39 天前 · 1230 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

    又到了每周的 Hulo 更新时刻!

    这次 v0.3.0 的更新,让 Hulo 从一个"简单的转译器"进化成了"具有编译期求值能力的现代编程语言"。

    听起来很酷对吧?让我来告诉你这次到底更新了什么。

    🚀 本周重磅更新

    1. 全平台转译器正式完成!

    是的,你没看错! Hulo 现在支持四大平台的脚本转译了:

    • VBScript (.vbs) - Windows 经典脚本
    • Bash (.sh) - Linux/macOS Shell 脚本
    • Batch (.bat/.cmd) - Windows 批处理脚本
    • PowerShell (.ps1) - Windows 现代脚本

    这意味着你可以用同一套现代语法,生成所有主流平台的脚本!

    目前支持基础语句转换,更多高级特性正在开发中

    2. 编译期求值系统 - comptime 来了!

    这是本次更新的最大亮点! Hulo 现在支持编译期求值,可以在编译时执行代码并基于结果生成不同的 AST 。

    来看几个实际例子:

    编译期计算

    let a = comptime {
        let sum = 0
        loop $i := 0; $i < 10; $i++ {
            echo $i;
            $sum += $i;
        }
        return $sum
    }
    
    // 编译期计算的结果:a = 45
    echo $a
    

    条件编译

    comptime when $TARGET == "powershell" {
        Write-Host "Hello, PowerShell"
    } else when $TARGET == "batch" {
        echo "Hello, Batch"
    } else when $TARGET == "bash" {
        echo "Hello, Bash"
    } else when $TARGET == "vbs" {
        MsgBox "Hello, VBScript"
    }
    

    生成的 PowerShell 代码:

    Write-Host "Hello, PowerShell"
    

    生成的 Batch 代码:

    echo "Hello, Batch"
    

    生成的 Bash 代码:

    echo "Hello, Bash"
    

    生成的 VBScript 代码:

    MsgBox "Hello, VBScript"
    

    🔧 技术架构升级

    编译期求值引擎

    新的 comptime 系统提供了:

    • 运行时求值 - 在编译期执行代码
    • AST 转换 - 基于计算结果修改语法树
    • 动态代码生成 - 根据条件生成不同代码

    🚧 下一步计划

    1. 模块系统 - 支持第三方库导入(跳票到 v0.4.0 )
    2. 命令体操 - 更智能的跨平台命令适配
    3. 包发布系统 - 让社区能分享和复用代码
    4. 语言服务器 - 更好的 IDE 支持

    💭 写在最后

    这次更新让 Hulo 从一个简单的转译器,变成了一个具有编译期求值能力的现代编程语言。comptime 系统的加入,为 Hulo 带来了无限的可能性。

    虽然模块系统跳票了,但技术栈更加完整和强大。相信在 v0.4.0 中,模块系统会以更优雅的方式呈现给大家。

    项目地址: https://github.com/hulo-lang/hulo

    如果你觉得这个项目有意思,欢迎在 GitHub 提 issue 或参与讨论!给个 Star 支持一下,让更多人看到这个项目。

    你觉得这种"编译期求值 + 多平台转译"的方式怎么样?有什么建议或想法吗?

    2 条回复    2025-08-09 16:33:35 +08:00
    thinkwei2012
        1
    thinkwei2012  
       26 天前
    很有意思的项目,再开新脚本可以试试。已 star

    如果能将现有的 bat 脚本转译为 hulo 就更有趣了
    ansurfen
        2
    ansurfen  
    OP
       25 天前
    @thinkwei2012 感谢支持。有 lifter (提升器)的开发计划,将 bash, bat-> hulo 然后在用 hulo 去转换,不过这是后话了 目前的目标还是赶紧实现 hulo -> bash / batch 这一侧的为主,等功能都实现差不多了 再实现提升器
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3931 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:07 · PVG 08:07 · LAX 17:07 · JFK 20:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.