自制编程语言 Hulo 模块系统跳票,但 Batch 和 Powershell 对接、解释器初步 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ansurfen
V2EX    分享创造

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

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

    又到了每周的 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  
       63 天前
    很有意思的项目,再开新脚本可以试试。已 star

    如果能将现有的 bat 脚本转译为 hulo 就更有趣了
    ansurfen
        2
    ansurfen  
    OP
       62 天前
    @thinkwei2012 感谢支持。有 lifter (提升器)的开发计划,将 bash, bat-> hulo 然后在用 hulo 去转换,不过这是后话了 目前的目标还是赶紧实现 hulo -> bash / batch 这一侧的为主,等功能都实现差不多了 再实现提升器
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1151 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 17:45 PVG 01:45 LAX 10:45 JFK 13:45
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86