V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DollarKiller
V2EX  ›  程序员

想学习下编译原理,请问 有没有 golang 写一门脚本语言的课程?

  •  
  •   DollarKiller · 2021-11-17 18:43:16 +08:00 · 2562 次点击
    这是一个创建于 862 天前的主题,其中的信息可能已经有所发展或是发生改变。

    学习下编译原理,请问 有没有 golang 写一门脚本语言的课程?

    类似框架也行,公司一个项目要开发一门很简单的语言给非技术人员使用

    17 条回复    2021-11-18 23:16:19 +08:00
    lwch
        1
    lwch  
       2021-11-17 18:46:24 +08:00
    hidemyself
        2
    hidemyself  
       2021-11-17 18:48:35 +08:00
    antlr?
    sadfQED2
        3
    sadfQED2  
       2021-11-17 18:50:18 +08:00 via Android
    需求是什么,你就算开发出来一门编程语言,非技术人员也照样不会用吧。

    如果要让他们在你系统里面写逻辑的话在你项目里面嵌入 lua 或者 js 即可
    DollarKiller
        4
    DollarKiller  
    OP
       2021-11-17 18:54:48 +08:00
    @sadfQED2 需求 就是 对不同类型的 JSON 写 Validate 规则
    kassadin
        5
    kassadin  
       2021-11-17 19:02:57 +08:00
    Writing An Interpreter In Go
    sadfQED2
        6
    sadfQED2  
       2021-11-17 19:06:02 +08:00 via Android   ❤️ 8
    @DollarKiller 我的个龟龟,这么个需求你就要造一个编程语言,下次遇到格式化 json 你得造个 cpu 了
    Buges
        7
    Buges  
       2021-11-17 19:17:52 +08:00 via Android
    go 类型系统残废,写 parser 太费劲。
    并且你这需求真的有必要弄个 dsl 出来?写个前端让非技术人员点几下生成 json schema 就行了。
    YUX
        8
    YUX  
       2021-11-17 19:43:44 +08:00   ❤️ 2
    《自己动手实现 Lua:虚拟机、编译器和标准库》

    https://item.jd.com/12458778.html
    ruanimal
        9
    ruanimal  
       2021-11-17 22:44:19 +08:00   ❤️ 1
    @DollarKiller jsonschema ?
    feilong
        10
    feilong  
       2021-11-18 08:30:43 +08:00 via Android
    如果真要走编译原理路线那就是利用 antlr 的 golang 后端了,但是为啥是 golang ?我觉得你可能需要的是这种东西 -> https://robotframework.org/
    FungKao
        11
    FungKao  
       2021-11-18 10:31:02 +08:00
    @kassadin 我翻译过这本书,不过被作者私信了
    wangyzj
        12
    wangyzj  
       2021-11-18 13:21:51 +08:00
    @YUX #8 我也想推荐这本来着
    macscsbf
        13
    macscsbf  
       2021-11-18 16:44:42 +08:00
    你可以看看 flux
    jones2000
        14
    jones2000  
       2021-11-18 17:47:06 +08:00
    看编译原理的书就可以呀, 计算机专业大学都开这门课的。 词法分析-》语法分析-》生成抽象语法树( AST )就可以了呀。 根据 AST 就可以转成其语言的代码了。不难,花时间看书就可以。
    77yf77yf77yf
        15
    77yf77yf77yf  
       2021-11-18 17:50:28 +08:00
    需求上来看完全没必要这么干
    要推荐而且是 golang 的话可以看看 webassembly 原理与核心技术
    Donahue
        16
    Donahue  
       2021-11-18 18:12:16 +08:00
    推荐 Nand2Tetris 项目, 编译原理的书先简单看一遍, 然后做这个项目的 part 2: jack-compiler, 然后再看书就很明朗了
    koebehshian
        17
    koebehshian  
       2021-11-18 23:16:19 +08:00
    Lua 开源的,可以先看 1.1 版本,比较简单
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3279 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 14:12 · PVG 22:12 · LAX 07:12 · JFK 10:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.